aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc++
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-02-23 08:50:19 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-02-23 09:58:23 -0800
commit42bc87c0979f7a9f3084366fd466d382cf86ec17 (patch)
tree3e233e2126465227bbaa09fa3a6166f43585c944 /include/grpc++
parent759026cbf0419dae4edddd9e75fa338e1028a3d8 (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.h11
-rw-r--r--include/grpc++/server_builder.h16
-rw-r--r--include/grpc++/server_credentials.h29
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