diff options
author | David Garcia Quintas <dgq@google.com> | 2015-08-24 12:05:13 -0700 |
---|---|---|
committer | David Garcia Quintas <dgq@google.com> | 2015-08-24 12:08:38 -0700 |
commit | c43648f250dd6cb0f086e2366e468372a6de26ae (patch) | |
tree | 0353cb50e39de0338553b97e5fcb1276f48cf4a5 /src/cpp/server/server_builder.cc | |
parent | beac88ca56f4710e86668f2cbbd80e02e0607f9c (diff) | |
parent | 04715888e60c6195a2c1d9d6b31f7a82f0d717e2 (diff) |
Merge branch 'master' of github.com:grpc/grpc into compression-accept-encoding
Diffstat (limited to 'src/cpp/server/server_builder.cc')
-rw-r--r-- | src/cpp/server/server_builder.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 425b052128..57a734c334 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -38,6 +38,7 @@ #include <grpc++/impl/service_type.h> #include <grpc++/server.h> #include <grpc++/thread_pool_interface.h> +#include <grpc++/fixed_size_thread_pool.h> namespace grpc { @@ -63,9 +64,10 @@ ServerBuilder& ServerBuilder::RegisterAsyncService( return *this; } -ServerBuilder& ServerBuilder::RegisterService( - const grpc::string& addr, SynchronousService* service) { - services_.emplace_back(new NamedService<RpcService>(addr, service->service())); +ServerBuilder& ServerBuilder::RegisterService(const grpc::string& addr, + SynchronousService* service) { + services_.emplace_back( + new NamedService<RpcService>(addr, service->service())); return *this; } @@ -123,11 +125,18 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { thread_pool_ = CreateDefaultThreadPool(); thread_pool_owned = true; } + // Async services only, create a thread pool to handle requests to unknown + // services. + if (!thread_pool_ && !generic_service_ && !async_services_.empty()) { + thread_pool_ = new FixedSizeThreadPool(1); + thread_pool_owned = true; + } std::unique_ptr<Server> server(new Server(thread_pool_, thread_pool_owned, max_message_size_, compression_options_)); for (auto cq = cqs_.begin(); cq != cqs_.end(); ++cq) { - grpc_server_register_completion_queue(server->server_, (*cq)->cq()); + grpc_server_register_completion_queue(server->server_, (*cq)->cq(), + nullptr); } for (auto service = services_.begin(); service != services_.end(); service++) { @@ -135,8 +144,8 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { return nullptr; } } - for (auto service = async_services_.begin(); - service != async_services_.end(); service++) { + for (auto service = async_services_.begin(); service != async_services_.end(); + service++) { if (!server->RegisterAsyncService((*service)->host.get(), (*service)->service)) { return nullptr; |