aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yang Gao <yangg@google.com>2017-05-23 13:53:44 -0700
committerGravatar GitHub <noreply@github.com>2017-05-23 13:53:44 -0700
commit0a94f3c8ab55dfd12c14058d57f33121c8d6c411 (patch)
tree48f6ce149c3048cbf94f495c0eb4e9d48eb9a280
parent9aec2a548d77a1efbd5bd09b37b62a6d8a53bcf6 (diff)
parent725d82274385217b5f0345e834f7fae7e76fbd84 (diff)
Merge pull request #11158 from yang-g/async_default_service
Add api to server builder plugin to modify the builder
-rw-r--r--include/grpc++/impl/server_builder_plugin.h5
-rw-r--r--src/cpp/server/server_builder.cc4
2 files changed, 9 insertions, 0 deletions
diff --git a/include/grpc++/impl/server_builder_plugin.h b/include/grpc++/impl/server_builder_plugin.h
index 8f2bce54d7..d940f8cc7b 100644
--- a/include/grpc++/impl/server_builder_plugin.h
+++ b/include/grpc++/impl/server_builder_plugin.h
@@ -40,6 +40,7 @@
namespace grpc {
+class ServerBuilder;
class ServerInitializer;
class ChannelArguments;
@@ -51,6 +52,10 @@ class ServerBuilderPlugin {
virtual ~ServerBuilderPlugin() {}
virtual grpc::string name() = 0;
+ /// UpdateServerBuilder will be called at the beginning of
+ /// \a ServerBuilder::BuildAndStart().
+ virtual void UpdateServerBuilder(ServerBuilder* builder) {}
+
/// InitServer will be called in ServerBuilder::BuildAndStart(), after the
/// Server instance is created.
virtual void InitServer(ServerInitializer* si) = 0;
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 6dca6a6862..c849d2e5b4 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -180,6 +180,10 @@ ServerBuilder& ServerBuilder::AddListeningPort(
}
std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
+ for (auto plugin = plugins_.begin(); plugin != plugins_.end(); plugin++) {
+ (*plugin)->UpdateServerBuilder(this);
+ }
+
ChannelArguments args;
for (auto option = options_.begin(); option != options_.end(); ++option) {
(*option)->UpdateArguments(&args);