diff options
author | Lukacs Berki <lberki@google.com> | 2016-04-20 09:01:52 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-04-20 11:18:11 +0000 |
commit | 00cfb7df61b1f3d9fac8ee29d92b315cbfe6d28f (patch) | |
tree | 22b7b1e4b6c42859fcdd7d04f4875dda176f7461 | |
parent | aa3dbd3bb540da2458308e64ff1538998030ff43 (diff) |
Update the BlazeServer classes to conform to the Google style guide.
--
MOS_MIGRATED_REVID=120315714
-rw-r--r-- | src/main/cpp/blaze.cc | 169 |
1 files changed, 85 insertions, 84 deletions
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc index 85a9aa1483..efac21ad5a 100644 --- a/src/main/cpp/blaze.cc +++ b/src/main/cpp/blaze.cc @@ -110,9 +110,6 @@ class BlazeServer { }; class AfUnixBlazeServer : public BlazeServer { - private: - int server_socket; - public: AfUnixBlazeServer(); virtual ~AfUnixBlazeServer() {} @@ -121,8 +118,38 @@ class AfUnixBlazeServer : public BlazeServer { void Disconnect() override; void Communicate() override; void Cancel() override; + + private: + int server_socket_; }; +class GrpcBlazeServer : public BlazeServer { + public: + GrpcBlazeServer(); + virtual ~GrpcBlazeServer() {} + + bool Connect() override; + void Disconnect() override; + void Communicate() override; + void Cancel() override; + + private: + enum CancelThreadAction { NOTHING, JOIN, CANCEL }; + + std::unique_ptr<command_server::CommandServer::Stub> client_; + std::string request_cookie_; + std::string response_cookie_; + std::string command_id_; + + std::condition_variable cancel_thread_signal_; + // protects command_id_ and cancel_thread_action_ + std::mutex cancel_thread_mutex_; + CancelThreadAction cancel_thread_action_; + + void CancelThread(); +}; + + //////////////////////////////////////////////////////////////////////// // Global Variables static GlobalVariables *globals; @@ -558,32 +585,6 @@ static int StartServer() { return -1; } -class GrpcBlazeServer : public BlazeServer { - private: - enum CancelThreadAction { NOTHING, JOIN, CANCEL }; - - std::unique_ptr<command_server::CommandServer::Stub> client; - - std::string request_cookie; - std::string response_cookie; - std::string command_id; - - std::condition_variable cancel_thread_signal; - // protects command_id and cancel_thread_action - std::mutex cancel_thread_mutex; - CancelThreadAction cancel_thread_action; - void CancelThread(); - - public: - GrpcBlazeServer(); - virtual ~GrpcBlazeServer() {} - - bool Connect() override; - void Disconnect() override; - void Communicate() override; - void Cancel() override; -}; - static bool KillRunningServerIfAny(BlazeServer *server); // Replace this process with blaze in standalone/batch mode. @@ -634,18 +635,18 @@ static void StartStandalone(BlazeServer* server) { } AfUnixBlazeServer::AfUnixBlazeServer() { - server_socket = -1; + server_socket_ = -1; } bool AfUnixBlazeServer::Connect() { - if (server_socket == -1) { - server_socket = socket(PF_UNIX, SOCK_STREAM, 0); - if (server_socket == -1) { + if (server_socket_ == -1) { + server_socket_ = socket(PF_UNIX, SOCK_STREAM, 0); + if (server_socket_ == -1) { pdie(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR, "can't create AF_UNIX socket"); } - if (fcntl(server_socket, F_SETFD, FD_CLOEXEC) == -1) { + if (fcntl(server_socket_, F_SETFD, FD_CLOEXEC) == -1) { pdie(blaze_exit_code::LOCAL_ENVIRONMENTAL_ERROR, "fcntl(F_SETFD, FD_CLOEXEC) failed"); } @@ -661,7 +662,7 @@ bool AfUnixBlazeServer::Connect() { addr.sun_path[sizeof addr.sun_path - 1] = '\0'; free(resolved_path); sockaddr *paddr = reinterpret_cast<sockaddr *>(&addr); - int result = connect(server_socket, paddr, sizeof addr); + int result = connect(server_socket_, paddr, sizeof addr); return result == 0; } else if (errno == ENOENT) { // No socket means no server to connect to errno = ECONNREFUSED; @@ -674,11 +675,11 @@ bool AfUnixBlazeServer::Connect() { } void AfUnixBlazeServer::Disconnect() { - close(server_socket); - server_socket = -1; + close(server_socket_); + server_socket_ = -1; } -static ATTRIBUTE_NORETURN void server_eof() { +static ATTRIBUTE_NORETURN void ServerEof() { // e.g. external SIGKILL of server, misplaced System.exit() in the server, // or a JVM crash. Print out the jvm.out file in case there's something // useful. @@ -690,15 +691,15 @@ static ATTRIBUTE_NORETURN void server_eof() { } // Reads a single char from the specified stream. -static unsigned char read_server_char(int fd) { +static unsigned char ReadServerChar(int fd) { unsigned char result; if (read(fd, &result, 1) != 1) { - server_eof(); + ServerEof(); } return result; } -static unsigned int read_server_int(int fd) { +static unsigned int ReadServerInt(int fd) { unsigned char buffer[4]; unsigned char *p = buffer; int remaining = 4; @@ -706,7 +707,7 @@ static unsigned int read_server_int(int fd) { while (remaining > 0) { int bytes_read = read(fd, p, remaining); if (bytes_read <= 0) { - server_eof(); + ServerEof(); } remaining -= bytes_read; @@ -719,12 +720,12 @@ static unsigned int read_server_int(int fd) { static char server_output_buffer[8192]; static void forward_server_output(int socket, int output) { - unsigned int remaining = read_server_int(socket); + unsigned int remaining = ReadServerInt(socket); while (remaining > 0) { int bytes = remaining > 8192 ? 8192 : remaining; bytes = read(socket, server_output_buffer, bytes); if (bytes <= 0) { - server_eof(); + ServerEof(); } remaining -= bytes; @@ -742,11 +743,11 @@ void AfUnixBlazeServer::Communicate() { request_size[1] = (request.size() >> 16) & 0xff; request_size[2] = (request.size() >> 8) & 0xff; request_size[3] = (request.size()) & 0xff; - if (write(server_socket, request_size, 4) != 4) { + if (write(server_socket_, request_size, 4) != 4) { pdie(blaze_exit_code::INTERNAL_ERROR, "write() to server failed"); } - if (write(server_socket, request.data(), request.size()) != request.size()) { + if (write(server_socket_, request.data(), request.size()) != request.size()) { pdie(blaze_exit_code::INTERNAL_ERROR, "write() to server failed"); } @@ -757,11 +758,11 @@ void AfUnixBlazeServer::Communicate() { while (true) { fd_set fdset; FD_ZERO(&fdset); - FD_SET(server_socket, &fdset); + FD_SET(server_socket_, &fdset); struct timeval timeout; timeout.tv_sec = 3; timeout.tv_usec = 0; - int result = select(server_socket + 1, &fdset, NULL, &fdset, &timeout); + int result = select(server_socket_ + 1, &fdset, NULL, &fdset, &timeout); if (result > 0) { // Data is ready on socket. Go ahead and read it. break; @@ -787,16 +788,16 @@ void AfUnixBlazeServer::Communicate() { const int TAG_CONTROL = 3; for (;;) { // Read the tag - char tag = read_server_char(server_socket); + char tag = ReadServerChar(server_socket_); switch (tag) { // stdout case TAG_STDOUT: - forward_server_output(server_socket, 1); + forward_server_output(server_socket_, 1); break; // stderr case TAG_STDERR: - forward_server_output(server_socket, 2); + forward_server_output(server_socket_, 2); break; // Control stream. Currently only used for reporting the exit code. @@ -808,18 +809,18 @@ void AfUnixBlazeServer::Communicate() { raise(globals->received_signal); exit(1); // (in case raise didn't kill us for some reason) } else { - unsigned int length = read_server_int(server_socket); + unsigned int length = ReadServerInt(server_socket_); if (length != 4) { - server_eof(); + ServerEof(); } - unsigned int exit_code = read_server_int(server_socket); + unsigned int exit_code = ReadServerInt(server_socket_); exit(exit_code); } break; // Control never gets here, only for code beauty default: fprintf(stderr, "bad tag %d\n", tag); - server_eof(); + ServerEof(); break; // Control never gets here, only for code beauty } } @@ -1844,11 +1845,11 @@ bool GrpcBlazeServer::Connect() { return false; } - if (!ReadFile(server_dir + "/request_cookie", &request_cookie)) { + if (!ReadFile(server_dir + "/request_cookie_", &request_cookie_)) { return false; } - if (!ReadFile(server_dir + "/response_cookie", &response_cookie)) { + if (!ReadFile(server_dir + "/response_cookie_", &response_cookie_)) { return false; } @@ -1863,14 +1864,14 @@ bool GrpcBlazeServer::Connect() { command_server::PingRequest request; command_server::PingResponse response; - request.set_cookie(request_cookie); - grpc::Status status = client->Ping(&context, request, &response); + request.set_cookie(request_cookie_); + grpc::Status status = client_->Ping(&context, request, &response); if (!status.ok()) { return false; } - this->client = std::move(client); + this->client_ = std::move(client); return true; } @@ -1897,29 +1898,29 @@ bool GrpcBlazeServer::Connect() { // to the server) void GrpcBlazeServer::CancelThread() { bool running = true; - std::unique_lock<std::mutex> lock(cancel_thread_mutex); + std::unique_lock<std::mutex> lock(cancel_thread_mutex_); while (running) { - cancel_thread_signal.wait(lock); - switch (cancel_thread_action) { + cancel_thread_signal_.wait(lock); + switch (cancel_thread_action_) { case JOIN: running = false; - cancel_thread_action = NOTHING; + cancel_thread_action_ = NOTHING; break; case CANCEL: // If we don't know the command ID yet, we'll be woken up when it // becomes known. - if (command_id.size() > 0) { + if (command_id_.size() > 0) { command_server::CancelRequest request; - request.set_cookie(request_cookie); - request.set_command_id(command_id); + request.set_cookie(request_cookie_); + request.set_command_id(command_id_); grpc::ClientContext context; context.set_deadline(std::chrono::system_clock::now() + std::chrono::milliseconds(100)); command_server::CancelResponse response; // There isn't a lot we can do if this request fails - client->Cancel(&context, request, &response); - cancel_thread_action = NOTHING; + client_->Cancel(&context, request, &response); + cancel_thread_action_ = NOTHING; } break; @@ -1940,7 +1941,7 @@ void GrpcBlazeServer::Communicate() { globals->option_processor.GetCommandArguments(&arg_vector); command_server::RunRequest request; - request.set_cookie(request_cookie); + request.set_cookie(request_cookie_); request.set_block_for_lock(globals->options.block_for_lock); request.set_client_description("pid=" + ToString(getpid())); for (const string& arg : arg_vector) { @@ -1950,9 +1951,9 @@ void GrpcBlazeServer::Communicate() { grpc::ClientContext context; command_server::RunResponse response; std::unique_ptr<grpc::ClientReader<command_server::RunResponse>> reader( - client->Run(&context, request)); + client_->Run(&context, request)); - cancel_thread_action = NOTHING; + cancel_thread_action_ = NOTHING; std::thread cancel_thread(&GrpcBlazeServer::CancelThread, this); bool command_id_set = false; while (reader->Read(&response)) { @@ -1967,19 +1968,19 @@ void GrpcBlazeServer::Communicate() { } if (!command_id_set && response.command_id().size() > 0) { - std::unique_lock<std::mutex> lock(cancel_thread_mutex); - command_id = response.command_id(); + std::unique_lock<std::mutex> lock(cancel_thread_mutex_); + command_id_ = response.command_id(); command_id_set = true; // Wake up the cancellation thread in case there is a pending cancellation - cancel_thread_signal.notify_one(); + cancel_thread_signal_.notify_one(); } } { // Wake up the cancellation thread so that it can finish - std::unique_lock<std::mutex> lock(cancel_thread_mutex); - cancel_thread_action = JOIN; - cancel_thread_signal.notify_one(); + std::unique_lock<std::mutex> lock(cancel_thread_mutex_); + cancel_thread_action_ = JOIN; + cancel_thread_signal_.notify_one(); } cancel_thread.join(); @@ -1992,16 +1993,16 @@ void GrpcBlazeServer::Communicate() { } void GrpcBlazeServer::Disconnect() { - client.reset(); - request_cookie = ""; - response_cookie = ""; + client_.reset(); + request_cookie_ = ""; + response_cookie_ = ""; } void GrpcBlazeServer::Cancel() { - std::unique_lock<std::mutex> lock(cancel_thread_mutex); + std::unique_lock<std::mutex> lock(cancel_thread_mutex_); // Wake up the cancellation thread and tell it to issue its RPC - cancel_thread_action = CANCEL; - cancel_thread_signal.notify_one(); + cancel_thread_action_ = CANCEL; + cancel_thread_signal_.notify_one(); } } // namespace blaze |