|
|
|
@ -142,7 +142,7 @@ SocketServer::SocketServer(const std::string &addr, int port, int rdmaCpu)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// trigger to initialize RDMA lib
|
|
|
|
|
PCHECK(RdmaClientDaemons::get()) << "initilizate RDMA failed\n";
|
|
|
|
|
CHECK(RdmaClientDaemons::get()) << "initilizate RDMA failed\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SocketServer::~SocketServer() {
|
|
|
|
@ -168,7 +168,7 @@ void SocketServer::tcpServer() {
|
|
|
|
|
|
|
|
|
|
/// First call to socket() function
|
|
|
|
|
socket_ = socket(AF_INET, SOCK_STREAM, 0);
|
|
|
|
|
PCHECK(socket_ >= 0) << "ERROR opening socket";
|
|
|
|
|
CHECK(socket_ >= 0) << "ERROR opening socket";
|
|
|
|
|
|
|
|
|
|
/// Initialize socket structure
|
|
|
|
|
bzero((char *)&serv_addr, sizeof(serv_addr));
|
|
|
|
@ -176,7 +176,7 @@ void SocketServer::tcpServer() {
|
|
|
|
|
serv_addr.sin_port = htons(port_);
|
|
|
|
|
if (!addr_.empty()) {
|
|
|
|
|
server = gethostbyname(addr_.c_str());
|
|
|
|
|
PCHECK(server) << "ERROR, no such host: " << addr_;
|
|
|
|
|
CHECK(server) << "ERROR, no such host: " << addr_;
|
|
|
|
|
bcopy((char *)server->h_addr,
|
|
|
|
|
(char *)&serv_addr.sin_addr.s_addr,
|
|
|
|
|
server->h_length);
|
|
|
|
@ -187,7 +187,7 @@ void SocketServer::tcpServer() {
|
|
|
|
|
setOption(socket_);
|
|
|
|
|
|
|
|
|
|
/// Now bind the host address using bind() call.
|
|
|
|
|
PCHECK(bind(socket_, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) >= 0)
|
|
|
|
|
CHECK(bind(socket_, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) >= 0)
|
|
|
|
|
<< "ERROR on binding " << addr_;
|
|
|
|
|
|
|
|
|
|
/// Now start listening for the clients, here process will
|
|
|
|
@ -201,7 +201,7 @@ void SocketServer::tcpServer() {
|
|
|
|
|
if (stopping_) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
PCHECK(newsockfd >= 0) << "ERROR on accept";
|
|
|
|
|
CHECK(newsockfd >= 0) << "ERROR on accept";
|
|
|
|
|
constexpr int kPeerNameLen = 128;
|
|
|
|
|
char peerName[kPeerNameLen];
|
|
|
|
|
CHECK(inet_ntop(AF_INET, &cli_addr.sin_addr, peerName, kPeerNameLen));
|
|
|
|
@ -227,14 +227,14 @@ void SocketServer::rdmaServer() {
|
|
|
|
|
|
|
|
|
|
/// First call to socket() function
|
|
|
|
|
rdmaSocket_ = rdma::ssocket(rdmaCpu_);
|
|
|
|
|
PCHECK(rdmaSocket_) << "ERROR opening RDMA socket";
|
|
|
|
|
CHECK(rdmaSocket_) << "ERROR opening RDMA socket";
|
|
|
|
|
|
|
|
|
|
PCHECK(rdma::bind(rdmaSocket_, rdmaUri_.c_str()) == 0)
|
|
|
|
|
CHECK(rdma::bind(rdmaSocket_, rdmaUri_.c_str()) == 0)
|
|
|
|
|
<< "ERROR bind RDMA socket";
|
|
|
|
|
|
|
|
|
|
/// Now start listening for the clients, here process will
|
|
|
|
|
/// go in sleep mode and will wait for the incoming connection
|
|
|
|
|
PCHECK(rdma::listen(rdmaSocket_) == 0) << "ERROR listen RDMA socket";
|
|
|
|
|
CHECK(rdma::listen(rdmaSocket_) == 0) << "ERROR listen RDMA socket";
|
|
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
|
/// Accept actual connection from the client
|
|
|
|
@ -242,7 +242,7 @@ void SocketServer::rdmaServer() {
|
|
|
|
|
if (stopping_) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
PCHECK(newsock) << "ERROR on accept";
|
|
|
|
|
CHECK(newsock) << "ERROR on accept";
|
|
|
|
|
|
|
|
|
|
constexpr int kPeerNameLen = 128;
|
|
|
|
|
char peerName[kPeerNameLen];
|
|
|
|
@ -290,7 +290,7 @@ RdmaClientDaemons::RdmaClientDaemons() {
|
|
|
|
|
onlineCpus_ = rdma::numCpus();
|
|
|
|
|
for (auto i = 0; i < onlineCpus_; i++) {
|
|
|
|
|
socket = rdma::csocket(i);
|
|
|
|
|
PCHECK(socket) << "ERROR open client socket daemon";
|
|
|
|
|
CHECK(socket) << "ERROR open client socket daemon";
|
|
|
|
|
|
|
|
|
|
rdmaClientSocket_.push_back(socket);
|
|
|
|
|
}
|
|
|
|
@ -355,7 +355,7 @@ void SocketClient::TcpClient(const std::string &serverAddr, int serverPort) {
|
|
|
|
|
|
|
|
|
|
/// Create a socket point
|
|
|
|
|
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
|
|
|
|
PCHECK(sockfd >= 0) << "ERROR opening socket";
|
|
|
|
|
CHECK(sockfd >= 0) << "ERROR opening socket";
|
|
|
|
|
|
|
|
|
|
#if defined(__OSX__) || defined(__APPLE__)
|
|
|
|
|
server = getipnodebyname(serverAddr.c_str(), AF_INET, AI_DEFAULT, &errRet);
|
|
|
|
@ -396,8 +396,8 @@ void SocketClient::TcpClient(const std::string &serverAddr, int serverPort) {
|
|
|
|
|
}
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
|
|
|
} else {
|
|
|
|
|
PCHECK(errno != 0) << "ERROR connecting to " << serverAddr << ":"
|
|
|
|
|
<< serverPort << "errorno: " << errno;
|
|
|
|
|
CHECK(errno != 0) << "ERROR connecting to " << serverAddr << ":"
|
|
|
|
|
<< serverPort << "errorno: " << errno;
|
|
|
|
|
}
|
|
|
|
|
} while (errno == ECONNREFUSED);
|
|
|
|
|
|
|
|
|
@ -426,7 +426,7 @@ void SocketClient::RdmaClient(const std::string &serverAddr, int serverPort) {
|
|
|
|
|
|
|
|
|
|
/// connect to server with socket daemon
|
|
|
|
|
sock = rdma::connect(socketDaemon_, rdmaUri.c_str());
|
|
|
|
|
PCHECK(sock) << "ERROR connect to server" << rdmaUri;
|
|
|
|
|
CHECK(sock) << "ERROR connect to server" << rdmaUri;
|
|
|
|
|
|
|
|
|
|
std::vector<std::string> seg;
|
|
|
|
|
str::split(rdmaUri, '/', &seg);
|
|
|
|
|