diff options
author | Yang Gao <yangg@google.com> | 2015-03-10 13:17:39 -0700 |
---|---|---|
committer | Yang Gao <yangg@google.com> | 2015-03-10 13:17:39 -0700 |
commit | fccea1f70e8b58f02388678a92d100c3192cb5ec (patch) | |
tree | 88926031cdd23c36acb5056e280552fc37f7bbd1 /src/cpp/server/server_builder.cc | |
parent | 086cd1108c2a4bbf247aaefab9959996aec0d33b (diff) | |
parent | e0e8edfeda1f7061915bd04fd5e2f28a31064a5c (diff) |
merge with upstream and resolve conflict
Diffstat (limited to 'src/cpp/server/server_builder.cc')
-rw-r--r-- | src/cpp/server/server_builder.cc | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index b7e5c84ef6..e3b9cdfd7f 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -62,14 +62,10 @@ void ServerBuilder::RegisterAnonymousService(AnonymousService* service) { anonymous_service_ = service; } -void ServerBuilder::AddPort(const grpc::string& addr) { - ports_.push_back(addr); -} - -void ServerBuilder::SetCredentials( - const std::shared_ptr<ServerCredentials>& creds) { - GPR_ASSERT(!creds_); - creds_ = creds; +void ServerBuilder::AddPort(const grpc::string& addr, + std::shared_ptr<ServerCredentials> creds, + int* selected_port) { + ports_.push_back(Port{addr, creds, selected_port}); } void ServerBuilder::SetThreadPool(ThreadPoolInterface* thread_pool) { @@ -82,14 +78,13 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { gpr_log(GPR_ERROR, "Mixing async and sync services is unsupported for now"); return nullptr; } - if (!thread_pool_ && services_.size()) { + if (!thread_pool_ && !services_.empty()) { int cores = gpr_cpu_num_cores(); if (!cores) cores = 4; thread_pool_ = new ThreadPool(cores); thread_pool_owned = true; } - std::unique_ptr<Server> server( - new Server(thread_pool_, thread_pool_owned, creds_.get())); + std::unique_ptr<Server> server(new Server(thread_pool_, thread_pool_owned)); for (auto* service : services_) { if (!server->RegisterService(service)) { return nullptr; @@ -104,8 +99,10 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { server->RegisterAnonymousService(anonymous_service_); } for (auto& port : ports_) { - if (!server->AddPort(port)) { - return nullptr; + int r = server->AddPort(port.addr, port.creds.get()); + if (!r) return nullptr; + if (port.selected_port != nullptr) { + *port.selected_port = r; } } if (!server->Start()) { |