server_builder.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015-2016 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #include <limits.h>
20 #include <stdint.h>
21 #include <string.h>
22 
23 #include <algorithm>
24 #include <iterator>
25 #include <memory>
26 #include <string>
27 #include <utility>
28 #include <vector>
29 
30 #include <grpc/grpc.h>
33 #include <grpc/support/log.h>
34 #include <grpc/support/sync.h>
41 #include <grpcpp/resource_quota.h>
44 #include <grpcpp/server.h>
45 #include <grpcpp/server_builder.h>
46 #include <grpcpp/server_context.h>
48 #include <grpcpp/support/config.h>
50 
54 
55 namespace grpc {
56 
57 static std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>*
58  g_plugin_factory_list;
59 static gpr_once once_init_plugin_list = GPR_ONCE_INIT;
60 
61 static void do_plugin_list_init(void) {
62  g_plugin_factory_list =
63  new std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>();
64 }
65 
67  : max_receive_message_size_(INT_MIN),
68  max_send_message_size_(INT_MIN),
69  sync_server_settings_(SyncServerSettings()),
70  resource_quota_(nullptr) {
71  gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
72  for (const auto& value : *g_plugin_factory_list) {
73  plugins_.emplace_back(value());
74  }
75 
76  // all compression algorithms enabled by default.
83 }
84 
86  if (resource_quota_ != nullptr) {
88  }
89 }
90 
91 std::unique_ptr<grpc::ServerCompletionQueue> ServerBuilder::AddCompletionQueue(
92  bool is_frequently_polled) {
95  is_frequently_polled ? GRPC_CQ_DEFAULT_POLLING : GRPC_CQ_NON_LISTENING,
96  nullptr);
97  cqs_.push_back(cq);
98  return std::unique_ptr<grpc::ServerCompletionQueue>(cq);
99 }
100 
102  services_.emplace_back(new NamedService(service));
103  return *this;
104 }
105 
107  Service* service) {
108  services_.emplace_back(new NamedService(host, service));
109  return *this;
110 }
111 
116  "Adding multiple generic services is unsupported for now. "
117  "Dropping the service %p",
118  service);
119  } else {
121  }
122  return *this;
123 }
124 
129  "Adding multiple generic services is unsupported for now. "
130  "Dropping the service %p",
131  service);
132  } else {
134  }
135  return *this;
136 }
137 
139  std::unique_ptr<grpc::ContextAllocator> context_allocator) {
140  context_allocator_ = std::move(context_allocator);
141  return *this;
142 }
143 
144 std::unique_ptr<grpc::experimental::ExternalConnectionAcceptor>
147  std::shared_ptr<ServerCredentials> creds) {
148  std::string name_prefix("external:");
149  char count_str[GPR_LTOA_MIN_BUFSIZE];
150  gpr_ltoa(static_cast<long>(builder_->acceptors_.size()), count_str);
151  builder_->acceptors_.emplace_back(
152  std::make_shared<grpc::internal::ExternalConnectionAcceptorImpl>(
153  name_prefix.append(count_str), type, creds));
154  return builder_->acceptors_.back()->GetAcceptor();
155 }
156 
158  std::shared_ptr<experimental::AuthorizationPolicyProviderInterface>
159  provider) {
160  builder_->authorization_provider_ = std::move(provider);
161 }
162 
164  std::unique_ptr<ServerBuilderOption> option) {
165  options_.push_back(std::move(option));
166  return *this;
167 }
168 
171  switch (option) {
172  case NUM_CQS:
174  break;
175  case MIN_POLLERS:
177  break;
178  case MAX_POLLERS:
180  break;
181  case CQ_TIMEOUT_MSEC:
183  break;
184  }
185  return *this;
186 }
187 
189  grpc_compression_algorithm algorithm, bool enabled) {
190  if (enabled) {
192  } else {
194  }
195  return *this;
196 }
197 
200  maybe_default_compression_level_.is_set = true;
202  return *this;
203 }
204 
209  return *this;
210 }
211 
214  if (resource_quota_ != nullptr) {
216  }
217  resource_quota_ = resource_quota.c_resource_quota();
219  return *this;
220 }
221 
223  const std::string& addr_uri, std::shared_ptr<ServerCredentials> creds,
224  int* selected_port) {
225  const std::string uri_scheme = "dns:";
226  std::string addr = addr_uri;
227  if (addr_uri.compare(0, uri_scheme.size(), uri_scheme) == 0) {
228  size_t pos = uri_scheme.size();
229  while (addr_uri[pos] == '/') ++pos; // Skip slashes.
230  addr = addr_uri.substr(pos);
231  }
232  Port port = {addr, std::move(creds), selected_port};
233  ports_.push_back(port);
234  return *this;
235 }
236 
239  if (max_receive_message_size_ >= -1) {
241  }
242  if (max_send_message_size_ >= -1) {
244  }
245  for (const auto& option : options_) {
246  option->UpdateArguments(&args);
247  option->UpdatePlugins(&plugins_);
248  }
254  }
258  }
259  if (resource_quota_ != nullptr) {
260  args.SetPointerWithVtable(GRPC_ARG_RESOURCE_QUOTA, resource_quota_,
262  }
263  for (const auto& plugin : plugins_) {
264  plugin->UpdateServerBuilder(this);
265  plugin->UpdateChannelArguments(&args);
266  }
267  if (authorization_provider_ != nullptr) {
268  args.SetPointerWithVtable(GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER,
269  authorization_provider_->c_provider(),
271  }
272  return args;
273 }
274 
275 std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() {
277 
278  // == Determine if the server has any syncrhonous methods ==
279  bool has_sync_methods = false;
280  for (const auto& value : services_) {
281  if (value->service->has_synchronous_methods()) {
282  has_sync_methods = true;
283  break;
284  }
285  }
286 
287  if (!has_sync_methods) {
288  for (const auto& value : plugins_) {
289  if (value->has_sync_methods()) {
290  has_sync_methods = true;
291  break;
292  }
293  }
294  }
295 
296  // If this is a Sync server, i.e a server expositing sync API, then the server
297  // needs to create some completion queues to listen for incoming requests.
298  // 'sync_server_cqs' are those internal completion queues.
299  //
300  // This is different from the completion queues added to the server via
301  // ServerBuilder's AddCompletionQueue() method (those completion queues
302  // are in 'cqs_' member variable of ServerBuilder object)
303  std::shared_ptr<std::vector<std::unique_ptr<grpc::ServerCompletionQueue>>>
304  sync_server_cqs(
305  std::make_shared<
306  std::vector<std::unique_ptr<grpc::ServerCompletionQueue>>>());
307 
308  bool has_frequently_polled_cqs = false;
309  for (const auto& cq : cqs_) {
310  if (cq->IsFrequentlyPolled()) {
311  has_frequently_polled_cqs = true;
312  break;
313  }
314  }
315 
316  // == Determine if the server has any callback methods ==
317  bool has_callback_methods = false;
318  for (const auto& service : services_) {
319  if (service->service->has_callback_methods()) {
320  has_callback_methods = true;
321  has_frequently_polled_cqs = true;
322  break;
323  }
324  }
325 
326  if (callback_generic_service_ != nullptr) {
327  has_frequently_polled_cqs = true;
328  }
329 
330  const bool is_hybrid_server = has_sync_methods && has_frequently_polled_cqs;
331 
332  if (has_sync_methods) {
333  grpc_cq_polling_type polling_type =
334  is_hybrid_server ? GRPC_CQ_NON_POLLING : GRPC_CQ_DEFAULT_POLLING;
335 
336  // Create completion queues to listen to incoming rpc requests
337  for (int i = 0; i < sync_server_settings_.num_cqs; i++) {
338  sync_server_cqs->emplace_back(
339  new grpc::ServerCompletionQueue(GRPC_CQ_NEXT, polling_type, nullptr));
340  }
341  }
342 
343  // TODO(vjpai): Add a section here for plugins once they can support callback
344  // methods
345 
346  if (has_sync_methods) {
347  // This is a Sync server
349  "Synchronous server. Num CQs: %d, Min pollers: %d, Max Pollers: "
350  "%d, CQ timeout (msec): %d",
354  }
355 
356  if (has_callback_methods) {
357  gpr_log(GPR_INFO, "Callback server.");
358  }
359 
360  // Merge the application and internal interceptors together.
361  // Internal interceptors go first.
362  auto creators = std::move(internal_interceptor_creators_);
363  creators.insert(creators.end(),
364  std::make_move_iterator(interceptor_creators_.begin()),
365  std::make_move_iterator(interceptor_creators_.end()));
366 
367  std::unique_ptr<grpc::Server> server(new grpc::Server(
368  &args, sync_server_cqs, sync_server_settings_.min_pollers,
371  std::move(creators)));
372 
373  ServerInitializer* initializer = server->initializer();
374 
375  // Register all the completion queues with the server. i.e
376  // 1. sync_server_cqs: internal completion queues created IF this is a sync
377  // server
378  // 2. cqs_: Completion queues added via AddCompletionQueue() call
379 
380  for (const auto& cq : *sync_server_cqs) {
381  grpc_server_register_completion_queue(server->server_, cq->cq(), nullptr);
382  has_frequently_polled_cqs = true;
383  }
384 
385  if (has_callback_methods || callback_generic_service_ != nullptr) {
386  auto* cq = server->CallbackCQ();
387  grpc_server_register_completion_queue(server->server_, cq->cq(), nullptr);
388  }
389 
390  // cqs_ contains the completion queue added by calling the ServerBuilder's
391  // AddCompletionQueue() API. Some of them may not be frequently polled (i.e by
392  // calling Next() or AsyncNext()) and hence are not safe to be used for
393  // listening to incoming channels. Such completion queues must be registered
394  // as non-listening queues. In debug mode, these should have their server list
395  // tracked since these are provided the user and must be Shutdown by the user
396  // after the server is shutdown.
397  for (const auto& cq : cqs_) {
398  grpc_server_register_completion_queue(server->server_, cq->cq(), nullptr);
399  cq->RegisterServer(server.get());
400  }
401 
402  if (!has_frequently_polled_cqs) {
404  "At least one of the completion queues must be frequently polled");
405  return nullptr;
406  }
407 
408  server->RegisterContextAllocator(std::move(context_allocator_));
409 
410  for (const auto& value : services_) {
411  if (!server->RegisterService(value->host.get(), value->service)) {
412  return nullptr;
413  }
414  }
415 
416  for (const auto& value : plugins_) {
417  value->InitServer(initializer);
418  }
419 
420  if (generic_service_) {
421  server->RegisterAsyncGenericService(generic_service_);
422  } else if (callback_generic_service_) {
423  server->RegisterCallbackGenericService(callback_generic_service_);
424  } else {
425  for (const auto& value : services_) {
426  if (value->service->has_generic_methods()) {
428  "Some methods were marked generic but there is no "
429  "generic service registered.");
430  return nullptr;
431  }
432  }
433  }
434 
435  bool added_port = false;
436  for (auto& port : ports_) {
437  int r = server->AddListeningPort(port.addr, port.creds.get());
438  if (!r) {
439  if (added_port) server->Shutdown();
440  return nullptr;
441  }
442  added_port = true;
443  if (port.selected_port != nullptr) {
444  *port.selected_port = r;
445  }
446  }
447 
448  auto cqs_data = cqs_.empty() ? nullptr : &cqs_[0];
449  server->Start(cqs_data, cqs_.size());
450 
451  for (const auto& value : plugins_) {
452  value->Finish(initializer);
453  }
454 
455  return server;
456 }
457 
459  std::unique_ptr<ServerBuilderPlugin> (*CreatePlugin)()) {
460  gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
461  (*g_plugin_factory_list).push_back(CreatePlugin);
462 }
463 
465  switch (id) {
468  default:
469  gpr_log(GPR_ERROR, "Workaround %u does not exist or is obsolete.", id);
470  return *this;
471  }
472 }
473 
474 } // namespace grpc
GPR_INFO
#define GPR_INFO
Definition: include/grpc/impl/codegen/log.h:56
grpc::ServerBuilder::experimental_type::AddExternalConnectionAcceptor
std::unique_ptr< grpc::experimental::ExternalConnectionAcceptor > AddExternalConnectionAcceptor(ExternalConnectionType type, std::shared_ptr< ServerCredentials > creds)
Definition: server_builder.cc:145
grpc::ServerCompletionQueue
Definition: include/grpcpp/impl/codegen/completion_queue.h:436
grpc::AsyncGenericService
Definition: grpcpp/impl/codegen/async_generic_service.h:70
log.h
grpc::ServerBuilder::sync_server_settings_
SyncServerSettings sync_server_settings_
Definition: grpcpp/server_builder.h:383
pos
int pos
Definition: libuv/docs/code/tty-gravity/main.c:11
GRPC_CQ_NEXT
@ GRPC_CQ_NEXT
Definition: grpc_types.h:760
memset
return memset(p, 0, total)
grpc
Definition: grpcpp/alarm.h:33
gpr_once
pthread_once_t gpr_once
Definition: impl/codegen/sync_posix.h:50
grpc::ServerBuilder::BuildAndStart
virtual std::unique_ptr< grpc::Server > BuildAndStart()
Definition: server_builder.cc:275
grpc_cq_polling_type
grpc_cq_polling_type
Definition: grpc_types.h:740
grpc::ServerBuilder::SetSyncServerOption
ServerBuilder & SetSyncServerOption(SyncServerOption option, int value)
Only useful if this is a Synchronous server.
Definition: server_builder.cc:169
GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
Definition: grpc_types.h:153
GRPC_ARG_RESOURCE_QUOTA
#define GRPC_ARG_RESOURCE_QUOTA
Definition: grpc_types.h:299
grpc::ServerBuilder::AddChannelArgument
ServerBuilder & AddChannelArgument(const std::string &arg, const T &value)
Definition: grpcpp/server_builder.h:241
grpc::ServerBuilder::level
grpc_compression_level level
Definition: grpcpp/server_builder.h:397
string.h
workaround_list.h
grpc_compression_algorithm
grpc_compression_algorithm
Definition: compression_types.h:60
useful.h
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc::ServerBuilder::NamedService
Definition: grpcpp/server_builder.h:317
resource_quota_
ResourceQuotaRefPtr resource_quota_
Definition: google_c2p_resolver.cc:133
external_connection_acceptor_impl.h
grpc::ServerBuilder::options_
std::vector< std::unique_ptr< grpc::ServerBuilderOption > > options_
Definition: grpcpp/server_builder.h:379
grpc::ResourceQuota
Definition: include/grpcpp/resource_quota.h:34
u
OPENSSL_EXPORT pem_password_cb void * u
Definition: pem.h:351
grpc_server_register_completion_queue
GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved)
Definition: src/core/lib/surface/server.cc:1466
grpc::ServerBuilder::services_
std::vector< std::unique_ptr< NamedService > > services_
Definition: grpcpp/server_builder.h:380
GPR_ONCE_INIT
#define GPR_ONCE_INIT
Definition: impl/codegen/sync_posix.h:52
grpc::ServerBuilder::maybe_default_compression_algorithm_
struct grpc::ServerBuilder::@7 maybe_default_compression_algorithm_
grpc::ServerBuilder::SetOption
ServerBuilder & SetOption(std::unique_ptr< grpc::ServerBuilderOption > option)
Definition: server_builder.cc:163
GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL
Definition: compression_types.h:46
GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET
#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET
Definition: compression_types.h:54
GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
Definition: grpc_types.h:159
grpc::ServerBuilder::Port
Experimental, to be deprecated.
Definition: grpcpp/server_builder.h:309
grpc::ServerBuilder::RegisterService
ServerBuilder & RegisterService(grpc::Service *service)
Definition: server_builder.cc:101
resource_quota
ResourceQuotaRefPtr resource_quota
Definition: filter_fuzzer.cc:145
grpc_authorization_policy_provider_arg_vtable
const GRPCAPI grpc_arg_pointer_vtable * grpc_authorization_policy_provider_arg_vtable(void)
Definition: authorization_policy_provider_vtable.cc:46
GRPC_CQ_NON_POLLING
@ GRPC_CQ_NON_POLLING
Definition: grpc_types.h:754
grpc::Service
Desriptor of an RPC service and its various RPC methods.
Definition: grpcpp/impl/codegen/service_type.h:58
gpr_once_init
GPRAPI void gpr_once_init(gpr_once *once, void(*init_function)(void))
grpc::ServerBuilder::SyncServerSettings
Definition: grpcpp/server_builder.h:358
grpc_types.h
grpc::ServerBuilder::RegisterAsyncGenericService
ServerBuilder & RegisterAsyncGenericService(grpc::AsyncGenericService *service)
Definition: server_builder.cc:112
grpc::ServerBuilder::SetResourceQuota
ServerBuilder & SetResourceQuota(const grpc::ResourceQuota &resource_quota)
Set the attached buffer pool for this server.
Definition: server_builder.cc:212
grpc::ServerBuilder::SyncServerSettings::max_pollers
int max_pollers
Definition: grpcpp/server_builder.h:371
grpc::ServerBuilder::MAX_POLLERS
@ MAX_POLLERS
Maximum number of polling threads.
Definition: grpcpp/server_builder.h:231
server_builder_plugin.h
grpc::ServerBuilder::callback_generic_service_
grpc::CallbackGenericService * callback_generic_service_
Definition: grpcpp/server_builder.h:393
grpc::ServerBuilder::AddListeningPort
ServerBuilder & AddListeningPort(const std::string &addr_uri, std::shared_ptr< grpc::ServerCredentials > creds, int *selected_port=nullptr)
Definition: server_builder.cc:222
grpc::ServerBuilder::ports_
std::vector< Port > ports_
Definition: grpcpp/server_builder.h:381
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
GRPC_CQ_DEFAULT_POLLING
@ GRPC_CQ_DEFAULT_POLLING
Definition: grpc_types.h:743
grpc::ServerBuilder::MIN_POLLERS
@ MIN_POLLERS
Minimum number of polling threads.
Definition: grpcpp/server_builder.h:230
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
grpc::ServerBuilder::experimental_type::SetAuthorizationPolicyProvider
void SetAuthorizationPolicyProvider(std::shared_ptr< experimental::AuthorizationPolicyProviderInterface > provider)
Definition: server_builder.cc:157
channel_arguments.h
grpc::ServerBuilder::plugins_
std::vector< std::unique_ptr< grpc::ServerBuilderPlugin > > plugins_
Definition: grpcpp/server_builder.h:389
GRPC_CQ_NON_LISTENING
@ GRPC_CQ_NON_LISTENING
Definition: grpc_types.h:748
grpc::ServerBuilder::CQ_TIMEOUT_MSEC
@ CQ_TIMEOUT_MSEC
Completion queue timeout in milliseconds.
Definition: grpcpp/server_builder.h:232
grpc::ServerBuilder::authorization_provider_
std::shared_ptr< experimental::AuthorizationPolicyProviderInterface > authorization_provider_
Definition: grpcpp/server_builder.h:414
grpc::ServerBuilder
A builder class for the creation and startup of grpc::Server instances.
Definition: grpcpp/server_builder.h:86
grpc::ServerBuilder::SetDefaultCompressionAlgorithm
ServerBuilder & SetDefaultCompressionAlgorithm(grpc_compression_algorithm algorithm)
Definition: server_builder.cc:205
grpc_resource_quota_arg_vtable
const GRPCAPI grpc_arg_pointer_vtable * grpc_resource_quota_arg_vtable(void)
Definition: api.cc:62
GPR_LTOA_MIN_BUFSIZE
#define GPR_LTOA_MIN_BUFSIZE
Definition: string.h:51
grpc::ServerBuilder::internal_interceptor_creators_
std::vector< std::unique_ptr< grpc::experimental::ServerInterceptorFactoryInterface > > internal_interceptor_creators_
Definition: grpcpp/server_builder.h:409
gpr_log
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
grpc.h
grpc::ServerBuilder::BuildChannelArgs
virtual ChannelArguments BuildChannelArgs()
Experimental API, subject to change.
Definition: server_builder.cc:237
completion_queue.h
grpc::ServerBuilder::server_config_fetcher_
grpc_server_config_fetcher * server_config_fetcher_
Definition: grpcpp/server_builder.h:412
grpc::ServerBuilder::ServerBuilder
ServerBuilder()
Definition: server_builder.cc:66
grpc_core::ClearBit
T ClearBit(T *i, size_t n)
Definition: useful.h:55
grpc.server
def server(thread_pool, handlers=None, interceptors=None, options=None, maximum_concurrent_rpcs=None, compression=None, xds=False)
Definition: src/python/grpcio/grpc/__init__.py:2034
grpc::ServerBuilder::SyncServerOption
SyncServerOption
Options for synchronous servers.
Definition: grpcpp/server_builder.h:228
grpc::ServerBuilder::generic_service_
grpc::AsyncGenericService * generic_service_
Definition: grpcpp/server_builder.h:391
GPR_ERROR
#define GPR_ERROR
Definition: include/grpc/impl/codegen/log.h:57
server_builder_option.h
grpc::ServerBuilder::cqs_
std::vector< grpc::ServerCompletionQueue * > cqs_
List of completion queues added via AddCompletionQueue method.
Definition: grpcpp/server_builder.h:386
grpc::ServerBuilder::SetCompressionAlgorithmSupportStatus
ServerBuilder & SetCompressionAlgorithmSupportStatus(grpc_compression_algorithm algorithm, bool enabled)
Definition: server_builder.cc:188
config.h
GRPC_ARG_WORKAROUND_CRONET_COMPRESSION
#define GRPC_ARG_WORKAROUND_CRONET_COMPRESSION
Definition: grpc_types.h:377
stdint.h
grpc::CallbackGenericService
Definition: grpcpp/impl/codegen/async_generic_service.h:104
server_interceptor.h
server_credentials.h
grpc::ServerBuilder::AddCompletionQueue
std::unique_ptr< grpc::ServerCompletionQueue > AddCompletionQueue(bool is_frequently_polled=true)
Definition: server_builder.cc:91
grpc::ServerBuilder::experimental_type::builder_
ServerBuilder * builder_
Definition: grpcpp/server_builder.h:287
GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER
#define GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER
Definition: grpc_types.h:450
tests.unit._exit_scenarios.port
port
Definition: _exit_scenarios.py:179
compression_types.h
value
const char * value
Definition: hpack_parser_table.cc:165
grpc::ServerBuilder::~ServerBuilder
virtual ~ServerBuilder()
Definition: server_builder.cc:85
grpc::ServerBuilder::context_allocator_
std::unique_ptr< ContextAllocator > context_allocator_
Definition: grpcpp/server_builder.h:392
grpc::ChannelArguments
Definition: grpcpp/support/channel_arguments.h:39
grpc::ServerBuilder::max_receive_message_size_
int max_receive_message_size_
Definition: grpcpp/server_builder.h:377
grpc::ServerBuilder::SetDefaultCompressionLevel
ServerBuilder & SetDefaultCompressionLevel(grpc_compression_level level)
Definition: server_builder.cc:198
grpc::ServerBuilder::SyncServerSettings::cq_timeout_msec
int cq_timeout_msec
The timeout for server completion queue's AsyncNext call.
Definition: grpcpp/server_builder.h:374
server
Definition: examples/python/async_streaming/server.py:1
grpc::Server
Definition: include/grpcpp/server.h:59
grpc_resource_quota_unref
GRPCAPI void grpc_resource_quota_unref(grpc_resource_quota *resource_quota)
Definition: api.cc:79
grpc_workaround_list
grpc_workaround_list
Definition: workaround_list.h:26
server_context.h
fix_build_deps.r
r
Definition: fix_build_deps.py:491
grpc_compression_level
grpc_compression_level
Definition: compression_types.h:72
GRPC_COMPRESS_ALGORITHMS_COUNT
@ GRPC_COMPRESS_ALGORITHMS_COUNT
Definition: compression_types.h:65
grpc::ServerBuilder::maybe_default_compression_level_
struct grpc::ServerBuilder::@6 maybe_default_compression_level_
GRPC_WORKAROUND_ID_CRONET_COMPRESSION
@ GRPC_WORKAROUND_ID_CRONET_COMPRESSION
Definition: workaround_list.h:27
service_type.h
server_interface.h
grpc::ServerBuilder::NUM_CQS
@ NUM_CQS
Number of completion queues.
Definition: grpcpp/server_builder.h:229
grpc_core::SetBit
T SetBit(T *i, size_t n)
Definition: useful.h:49
resource_quota.h
grpc::ServerBuilder::interceptor_creators_
std::vector< std::unique_ptr< grpc::experimental::ServerInterceptorFactoryInterface > > interceptor_creators_
Definition: grpcpp/server_builder.h:406
grpc::ServerBuilder::resource_quota_
grpc_resource_quota * resource_quota_
Definition: grpcpp/server_builder.h:390
grpc::ServerBuilder::EnableWorkaround
ServerBuilder & EnableWorkaround(grpc_workaround_list id)
Definition: server_builder.cc:464
grpc::ServerBuilder::experimental_type::ExternalConnectionType
ExternalConnectionType
Definition: grpcpp/server_builder.h:268
grpc_resource_quota_ref
GRPCAPI void grpc_resource_quota_ref(grpc_resource_quota *resource_quota)
Definition: api.cc:75
authorization_policy_provider.h
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
server.h
grpc::ServerBuilder::SyncServerSettings::num_cqs
int num_cqs
Number of server completion queues to create to listen to incoming RPCs.
Definition: grpcpp/server_builder.h:363
service
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
Definition: ProtoMethod.h:25
grpc::ServerBuilder::SyncServerSettings::min_pollers
int min_pollers
Definition: grpcpp/server_builder.h:367
GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM
Definition: compression_types.h:42
grpc::ServerBuilder::InternalAddPluginFactory
static void InternalAddPluginFactory(std::unique_ptr< grpc::ServerBuilderPlugin >(*CreatePlugin)())
For internal use only: Register a ServerBuilderPlugin factory function.
Definition: server_builder.cc:458
grpc::ServerBuilder::acceptors_
std::vector< std::shared_ptr< grpc::internal::ExternalConnectionAcceptorImpl > > acceptors_
Definition: grpcpp/server_builder.h:411
grpc::ServerInitializer
Definition: grpcpp/impl/server_initializer.h:31
grpc::ServerBuilder::RegisterCallbackGenericService
ServerBuilder & RegisterCallbackGenericService(grpc::CallbackGenericService *service)
Definition: server_builder.cc:125
sync.h
google_benchmark.option
option
Definition: third_party/benchmark/bindings/python/google_benchmark/__init__.py:115
addr
struct sockaddr_in addr
Definition: libuv/docs/code/tcp-echo-server/main.c:10
server_builder.h
grpc::ServerBuilder::SetContextAllocator
ServerBuilder & SetContextAllocator(std::unique_ptr< grpc::ContextAllocator > context_allocator)
Definition: server_builder.cc:138
cq
static grpc_completion_queue * cq
Definition: test/core/fling/client.cc:37
grpc::ServerBuilder::max_send_message_size_
int max_send_message_size_
Definition: grpcpp/server_builder.h:378
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
grpc::ServerBuilder::enabled_compression_algorithms_bitset_
uint32_t enabled_compression_algorithms_bitset_
Definition: grpcpp/server_builder.h:403
gpr_ltoa
int gpr_ltoa(long value, char *output)
Definition: string.cc:176
grpc::ServerBuilder::algorithm
grpc_compression_algorithm algorithm
Definition: grpcpp/server_builder.h:401


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:16