From 7c72adcdc76f07b16d6e5ce461d8bdfff6ca3bec Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 9 Feb 2015 14:07:26 -0800 Subject: [PATCH] Make server.cc compile again --- src/cpp/server/server.cc | 40 ++++++++++++++++++++---------------- src/cpp/server/thread_pool.h | 4 ++-- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index ac1b9ddc505..4965f187087 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -87,6 +87,7 @@ bool Server::RegisterService(RpcService *service) { } method_map_.insert(std::make_pair(method->name(), method)); } + return true; } int Server::AddPort(const grpc::string &addr) { @@ -104,7 +105,9 @@ bool Server::Start() { grpc_server_start(server_); // Start processing rpcs. - ScheduleCallback(); + if (thread_pool_) { + ScheduleCallback(); + } return true; } @@ -132,8 +135,8 @@ void Server::Shutdown() { // Shutdown the completion queue. cq_.Shutdown(); void *tag = nullptr; - CompletionQueue::CompletionType t = cq_.Next(&tag); - GPR_ASSERT(t == CompletionQueue::QUEUE_CLOSED); + bool ok = false; + GPR_ASSERT(false == cq_.Next(&tag, &ok)); } void Server::ScheduleCallback() { @@ -148,22 +151,23 @@ void Server::RunRpc() { // Wait for one more incoming rpc. void *tag = nullptr; AllowOneRpc(); - CompletionQueue::CompletionType t = cq_.Next(&tag); - GPR_ASSERT(t == CompletionQueue::SERVER_RPC_NEW); - - AsyncServerContext *server_context = static_cast(tag); - // server_context could be nullptr during server shutdown. - if (server_context != nullptr) { - // Schedule a new callback to handle more rpcs. - ScheduleCallback(); - - RpcServiceMethod *method = nullptr; - auto iter = method_map_.find(server_context->method()); - if (iter != method_map_.end()) { - method = iter->second; + bool ok = false; + GPR_ASSERT(cq_.Next(&tag, &ok)); + if (ok) { + AsyncServerContext *server_context = static_cast(tag); + // server_context could be nullptr during server shutdown. + if (server_context != nullptr) { + // Schedule a new callback to handle more rpcs. + ScheduleCallback(); + + RpcServiceMethod *method = nullptr; + auto iter = method_map_.find(server_context->method()); + if (iter != method_map_.end()) { + method = iter->second; + } + ServerRpcHandler rpc_handler(server_context, method); + rpc_handler.StartRpc(); } - ServerRpcHandler rpc_handler(server_context, method); - rpc_handler.StartRpc(); } { diff --git a/src/cpp/server/thread_pool.h b/src/cpp/server/thread_pool.h index c53f7a7517a..8a28c877040 100644 --- a/src/cpp/server/thread_pool.h +++ b/src/cpp/server/thread_pool.h @@ -44,12 +44,12 @@ namespace grpc { -class ThreadPool : public ThreadPoolInterface { +class ThreadPool final : public ThreadPoolInterface { public: explicit ThreadPool(int num_threads); ~ThreadPool(); - void ScheduleCallback(const std::function &callback) final; + void ScheduleCallback(const std::function &callback) override; private: std::mutex mu_;