diff options
author | 2015-02-23 08:50:19 -0800 | |
---|---|---|
committer | 2015-02-23 09:58:23 -0800 | |
commit | 42bc87c0979f7a9f3084366fd466d382cf86ec17 (patch) | |
tree | 3e233e2126465227bbaa09fa3a6166f43585c944 /include/grpc++ | |
parent | 759026cbf0419dae4edddd9e75fa338e1028a3d8 (diff) |
Update C++ server with new core API
And reflects the C++ API in ServerBuilder.
Diffstat (limited to 'include/grpc++')
-rw-r--r-- | include/grpc++/server.h | 11 | ||||
-rw-r--r-- | include/grpc++/server_builder.h | 16 | ||||
-rw-r--r-- | include/grpc++/server_credentials.h | 29 |
3 files changed, 26 insertions, 30 deletions
diff --git a/include/grpc++/server.h b/include/grpc++/server.h index 26d18d1bbe..eeee6502ab 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -76,15 +76,14 @@ class Server final : private CallHook, class AsyncRequest; // ServerBuilder use only - Server(ThreadPoolInterface* thread_pool, bool thread_pool_owned, - ServerCredentials* creds); - Server(); + Server(ThreadPoolInterface* thread_pool, bool thread_pool_owned); + Server() = delete; // Register a service. This call does not take ownership of the service. // The service must exist for the lifetime of the Server instance. bool RegisterService(RpcService* service); bool RegisterAsyncService(AsynchronousService* service); // Add a listening port. Can be called multiple times. - int AddPort(const grpc::string& addr); + int AddPort(const grpc::string& addr, ServerCredentials* creds); // Start the server. bool Start(); @@ -114,13 +113,11 @@ class Server final : private CallHook, std::list<SyncRequest> sync_methods_; // Pointer to the c grpc server. - grpc_server* server_; + grpc_server* const server_; ThreadPoolInterface* thread_pool_; // Whether the thread pool is created and owned by the server. bool thread_pool_owned_; - // Whether the server is created with credentials. - bool secure_; }; } // namespace grpc diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h index 4545c413d2..578e102d6d 100644 --- a/include/grpc++/server_builder.h +++ b/include/grpc++/server_builder.h @@ -65,11 +65,9 @@ class ServerBuilder { void RegisterAsyncService(AsynchronousService* service); // Add a listening port. Can be called multiple times. - void AddPort(const grpc::string& addr); - - // Set a ServerCredentials. Can only be called once. - // TODO(yangg) move this to be part of AddPort - void SetCredentials(const std::shared_ptr<ServerCredentials>& creds); + void AddPort(const grpc::string& addr, + std::shared_ptr<ServerCredentials> creds, + int* selected_port = nullptr); // Set the thread pool used for running appliation rpc handlers. // Does not take ownership. @@ -79,9 +77,15 @@ class ServerBuilder { std::unique_ptr<Server> BuildAndStart(); private: + struct Port { + grpc::string addr; + std::shared_ptr<ServerCredentials> creds; + int* selected_port; + }; + std::vector<RpcService*> services_; std::vector<AsynchronousService*> async_services_; - std::vector<grpc::string> ports_; + std::vector<Port> ports_; std::shared_ptr<ServerCredentials> creds_; ThreadPoolInterface* thread_pool_ = nullptr; }; diff --git a/include/grpc++/server_credentials.h b/include/grpc++/server_credentials.h index 5c6787a077..fd4d71db9f 100644 --- a/include/grpc++/server_credentials.h +++ b/include/grpc++/server_credentials.h @@ -39,24 +39,21 @@ #include <grpc++/config.h> -struct grpc_server_credentials; +struct grpc_server; namespace grpc { +class Server; // grpc_server_credentials wrapper class. -class ServerCredentials final { +class ServerCredentials { public: - ~ServerCredentials(); + virtual ~ServerCredentials(); private: - explicit ServerCredentials(grpc_server_credentials* c_creds); + friend class ::grpc::Server; - grpc_server_credentials* GetRawCreds(); - - friend class ServerCredentialsFactory; - friend class Server; - - grpc_server_credentials* creds_; + virtual int AddPortToServer(const grpc::string& addr, + grpc_server* server) = 0; }; // Options to create ServerCredentials with SSL @@ -69,13 +66,11 @@ struct SslServerCredentialsOptions { std::vector<PemKeyCertPair> pem_key_cert_pairs; }; -// Factory for building different types of ServerCredentials -class ServerCredentialsFactory { - public: - // Builds SSL ServerCredentials given SSL specific options - static std::shared_ptr<ServerCredentials> SslCredentials( - const SslServerCredentialsOptions& options); -}; +// Builds SSL ServerCredentials given SSL specific options +std::shared_ptr<ServerCredentials> SslServerCredentials( + const SslServerCredentialsOptions& options); + +std::shared_ptr<ServerCredentials> InsecureServerCredentials(); } // namespace grpc |