Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: third_party/grpc/include/grpc++/server_builder.h

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 *
3 * Copyright 2015-2016, Google Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following disclaimer
14 * in the documentation and/or other materials provided with the
15 * distribution.
16 * * Neither the name of Google Inc. nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
33
34 #ifndef GRPCXX_SERVER_BUILDER_H
35 #define GRPCXX_SERVER_BUILDER_H
36
37 #include <memory>
38 #include <vector>
39
40 #include <grpc++/impl/server_builder_option.h>
41 #include <grpc++/support/config.h>
42 #include <grpc/compression.h>
43
44 namespace grpc {
45
46 class AsyncGenericService;
47 class CompletionQueue;
48 class RpcService;
49 class Server;
50 class ServerCompletionQueue;
51 class ServerCredentials;
52 class Service;
53
54 /// A builder class for the creation and startup of \a grpc::Server instances.
55 class ServerBuilder {
56 public:
57 ServerBuilder();
58
59 /// Register a service. This call does not take ownership of the service.
60 /// The service must exist for the lifetime of the \a Server instance returned
61 /// by \a BuildAndStart().
62 /// Matches requests with any :authority
63 void RegisterService(Service* service);
64
65 /// Register a generic service.
66 /// Matches requests with any :authority
67 void RegisterAsyncGenericService(AsyncGenericService* service);
68
69 /// Register a service. This call does not take ownership of the service.
70 /// The service must exist for the lifetime of the \a Server instance returned
71 /// by BuildAndStart().
72 /// Only matches requests with :authority \a host
73 void RegisterService(const grpc::string& host, Service* service);
74
75 /// Set max message size in bytes.
76 void SetMaxMessageSize(int max_message_size) {
77 max_message_size_ = max_message_size;
78 }
79
80 /// Set the compression options to be used by the server.
81 void SetCompressionOptions(const grpc_compression_options& options) {
82 compression_options_ = options;
83 }
84
85 void SetOption(std::unique_ptr<ServerBuilderOption> option);
86
87 /// Tries to bind \a server to the given \a addr.
88 ///
89 /// It can be invoked multiple times.
90 ///
91 /// \param addr The address to try to bind to the server (eg, localhost:1234,
92 /// 192.168.1.1:31416, [::1]:27182, etc.).
93 /// \params creds The credentials associated with the server.
94 /// \param selected_port[out] Upon success, updated to contain the port
95 /// number. \a nullptr otherwise.
96 ///
97 // TODO(dgq): the "port" part seems to be a misnomer.
98 void AddListeningPort(const grpc::string& addr,
99 std::shared_ptr<ServerCredentials> creds,
100 int* selected_port = nullptr);
101
102 /// Add a completion queue for handling asynchronous services
103 /// Caller is required to keep this completion queue live until
104 /// the server is destroyed.
105 std::unique_ptr<ServerCompletionQueue> AddCompletionQueue();
106
107 /// Return a running server which is ready for processing calls.
108 std::unique_ptr<Server> BuildAndStart();
109
110 private:
111 struct Port {
112 grpc::string addr;
113 std::shared_ptr<ServerCredentials> creds;
114 int* selected_port;
115 };
116
117 typedef std::unique_ptr<grpc::string> HostString;
118 struct NamedService {
119 explicit NamedService(Service* s) : service(s) {}
120 NamedService(const grpc::string& h, Service* s)
121 : host(new grpc::string(h)), service(s) {}
122 HostString host;
123 Service* service;
124 };
125
126 int max_message_size_;
127 grpc_compression_options compression_options_;
128 std::vector<std::unique_ptr<ServerBuilderOption>> options_;
129 std::vector<std::unique_ptr<NamedService>> services_;
130 std::vector<Port> ports_;
131 std::vector<ServerCompletionQueue*> cqs_;
132 std::shared_ptr<ServerCredentials> creds_;
133 AsyncGenericService* generic_service_;
134 };
135
136 } // namespace grpc
137
138 #endif // GRPCXX_SERVER_BUILDER_H
OLDNEW
« no previous file with comments | « third_party/grpc/include/grpc++/server.h ('k') | third_party/grpc/include/grpc++/server_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698