diff --git a/include/grpc++/server.h b/include/grpc++/server.h index 3e544059747..489937712ec 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -88,6 +88,8 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen { virtual void PostSynchronousRequest(ServerContext* context) = 0; /// Called before server is started. virtual void PreServerStart(Server* server) {} + /// Called after a server port is added. + virtual void AddPort(Server* server, int port) {} }; /// Set the global callback object. Can only be called once. Does not take /// ownership of callbacks, and expects the pointed to object to be alive diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc index e874892e73c..ce173a1ee2d 100644 --- a/src/cpp/server/server_cc.cc +++ b/src/cpp/server/server_cc.cc @@ -489,7 +489,9 @@ void Server::RegisterAsyncGenericService(AsyncGenericService* service) { int Server::AddListeningPort(const grpc::string& addr, ServerCredentials* creds) { GPR_ASSERT(!started_); - return creds->AddPortToServer(addr, server_); + int port = creds->AddPortToServer(addr, server_); + global_callbacks_->AddPort(this, port); + return port; } bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {