xtreemfs/cpp/test/common/test_rpc_server_dir.h
2020-09-22 02:25:22 +02:00

73 lines
1.9 KiB
C++

/*
* Copyright (c) 2014-2014 by Michael Berlin, Zuse Institute Berlin
*
* Licensed under the BSD License, see LICENSE file for details.
*
*/
#ifndef CPP_TEST_COMMON_TEST_RPC_SERVER_DIR_CPP_
#define CPP_TEST_COMMON_TEST_RPC_SERVER_DIR_CPP_
#include "common/test_rpc_server.h"
#include <boost/thread/mutex.hpp>
#include <map>
#include <string>
namespace google {
namespace protobuf {
class Message;
} // namespace protobuf
} // namespace google
namespace xtreemfs {
namespace rpc {
class TestRPCServerDIR : public TestRPCServer<TestRPCServerDIR> {
public:
TestRPCServerDIR();
void RegisterVolume(const std::string& volume_name,
const std::string& mrc_uuid);
protected:
/** Mock-up version returns the given UUID (hostname:port) as address. */
virtual google::protobuf::Message* GetAddressMappingOperation(
const pbrpc::Auth& auth,
const pbrpc::UserCredentials& user_credentials,
const google::protobuf::Message& request,
const char* data,
uint32_t data_len,
boost::scoped_array<char>* response_data,
uint32_t* response_data_len);
private:
google::protobuf::Message* GetServiceByNameOperation(
const pbrpc::Auth& auth,
const pbrpc::UserCredentials& user_credentials,
const google::protobuf::Message& request,
const char* data,
uint32_t data_len,
boost::scoped_array<char>* response_data,
uint32_t* response_data_len);
google::protobuf::Message* GetServiceByUUIDOperation(
const pbrpc::Auth& auth,
const pbrpc::UserCredentials& user_credentials,
const google::protobuf::Message& request,
const char* data,
uint32_t data_len,
boost::scoped_array<char>* response_data,
uint32_t* response_data_len);
/** Guards access to known_volumes_. */
boost::mutex mutex_;
std::map<std::string, std::string> known_volumes_;
};
} // namespace rpc
} // namespace xtreemfs
#endif // CPP_TEST_COMMON_TEST_RPC_SERVER_DIR_CPP_