diff options
author | 2015-12-03 11:39:44 -0800 | |
---|---|---|
committer | 2015-12-03 11:39:44 -0800 | |
commit | 35c1d3c462757d1dcc1c75d07614fbc0b4b1d60c (patch) | |
tree | 72eb83f977984f4894809754518f6c3c2fc6a058 /src/cpp/server/server_builder.cc | |
parent | adb2e9f47192a47ed0755c01704633e07112ff26 (diff) | |
parent | 92f4a155d8e8bf3003181451acc52e24bba5bcbc (diff) |
Merge pull request #4207 from yang-g/server_builder_options
Server builder options
Diffstat (limited to 'src/cpp/server/server_builder.cc')
-rw-r--r-- | src/cpp/server/server_builder.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index b8094aa8f6..26c0724a30 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -84,6 +84,10 @@ void ServerBuilder::RegisterAsyncGenericService(AsyncGenericService* service) { generic_service_ = service; } +void ServerBuilder::SetOption(std::unique_ptr<ServerBuilderOption> option) { + options_.push_back(std::move(option)); +} + void ServerBuilder::AddListeningPort(const grpc::string& addr, std::shared_ptr<ServerCredentials> creds, int* selected_port) { @@ -101,9 +105,17 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { thread_pool_ = CreateDefaultThreadPool(); thread_pool_owned = true; } - std::unique_ptr<Server> server(new Server(thread_pool_, thread_pool_owned, - max_message_size_, - compression_options_)); + ChannelArguments args; + for (auto option = options_.begin(); option != options_.end(); ++option) { + (*option)->UpdateArguments(&args); + } + if (max_message_size_ > 0) { + args.SetInt(GRPC_ARG_MAX_MESSAGE_LENGTH, max_message_size_); + } + args.SetInt(GRPC_COMPRESSION_ALGORITHM_STATE_ARG, + compression_options_.enabled_algorithms_bitset); + std::unique_ptr<Server> server( + new Server(thread_pool_, thread_pool_owned, max_message_size_, args)); for (auto cq = cqs_.begin(); cq != cqs_.end(); ++cq) { grpc_server_register_completion_queue(server->server_, (*cq)->cq(), nullptr); |