grpc 1.30.0 → 1.46.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (2443) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1497 -18376
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/compression.h +1 -1
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +43 -0
  9. data/include/grpc/event_engine/event_engine.h +399 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  11. data/include/grpc/event_engine/memory_allocator.h +226 -0
  12. data/include/grpc/event_engine/memory_request.h +57 -0
  13. data/include/grpc/event_engine/port.h +39 -0
  14. data/include/grpc/fork.h +1 -1
  15. data/include/grpc/grpc.h +90 -25
  16. data/include/grpc/grpc_posix.h +22 -18
  17. data/include/grpc/grpc_security.h +563 -315
  18. data/include/grpc/grpc_security_constants.h +20 -14
  19. data/include/grpc/impl/codegen/README.md +22 -0
  20. data/include/grpc/impl/codegen/atm.h +5 -3
  21. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  22. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  23. data/include/grpc/impl/codegen/atm_windows.h +6 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +3 -1
  25. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  26. data/include/grpc/impl/codegen/compression_types.h +2 -2
  27. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  28. data/include/grpc/impl/codegen/fork.h +2 -0
  29. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  30. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  31. data/include/grpc/impl/codegen/grpc_types.h +84 -53
  32. data/include/grpc/impl/codegen/log.h +2 -2
  33. data/include/grpc/impl/codegen/port_platform.h +100 -97
  34. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  35. data/include/grpc/impl/codegen/slice.h +6 -1
  36. data/include/grpc/impl/codegen/status.h +2 -0
  37. data/include/grpc/impl/codegen/sync.h +8 -5
  38. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  39. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  40. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  41. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  42. data/include/grpc/impl/codegen/sync_windows.h +6 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/slice_buffer.h +3 -3
  46. data/include/grpc/status.h +1 -1
  47. data/include/grpc/support/atm.h +1 -1
  48. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  49. data/include/grpc/support/atm_gcc_sync.h +1 -1
  50. data/include/grpc/support/atm_windows.h +1 -1
  51. data/include/grpc/support/log.h +1 -1
  52. data/include/grpc/support/port_platform.h +1 -1
  53. data/include/grpc/support/sync.h +4 -4
  54. data/include/grpc/support/sync_abseil.h +1 -1
  55. data/include/grpc/support/sync_custom.h +1 -1
  56. data/include/grpc/support/sync_generic.h +1 -1
  57. data/include/grpc/support/sync_posix.h +1 -1
  58. data/include/grpc/support/sync_windows.h +1 -1
  59. data/include/grpc/support/time.h +9 -9
  60. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +33 -35
  66. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  67. data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
  68. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  69. data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
  70. data/src/core/ext/filters/client_channel/client_channel.cc +2284 -3096
  71. data/src/core/ext/filters/client_channel/client_channel.h +566 -63
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  73. data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -5
  74. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  75. data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
  76. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
  77. data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
  78. data/src/core/ext/filters/client_channel/config_selector.h +145 -0
  79. data/src/core/ext/filters/client_channel/connector.h +20 -20
  80. data/src/core/ext/filters/client_channel/dynamic_filters.cc +189 -0
  81. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -143
  83. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +16 -24
  84. data/src/core/ext/filters/client_channel/health/health_check_client.cc +129 -572
  85. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -158
  86. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +60 -62
  87. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  88. data/src/core/ext/filters/client_channel/http_proxy.cc +113 -117
  89. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +52 -38
  91. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +12 -9
  92. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +16 -9
  93. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -24
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +519 -388
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -14
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +20 -21
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  103. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -75
  104. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +307 -211
  105. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +804 -0
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  107. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +84 -84
  109. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -49
  110. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +138 -96
  111. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +443 -156
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +872 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +710 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1215 -0
  117. data/src/core/ext/filters/client_channel/lb_policy.cc +23 -29
  118. data/src/core/ext/filters/client_channel/lb_policy.h +178 -142
  119. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  120. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +13 -10
  121. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  122. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  123. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  124. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +304 -339
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -42
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +31 -24
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +58 -72
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +524 -230
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +44 -26
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  134. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +98 -247
  135. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +60 -62
  136. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +10 -7
  137. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +400 -0
  138. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  139. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  140. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +71 -63
  141. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +983 -101
  142. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  143. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +57 -314
  144. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +40 -62
  145. data/src/core/ext/filters/client_channel/retry_filter.cc +2655 -0
  146. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  147. data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
  148. data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
  149. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -60
  150. data/src/core/ext/filters/client_channel/retry_throttle.h +15 -7
  151. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +157 -0
  152. data/src/core/ext/filters/client_channel/subchannel.cc +284 -397
  153. data/src/core/ext/filters/client_channel/subchannel.h +116 -161
  154. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  155. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
  156. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
  157. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  158. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  159. data/src/core/ext/filters/deadline/deadline_filter.cc +120 -114
  160. data/src/core/ext/filters/deadline/deadline_filter.h +9 -12
  161. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +258 -0
  162. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  163. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  164. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  165. data/src/core/ext/filters/http/client/http_client_filter.cc +84 -539
  166. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  167. data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
  168. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  169. data/src/core/ext/filters/http/http_filters_plugin.cc +55 -69
  170. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
  171. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +103 -75
  172. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  173. data/src/core/ext/filters/http/server/http_server_filter.cc +89 -295
  174. data/src/core/ext/filters/message_size/message_size_filter.cc +101 -130
  175. data/src/core/ext/filters/message_size/message_size_filter.h +17 -3
  176. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  177. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  178. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  179. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  180. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  181. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  182. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  183. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  184. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  185. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +335 -46
  186. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
  187. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1005 -355
  188. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  189. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
  190. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  191. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  192. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +807 -778
  193. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -5
  194. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
  195. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
  196. data/src/core/ext/transport/chttp2/transport/flow_control.cc +89 -67
  197. data/src/core/ext/transport/chttp2/transport/flow_control.h +52 -38
  198. data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -30
  199. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
  200. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
  201. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
  202. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +19 -20
  203. data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
  204. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -22
  205. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
  206. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +55 -22
  207. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
  209. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  210. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  211. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
  212. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
  213. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  214. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
  215. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +814 -1196
  216. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
  217. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
  218. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
  219. data/src/core/ext/transport/chttp2/transport/internal.h +79 -78
  220. data/src/core/ext/transport/chttp2/transport/parsing.cc +177 -327
  221. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  222. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  223. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  224. data/src/core/ext/transport/chttp2/transport/writing.cc +145 -190
  225. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  226. data/src/core/ext/transport/inproc/inproc_transport.cc +262 -237
  227. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  228. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  229. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  230. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  231. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  232. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  233. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  234. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  235. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  236. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  237. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  248. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  249. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -2
  250. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  251. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +59 -14
  252. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +270 -0
  253. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +1240 -0
  254. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  255. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  256. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +95 -0
  257. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +382 -0
  258. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +543 -0
  259. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2961 -0
  260. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +48 -0
  261. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +103 -0
  262. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -0
  263. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +545 -0
  264. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  265. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  266. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +145 -0
  267. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +636 -0
  268. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +49 -0
  269. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +116 -0
  270. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +419 -0
  271. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1783 -0
  272. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +163 -0
  273. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +778 -0
  274. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +47 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +100 -0
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +103 -0
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +269 -0
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +1277 -0
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +220 -0
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1219 -0
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +49 -0
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +122 -0
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +322 -0
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1686 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +40 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +84 -0
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +47 -0
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +144 -0
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +178 -0
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  298. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +106 -0
  299. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +348 -0
  300. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +144 -0
  301. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +623 -0
  302. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +129 -0
  303. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +568 -0
  304. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +46 -0
  305. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +94 -0
  306. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +165 -0
  307. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +886 -0
  308. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +186 -0
  309. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +941 -0
  310. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  311. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  312. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +56 -0
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +154 -0
  314. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  315. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  316. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  317. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  318. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  319. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  320. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +209 -0
  321. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1008 -0
  322. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +101 -0
  323. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +443 -0
  324. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1051 -0
  325. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5956 -0
  326. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +79 -0
  327. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +255 -0
  328. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  329. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  330. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  331. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  332. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  333. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  334. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +63 -0
  335. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +167 -0
  336. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  337. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  338. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  350. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  351. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  352. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  353. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  354. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  355. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  356. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  357. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  358. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +463 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2606 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +28 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +38 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +175 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +880 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +88 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +308 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +191 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1035 -0
  370. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  372. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +38 -0
  373. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +70 -0
  374. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +165 -0
  375. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +755 -0
  376. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +68 -0
  377. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +210 -0
  378. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  379. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  380. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  381. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  382. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  383. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  384. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  385. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  386. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +62 -0
  387. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +188 -0
  388. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  389. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  390. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +48 -0
  391. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +113 -0
  392. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +47 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +100 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +80 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +234 -0
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +67 -0
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +218 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +78 -0
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +294 -0
  402. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +107 -0
  403. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +429 -0
  404. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +107 -0
  405. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +419 -0
  406. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  407. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  408. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +26 -0
  409. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +39 -0
  410. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  411. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  412. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +54 -0
  413. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +139 -0
  414. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +66 -0
  415. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +196 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  418. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +43 -0
  419. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +97 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  422. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  423. data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -2
  424. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
  425. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1236 -0
  426. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +283 -0
  427. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +1338 -0
  428. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  429. data/src/core/ext/upb-generated/google/api/http.upb.h +241 -100
  430. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  431. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  432. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  433. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +48 -18
  434. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  435. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2368 -969
  436. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  437. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +46 -16
  438. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  439. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +31 -11
  440. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  441. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +203 -101
  442. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  443. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +46 -16
  444. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  445. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +313 -112
  446. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  447. data/src/core/ext/upb-generated/google/rpc/status.upb.h +63 -26
  448. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  449. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  450. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  451. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  452. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  453. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +777 -337
  454. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  455. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +99 -34
  456. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  457. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +74 -27
  458. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  459. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +460 -184
  460. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  461. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  462. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  463. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  464. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  465. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +217 -43
  466. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
  467. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +108 -0
  468. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  469. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -2
  470. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  471. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +66 -16
  472. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +53 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +99 -0
  474. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  475. data/src/core/ext/upb-generated/validate/validate.upb.h +3024 -1084
  476. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  477. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  478. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  479. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  480. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  481. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  482. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  483. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  484. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  485. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  486. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  487. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  488. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  489. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  490. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  491. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  492. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  493. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  494. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  500. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  501. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  502. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  503. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  504. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  505. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  506. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  507. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  508. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  509. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  510. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  511. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  512. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  513. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  514. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  515. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  516. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  517. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  518. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  519. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  520. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  530. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -0
  531. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  532. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +38 -0
  533. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +222 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  537. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  538. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +98 -0
  539. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  540. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +557 -0
  541. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
  542. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +138 -0
  545. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  546. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  547. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  550. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +54 -0
  551. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  552. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +267 -0
  553. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
  554. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
  555. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  556. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -0
  557. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +47 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -0
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +228 -0
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -0
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +298 -0
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -0
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +57 -0
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +70 -0
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  580. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +99 -0
  581. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  582. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +128 -0
  583. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +48 -0
  587. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +197 -0
  589. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +190 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  592. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  593. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +63 -0
  595. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +896 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +77 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
  617. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  618. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  619. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  620. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  632. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  633. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  634. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  635. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  636. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  637. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  638. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  639. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  640. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  641. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +551 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +210 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +254 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  654. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -0
  655. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  656. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +128 -0
  657. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  658. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -0
  659. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  660. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  661. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  662. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  663. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  664. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  665. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  666. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  667. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  668. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -0
  669. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  670. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  671. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  672. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +52 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +51 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +70 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +65 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +75 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  684. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +78 -0
  685. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  686. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +85 -0
  687. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  688. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  689. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  690. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
  691. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  694. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -0
  695. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  696. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +48 -0
  697. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  698. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  704. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  705. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  706. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  707. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  708. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  709. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  710. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
  711. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  712. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  713. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -0
  715. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  716. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -0
  717. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  718. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +35 -0
  719. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  720. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +32 -0
  721. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  722. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +54 -0
  723. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  724. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  726. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +45 -0
  727. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  728. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +37 -0
  729. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  731. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  732. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  733. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  734. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -0
  735. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  736. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +47 -0
  737. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  738. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
  739. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  740. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +46 -0
  741. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +39 -0
  743. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
  745. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  746. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  747. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  748. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  749. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  750. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  751. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  752. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  753. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  754. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  755. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  756. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  757. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  758. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  759. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  760. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  761. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  762. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  763. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  764. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  765. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  766. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  770. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  771. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  772. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  774. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  775. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  776. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  777. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  778. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  779. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  780. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  781. data/src/core/ext/xds/certificate_provider_store.cc +95 -0
  782. data/src/core/ext/xds/certificate_provider_store.h +121 -0
  783. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  784. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  785. data/src/core/ext/xds/upb_utils.h +67 -0
  786. data/src/core/ext/xds/xds_api.cc +730 -0
  787. data/src/core/ext/xds/xds_api.h +191 -0
  788. data/src/core/ext/xds/xds_bootstrap.cc +570 -0
  789. data/src/core/ext/xds/xds_bootstrap.h +143 -0
  790. data/src/core/ext/xds/xds_certificate_provider.cc +407 -0
  791. data/src/core/ext/xds/xds_certificate_provider.h +159 -0
  792. data/src/core/ext/xds/xds_channel_args.h +32 -0
  793. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  794. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  795. data/src/core/ext/xds/xds_client.cc +2512 -0
  796. data/src/core/ext/xds/xds_client.h +348 -0
  797. data/src/core/ext/xds/xds_client_stats.cc +160 -0
  798. data/src/core/ext/xds/xds_client_stats.h +241 -0
  799. data/src/core/ext/xds/xds_cluster.cc +453 -0
  800. data/src/core/ext/xds/xds_cluster.h +108 -0
  801. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  802. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  803. data/src/core/ext/xds/xds_common_types.cc +388 -0
  804. data/src/core/ext/xds/xds_common_types.h +95 -0
  805. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  806. data/src/core/ext/xds/xds_endpoint.h +135 -0
  807. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  808. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  809. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  810. data/src/core/ext/xds/xds_http_filters.h +133 -0
  811. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  812. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  813. data/src/core/ext/xds/xds_listener.cc +1039 -0
  814. data/src/core/ext/xds/xds_listener.h +220 -0
  815. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  816. data/src/core/ext/xds/xds_resource_type.h +98 -0
  817. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  818. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  819. data/src/core/ext/xds/xds_route_config.h +218 -0
  820. data/src/core/ext/xds/xds_routing.cc +250 -0
  821. data/src/core/ext/xds/xds_routing.h +101 -0
  822. data/src/core/ext/xds/xds_server_config_fetcher.cc +1314 -0
  823. data/src/core/lib/address_utils/parse_address.cc +340 -0
  824. data/src/core/lib/address_utils/parse_address.h +82 -0
  825. data/src/core/lib/address_utils/sockaddr_utils.cc +409 -0
  826. data/src/core/lib/address_utils/sockaddr_utils.h +95 -0
  827. data/src/core/lib/avl/avl.h +452 -88
  828. data/src/core/lib/backoff/backoff.cc +9 -38
  829. data/src/core/lib/backoff/backoff.h +11 -11
  830. data/src/core/lib/channel/call_finalization.h +86 -0
  831. data/src/core/lib/channel/call_tracer.h +88 -0
  832. data/src/core/lib/channel/channel_args.cc +182 -24
  833. data/src/core/lib/channel/channel_args.h +214 -2
  834. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  835. data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
  836. data/src/core/lib/channel/channel_stack.cc +37 -15
  837. data/src/core/lib/channel/channel_stack.h +57 -16
  838. data/src/core/lib/channel/channel_stack_builder.cc +24 -283
  839. data/src/core/lib/channel/channel_stack_builder.h +118 -157
  840. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  841. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  842. data/src/core/lib/channel/channel_trace.cc +14 -18
  843. data/src/core/lib/channel/channel_trace.h +3 -2
  844. data/src/core/lib/channel/channelz.cc +191 -137
  845. data/src/core/lib/channel/channelz.h +76 -53
  846. data/src/core/lib/channel/channelz_registry.cc +37 -19
  847. data/src/core/lib/channel/channelz_registry.h +4 -2
  848. data/src/core/lib/channel/connected_channel.cc +14 -10
  849. data/src/core/lib/channel/connected_channel.h +2 -2
  850. data/src/core/lib/channel/context.h +14 -0
  851. data/src/core/lib/channel/handshaker.cc +14 -54
  852. data/src/core/lib/channel/handshaker.h +10 -28
  853. data/src/core/lib/channel/handshaker_factory.h +10 -2
  854. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  855. data/src/core/lib/channel/handshaker_registry.h +29 -12
  856. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  857. data/src/core/lib/channel/promise_based_filter.h +437 -0
  858. data/src/core/lib/channel/status_util.cc +12 -2
  859. data/src/core/lib/channel/status_util.h +11 -2
  860. data/src/core/lib/compression/compression.cc +22 -110
  861. data/src/core/lib/compression/compression_internal.cc +139 -202
  862. data/src/core/lib/compression/compression_internal.h +67 -71
  863. data/src/core/lib/compression/message_compress.cc +13 -13
  864. data/src/core/lib/compression/message_compress.h +2 -2
  865. data/src/core/lib/config/core_configuration.cc +104 -0
  866. data/src/core/lib/config/core_configuration.h +196 -0
  867. data/src/core/lib/debug/stats.cc +1 -1
  868. data/src/core/lib/debug/stats.h +4 -3
  869. data/src/core/lib/debug/stats_data.cc +17 -19
  870. data/src/core/lib/debug/stats_data.h +6 -8
  871. data/src/core/lib/debug/trace.cc +1 -0
  872. data/src/core/lib/debug/trace.h +4 -3
  873. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +46 -0
  874. data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
  875. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  876. data/src/core/lib/event_engine/event_engine.cc +52 -0
  877. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  878. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  879. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  880. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  881. data/src/core/lib/event_engine/sockaddr.h +44 -0
  882. data/src/core/lib/gpr/alloc.cc +7 -5
  883. data/src/core/lib/gpr/atm.cc +1 -1
  884. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  885. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  886. data/src/core/lib/gpr/env_linux.cc +1 -2
  887. data/src/core/lib/gpr/env_posix.cc +2 -3
  888. data/src/core/lib/gpr/log.cc +61 -19
  889. data/src/core/lib/gpr/log_android.cc +3 -2
  890. data/src/core/lib/gpr/log_linux.cc +30 -13
  891. data/src/core/lib/gpr/log_posix.cc +25 -10
  892. data/src/core/lib/gpr/log_windows.cc +18 -4
  893. data/src/core/lib/gpr/murmur_hash.cc +5 -3
  894. data/src/core/lib/gpr/spinlock.h +10 -2
  895. data/src/core/lib/gpr/string.cc +35 -33
  896. data/src/core/lib/gpr/string.h +11 -10
  897. data/src/core/lib/gpr/sync.cc +6 -6
  898. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  899. data/src/core/lib/gpr/sync_posix.cc +6 -11
  900. data/src/core/lib/gpr/sync_windows.cc +2 -2
  901. data/src/core/lib/gpr/time.cc +17 -15
  902. data/src/core/lib/gpr/time_precise.cc +5 -2
  903. data/src/core/lib/gpr/time_precise.h +6 -2
  904. data/src/core/lib/gpr/time_windows.cc +3 -2
  905. data/src/core/lib/gpr/tls.h +126 -36
  906. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  907. data/src/core/lib/gpr/useful.h +97 -31
  908. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  909. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  910. data/src/core/lib/gprpp/bitset.h +207 -0
  911. data/src/core/lib/gprpp/capture.h +76 -0
  912. data/src/core/lib/gprpp/chunked_vector.h +253 -0
  913. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  914. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  915. data/src/core/lib/gprpp/debug_location.h +2 -0
  916. data/src/core/lib/gprpp/dual_ref_counted.h +330 -0
  917. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  918. data/src/core/lib/gprpp/examine_stack.h +46 -0
  919. data/src/core/lib/gprpp/fork.cc +16 -14
  920. data/src/core/lib/gprpp/fork.h +4 -4
  921. data/src/core/lib/gprpp/global_config.h +1 -2
  922. data/src/core/lib/gprpp/global_config_env.cc +18 -16
  923. data/src/core/lib/gprpp/global_config_env.h +2 -2
  924. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  925. data/src/core/lib/gprpp/manual_constructor.h +12 -10
  926. data/src/core/lib/gprpp/match.h +73 -0
  927. data/src/core/lib/gprpp/memory.h +9 -3
  928. data/src/core/lib/gprpp/mpscq.cc +9 -9
  929. data/src/core/lib/gprpp/mpscq.h +6 -5
  930. data/src/core/lib/gprpp/orphanable.h +11 -15
  931. data/src/core/lib/gprpp/overload.h +59 -0
  932. data/src/core/lib/gprpp/ref_counted.h +125 -86
  933. data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
  934. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  935. data/src/core/lib/gprpp/stat.h +38 -0
  936. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  937. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  938. data/src/core/lib/gprpp/status_helper.cc +435 -0
  939. data/src/core/lib/gprpp/status_helper.h +181 -0
  940. data/src/core/lib/gprpp/sync.h +106 -43
  941. data/src/core/lib/gprpp/table.h +434 -0
  942. data/src/core/lib/gprpp/thd.h +3 -3
  943. data/src/core/lib/gprpp/thd_posix.cc +47 -42
  944. data/src/core/lib/gprpp/thd_windows.cc +7 -12
  945. data/src/core/lib/gprpp/time.cc +198 -0
  946. data/src/core/lib/gprpp/time.h +292 -0
  947. data/src/core/lib/gprpp/time_util.cc +77 -0
  948. data/src/core/lib/gprpp/time_util.h +42 -0
  949. data/src/core/lib/http/format_request.cc +29 -25
  950. data/src/core/lib/http/format_request.h +8 -6
  951. data/src/core/lib/http/httpcli.cc +304 -211
  952. data/src/core/lib/http/httpcli.h +183 -86
  953. data/src/core/lib/http/httpcli_security_connector.cc +75 -85
  954. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  955. data/src/core/lib/http/parser.cc +145 -54
  956. data/src/core/lib/http/parser.h +20 -6
  957. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  958. data/src/core/lib/iomgr/buffer_list.h +23 -25
  959. data/src/core/lib/iomgr/call_combiner.cc +60 -25
  960. data/src/core/lib/iomgr/call_combiner.h +12 -14
  961. data/src/core/lib/iomgr/cfstream_handle.cc +7 -6
  962. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  963. data/src/core/lib/iomgr/closure.h +33 -12
  964. data/src/core/lib/iomgr/combiner.cc +48 -37
  965. data/src/core/lib/iomgr/combiner.h +3 -2
  966. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  967. data/src/core/lib/iomgr/endpoint.cc +6 -6
  968. data/src/core/lib/iomgr/endpoint.h +10 -9
  969. data/src/core/lib/iomgr/endpoint_cfstream.cc +56 -60
  970. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  971. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  972. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
  973. data/src/core/lib/iomgr/endpoint_pair_posix.cc +19 -17
  974. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  975. data/src/core/lib/iomgr/error.cc +287 -111
  976. data/src/core/lib/iomgr/error.h +278 -114
  977. data/src/core/lib/iomgr/error_cfstream.cc +17 -10
  978. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  979. data/src/core/lib/iomgr/error_internal.h +7 -2
  980. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  981. data/src/core/lib/iomgr/ev_apple.h +1 -1
  982. data/src/core/lib/iomgr/ev_epoll1_linux.cc +64 -64
  983. data/src/core/lib/iomgr/ev_poll_posix.cc +82 -79
  984. data/src/core/lib/iomgr/ev_posix.cc +21 -22
  985. data/src/core/lib/iomgr/ev_posix.h +9 -9
  986. data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
  987. data/src/core/lib/iomgr/event_engine/closure.h +42 -0
  988. data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
  989. data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
  990. data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -0
  991. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  992. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  993. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  994. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +47 -0
  995. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
  996. data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
  997. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  998. data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
  999. data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
  1000. data/src/core/lib/iomgr/exec_ctx.cc +30 -99
  1001. data/src/core/lib/iomgr/exec_ctx.h +42 -63
  1002. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  1003. data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
  1004. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  1005. data/src/core/lib/iomgr/executor/threadpool.h +8 -7
  1006. data/src/core/lib/iomgr/executor.cc +37 -45
  1007. data/src/core/lib/iomgr/executor.h +4 -4
  1008. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  1009. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  1010. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1011. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  1012. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1013. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1014. data/src/core/lib/iomgr/iomgr.cc +6 -4
  1015. data/src/core/lib/iomgr/iomgr.h +3 -3
  1016. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1017. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1018. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1019. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1020. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1021. data/src/core/lib/iomgr/load_file.cc +6 -6
  1022. data/src/core/lib/iomgr/load_file.h +2 -2
  1023. data/src/core/lib/iomgr/lockfree_event.cc +38 -15
  1024. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  1025. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1026. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1027. data/src/core/lib/iomgr/pollset.cc +5 -5
  1028. data/src/core/lib/iomgr/pollset.h +9 -9
  1029. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1030. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1031. data/src/core/lib/iomgr/port.h +9 -37
  1032. data/src/core/lib/iomgr/python_util.h +6 -5
  1033. data/src/core/lib/iomgr/resolve_address.cc +10 -24
  1034. data/src/core/lib/iomgr/resolve_address.h +48 -43
  1035. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1036. data/src/core/lib/iomgr/resolve_address_posix.cc +91 -83
  1037. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  1038. data/src/core/lib/iomgr/resolve_address_windows.cc +106 -89
  1039. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  1040. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1041. data/src/core/lib/iomgr/sockaddr.h +2 -1
  1042. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1043. data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
  1044. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1045. data/src/core/lib/iomgr/socket_mutator.cc +20 -6
  1046. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1047. data/src/core/lib/iomgr/socket_utils_common_posix.cc +124 -99
  1048. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1049. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1050. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1051. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1052. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  1053. data/src/core/lib/iomgr/tcp_client.cc +4 -4
  1054. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1055. data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -37
  1056. data/src/core/lib/iomgr/tcp_client_posix.cc +51 -67
  1057. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1058. data/src/core/lib/iomgr/tcp_client_windows.cc +21 -21
  1059. data/src/core/lib/iomgr/tcp_posix.cc +256 -209
  1060. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1061. data/src/core/lib/iomgr/tcp_server.cc +9 -10
  1062. data/src/core/lib/iomgr/tcp_server.h +21 -17
  1063. data/src/core/lib/iomgr/tcp_server_posix.cc +98 -86
  1064. data/src/core/lib/iomgr/tcp_server_utils_posix.h +36 -32
  1065. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +28 -27
  1066. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +14 -19
  1067. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1068. data/src/core/lib/iomgr/tcp_server_windows.cc +38 -41
  1069. data/src/core/lib/iomgr/tcp_windows.cc +56 -57
  1070. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1071. data/src/core/lib/iomgr/timer.cc +3 -2
  1072. data/src/core/lib/iomgr/timer.h +17 -8
  1073. data/src/core/lib/iomgr/timer_generic.cc +129 -139
  1074. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1075. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1076. data/src/core/lib/iomgr/timer_manager.cc +19 -18
  1077. data/src/core/lib/iomgr/unix_sockets_posix.cc +33 -41
  1078. data/src/core/lib/iomgr/unix_sockets_posix.h +9 -6
  1079. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +15 -11
  1080. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1081. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1082. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
  1083. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1084. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1085. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1086. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1087. data/src/core/lib/json/json.h +13 -3
  1088. data/src/core/lib/json/json_reader.cc +112 -70
  1089. data/src/core/lib/json/json_util.cc +126 -0
  1090. data/src/core/lib/json/json_util.h +154 -0
  1091. data/src/core/lib/json/json_writer.cc +2 -4
  1092. data/src/core/lib/matchers/matchers.cc +327 -0
  1093. data/src/core/lib/matchers/matchers.h +160 -0
  1094. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1095. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1096. data/src/core/lib/promise/activity.cc +121 -0
  1097. data/src/core/lib/promise/activity.h +540 -0
  1098. data/src/core/lib/promise/arena_promise.h +188 -0
  1099. data/src/core/lib/promise/call_push_pull.h +144 -0
  1100. data/src/core/lib/promise/context.h +86 -0
  1101. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1102. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  1103. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1104. data/src/core/lib/promise/detail/status.h +50 -0
  1105. data/src/core/lib/promise/detail/switch.h +1455 -0
  1106. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1107. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1108. data/src/core/lib/promise/latch.h +104 -0
  1109. data/src/core/lib/promise/loop.h +134 -0
  1110. data/src/core/lib/promise/map.h +88 -0
  1111. data/src/core/lib/promise/poll.h +66 -0
  1112. data/src/core/lib/promise/promise.h +95 -0
  1113. data/src/core/lib/promise/race.h +84 -0
  1114. data/src/core/lib/promise/seq.h +89 -0
  1115. data/src/core/lib/promise/sleep.cc +74 -0
  1116. data/src/core/lib/promise/sleep.h +66 -0
  1117. data/src/core/lib/promise/try_seq.h +157 -0
  1118. data/src/core/lib/resolver/resolver.cc +79 -0
  1119. data/src/core/lib/resolver/resolver.h +135 -0
  1120. data/src/core/lib/resolver/resolver_factory.h +76 -0
  1121. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1122. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1123. data/src/core/lib/resolver/server_address.cc +170 -0
  1124. data/src/core/lib/resolver/server_address.h +144 -0
  1125. data/src/core/lib/resource_quota/api.cc +83 -0
  1126. data/src/core/lib/resource_quota/api.h +40 -0
  1127. data/src/core/lib/resource_quota/arena.cc +107 -0
  1128. data/src/core/lib/resource_quota/arena.h +142 -0
  1129. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  1130. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  1131. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1132. data/src/core/lib/resource_quota/resource_quota.h +66 -0
  1133. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  1134. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  1135. data/src/core/lib/resource_quota/trace.cc +19 -0
  1136. data/src/core/lib/resource_quota/trace.h +24 -0
  1137. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  1138. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1139. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1140. data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
  1141. data/src/core/lib/security/authorization/evaluate_args.h +92 -0
  1142. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1143. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1144. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  1145. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1146. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1147. data/src/core/lib/security/authorization/matchers.h +211 -0
  1148. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1149. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1150. data/src/core/lib/security/context/security_context.cc +19 -13
  1151. data/src/core/lib/security/context/security_context.h +12 -3
  1152. data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -6
  1153. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1154. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  1155. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1156. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1157. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1158. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  1159. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1160. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  1161. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1162. data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
  1163. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  1164. data/src/core/lib/security/credentials/credentials.cc +18 -17
  1165. data/src/core/lib/security/credentials/credentials.h +92 -90
  1166. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +419 -0
  1167. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
  1168. data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
  1169. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  1170. data/src/core/lib/security/credentials/external/external_account_credentials.cc +544 -0
  1171. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  1172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  1173. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  1174. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +230 -0
  1175. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +61 -0
  1176. data/src/core/lib/security/credentials/fake/fake_credentials.cc +26 -29
  1177. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1178. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
  1179. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +169 -82
  1180. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  1181. data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
  1182. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1183. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +63 -0
  1184. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1185. data/src/core/lib/security/credentials/jwt/json_token.cc +10 -12
  1186. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1187. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +61 -53
  1188. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +31 -18
  1189. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -62
  1190. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1191. data/src/core/lib/security/credentials/local/local_credentials.cc +8 -7
  1192. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1193. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +216 -251
  1194. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +67 -38
  1195. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -158
  1196. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1197. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -22
  1198. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +26 -6
  1199. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
  1200. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -0
  1201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
  1202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +195 -0
  1203. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
  1204. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
  1205. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +62 -184
  1206. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +98 -294
  1207. data/src/core/lib/security/credentials/tls/tls_credentials.cc +40 -21
  1208. data/src/core/lib/security/credentials/tls/tls_credentials.h +9 -3
  1209. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  1210. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  1211. data/src/core/lib/security/credentials/xds/xds_credentials.cc +237 -0
  1212. data/src/core/lib/security/credentials/xds/xds_credentials.h +100 -0
  1213. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +23 -19
  1214. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1215. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +37 -43
  1216. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  1217. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +111 -0
  1218. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +92 -0
  1219. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  1220. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1221. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1222. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  1223. data/src/core/lib/security/security_connector/local/local_security_connector.cc +35 -27
  1224. data/src/core/lib/security/security_connector/security_connector.cc +14 -18
  1225. data/src/core/lib/security/security_connector/security_connector.h +38 -27
  1226. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +43 -32
  1227. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +6 -2
  1228. data/src/core/lib/security/security_connector/ssl_utils.cc +119 -65
  1229. data/src/core/lib/security/security_connector/ssl_utils.h +40 -40
  1230. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +646 -423
  1231. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +187 -104
  1232. data/src/core/lib/security/transport/auth_filters.h +37 -8
  1233. data/src/core/lib/security/transport/client_auth_filter.cc +102 -358
  1234. data/src/core/lib/security/transport/secure_endpoint.cc +214 -149
  1235. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1236. data/src/core/lib/security/transport/security_handshaker.cc +172 -94
  1237. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  1238. data/src/core/lib/security/transport/server_auth_filter.cc +58 -47
  1239. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1240. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1241. data/src/core/lib/security/util/json_util.cc +10 -13
  1242. data/src/core/lib/security/util/json_util.h +2 -1
  1243. data/src/core/lib/service_config/service_config.h +82 -0
  1244. data/src/core/lib/service_config/service_config_call_data.h +72 -0
  1245. data/src/core/lib/service_config/service_config_impl.cc +230 -0
  1246. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1247. data/src/core/lib/service_config/service_config_parser.cc +93 -0
  1248. data/src/core/lib/service_config/service_config_parser.h +106 -0
  1249. data/src/core/lib/slice/percent_encoding.cc +84 -97
  1250. data/src/core/lib/slice/percent_encoding.h +23 -28
  1251. data/src/core/lib/slice/slice.cc +111 -181
  1252. data/src/core/lib/slice/slice.h +384 -0
  1253. data/src/core/lib/slice/slice_api.cc +39 -0
  1254. data/src/core/lib/slice/slice_buffer.cc +12 -8
  1255. data/src/core/lib/slice/slice_internal.h +17 -277
  1256. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1257. data/src/core/lib/slice/slice_refcount.h +46 -0
  1258. data/src/core/lib/slice/slice_refcount_base.h +61 -0
  1259. data/src/core/lib/slice/slice_split.cc +100 -0
  1260. data/src/core/lib/slice/slice_split.h +40 -0
  1261. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  1262. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  1263. data/src/core/lib/surface/api_trace.cc +2 -1
  1264. data/src/core/lib/surface/api_trace.h +1 -0
  1265. data/src/core/lib/surface/builtins.cc +49 -0
  1266. data/src/core/lib/surface/builtins.h +26 -0
  1267. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  1268. data/src/core/lib/surface/call.cc +1171 -1248
  1269. data/src/core/lib/surface/call.h +16 -24
  1270. data/src/core/lib/surface/call_details.cc +10 -10
  1271. data/src/core/lib/surface/call_log_batch.cc +2 -2
  1272. data/src/core/lib/surface/channel.cc +96 -135
  1273. data/src/core/lib/surface/channel.h +31 -22
  1274. data/src/core/lib/surface/channel_init.cc +22 -76
  1275. data/src/core/lib/surface/channel_init.h +44 -40
  1276. data/src/core/lib/surface/channel_ping.cc +2 -3
  1277. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  1278. data/src/core/lib/surface/completion_queue.cc +154 -162
  1279. data/src/core/lib/surface/completion_queue.h +18 -17
  1280. data/src/core/lib/surface/completion_queue_factory.cc +3 -3
  1281. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  1282. data/src/core/lib/surface/event_string.cc +1 -0
  1283. data/src/core/lib/surface/init.cc +121 -83
  1284. data/src/core/lib/surface/init.h +10 -4
  1285. data/src/core/lib/surface/lame_client.cc +80 -72
  1286. data/src/core/lib/surface/lame_client.h +5 -0
  1287. data/src/core/lib/surface/metadata_array.cc +2 -2
  1288. data/src/core/lib/surface/server.cc +1142 -1373
  1289. data/src/core/lib/surface/server.h +467 -71
  1290. data/src/core/lib/surface/validate_metadata.cc +55 -24
  1291. data/src/core/lib/surface/validate_metadata.h +6 -2
  1292. data/src/core/lib/surface/version.cc +2 -2
  1293. data/src/core/lib/transport/bdp_estimator.cc +11 -12
  1294. data/src/core/lib/transport/bdp_estimator.h +4 -3
  1295. data/src/core/lib/transport/byte_stream.cc +11 -5
  1296. data/src/core/lib/transport/byte_stream.h +12 -11
  1297. data/src/core/lib/transport/connectivity_state.cc +27 -19
  1298. data/src/core/lib/transport/connectivity_state.h +28 -14
  1299. data/src/core/lib/transport/error_utils.cc +73 -21
  1300. data/src/core/lib/transport/error_utils.h +17 -4
  1301. data/src/core/lib/transport/metadata_batch.h +1355 -152
  1302. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1303. data/src/core/lib/transport/parsed_metadata.h +401 -0
  1304. data/src/core/lib/transport/pid_controller.cc +4 -4
  1305. data/src/core/lib/transport/status_conversion.cc +2 -2
  1306. data/src/core/lib/transport/status_conversion.h +1 -1
  1307. data/src/core/lib/transport/timeout_encoding.cc +208 -71
  1308. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1309. data/src/core/lib/transport/transport.cc +18 -36
  1310. data/src/core/lib/transport/transport.h +129 -15
  1311. data/src/core/lib/transport/transport_impl.h +14 -0
  1312. data/src/core/lib/transport/transport_op_string.cc +13 -35
  1313. data/src/core/lib/uri/uri_parser.cc +305 -254
  1314. data/src/core/lib/uri/uri_parser.h +92 -38
  1315. data/src/core/plugin_registry/grpc_plugin_registry.cc +76 -68
  1316. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1317. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1318. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  1319. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1320. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1321. data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
  1322. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +77 -68
  1323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1324. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +103 -64
  1326. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1327. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1328. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1329. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1330. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +5 -5
  1331. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1332. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  1335. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
  1336. data/src/core/tsi/fake_transport_security.cc +32 -12
  1337. data/src/core/tsi/local_transport_security.cc +46 -87
  1338. data/src/core/tsi/local_transport_security.h +6 -10
  1339. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1340. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1341. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1342. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  1343. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1344. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +9 -9
  1345. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  1346. data/src/core/tsi/ssl_transport_security.cc +422 -129
  1347. data/src/core/tsi/ssl_transport_security.h +68 -16
  1348. data/src/core/tsi/transport_security.cc +25 -11
  1349. data/src/core/tsi/transport_security.h +16 -1
  1350. data/src/core/tsi/transport_security_grpc.h +1 -0
  1351. data/src/core/tsi/transport_security_interface.h +34 -1
  1352. data/src/ruby/bin/math_services_pb.rb +5 -5
  1353. data/src/ruby/ext/grpc/extconf.rb +34 -11
  1354. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1355. data/src/ruby/ext/grpc/rb_call.c +8 -7
  1356. data/src/ruby/ext/grpc/rb_call.h +4 -0
  1357. data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
  1358. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1359. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1360. data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
  1361. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1362. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1363. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1364. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1365. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1366. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1367. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1368. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +76 -48
  1369. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +130 -88
  1370. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1371. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1372. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1373. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1374. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1375. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1376. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1377. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1378. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  1379. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  1380. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1381. data/src/ruby/lib/grpc/version.rb +1 -1
  1382. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1383. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
  1384. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
  1385. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1386. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
  1387. data/src/ruby/pb/test/client.rb +769 -0
  1388. data/src/ruby/pb/test/server.rb +252 -0
  1389. data/src/ruby/pb/test/xds_client.rb +415 -0
  1390. data/src/ruby/spec/call_spec.rb +1 -1
  1391. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  1392. data/src/ruby/spec/channel_spec.rb +17 -6
  1393. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1394. data/src/ruby/spec/client_server_spec.rb +1 -1
  1395. data/src/ruby/spec/errors_spec.rb +1 -1
  1396. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  1397. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1398. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1399. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  1400. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  1401. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  1402. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  1403. data/src/ruby/spec/pb/codegen/package_option_spec.rb +27 -7
  1404. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1405. data/src/ruby/spec/server_spec.rb +22 -0
  1406. data/src/ruby/spec/support/services.rb +10 -4
  1407. data/src/ruby/spec/user_agent_spec.rb +74 -0
  1408. data/third_party/abseil-cpp/absl/algorithm/container.h +1774 -0
  1409. data/third_party/abseil-cpp/absl/base/attributes.h +169 -55
  1410. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1411. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  1412. data/third_party/abseil-cpp/absl/base/config.h +150 -49
  1413. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -335
  1414. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
  1415. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1416. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1417. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1418. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  1419. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  1420. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  1421. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1422. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
  1423. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
  1424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
  1425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +36 -31
  1426. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1427. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
  1428. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1429. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1430. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1431. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +97 -5
  1432. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1433. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1434. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1435. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1436. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1437. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1438. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1439. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +7 -7
  1440. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1441. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1442. data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
  1443. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1444. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1445. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1446. data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
  1447. data/third_party/abseil-cpp/absl/container/fixed_array.h +527 -0
  1448. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1449. data/third_party/abseil-cpp/absl/container/inlined_vector.h +141 -134
  1450. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  1451. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1452. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  1453. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +163 -0
  1454. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  1455. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  1456. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +190 -0
  1457. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +281 -0
  1458. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  1459. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  1460. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1461. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  1462. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  1463. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +67 -0
  1464. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +2034 -0
  1465. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  1466. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  1467. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1959 -0
  1468. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  1469. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +383 -0
  1470. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +138 -0
  1471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
  1472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +87 -0
  1474. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1475. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1476. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
  1477. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1478. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1479. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1480. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +364 -0
  1481. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
  1482. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +191 -0
  1483. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1484. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
  1485. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1486. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +38 -0
  1487. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1488. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1489. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1574 -0
  1490. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1491. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1492. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1493. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1494. data/third_party/abseil-cpp/absl/functional/function_ref.h +142 -0
  1495. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1496. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1497. data/third_party/abseil-cpp/absl/hash/hash.h +347 -0
  1498. data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
  1499. data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  1500. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +69 -0
  1501. data/third_party/abseil-cpp/absl/hash/internal/hash.h +1096 -0
  1502. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1503. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1504. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1505. data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
  1506. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1507. data/third_party/abseil-cpp/absl/numeric/int128.cc +16 -37
  1508. data/third_party/abseil-cpp/absl/numeric/int128.h +159 -85
  1509. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1510. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1511. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1512. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1513. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1514. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1515. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1516. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1517. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1518. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1519. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1520. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1521. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1522. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1523. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1524. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1525. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1526. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1527. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1528. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1529. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1530. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1531. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1532. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1533. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1534. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1535. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1536. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1537. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1538. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1539. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1540. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1541. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1542. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1543. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1544. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1545. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1546. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1547. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1548. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1549. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1550. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1551. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1552. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1553. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1554. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1555. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1556. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1557. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1558. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1559. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1560. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1561. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
  1562. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1563. data/third_party/abseil-cpp/absl/status/status.cc +444 -0
  1564. data/third_party/abseil-cpp/absl/status/status.h +882 -0
  1565. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1566. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1567. data/third_party/abseil-cpp/absl/status/statusor.cc +103 -0
  1568. data/third_party/abseil-cpp/absl/status/statusor.h +770 -0
  1569. data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
  1570. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1571. data/third_party/abseil-cpp/absl/strings/cord.cc +2047 -0
  1572. data/third_party/abseil-cpp/absl/strings/cord.h +1521 -0
  1573. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1574. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1575. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1576. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1577. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +9 -9
  1578. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1579. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +620 -0
  1580. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1581. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1582. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1583. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1584. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1585. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1586. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1587. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1588. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1589. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1590. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1591. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1592. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1593. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1594. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1595. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1596. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1597. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1598. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1599. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1600. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1601. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1602. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1603. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +158 -64
  1604. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
  1605. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +30 -22
  1606. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
  1607. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +37 -13
  1608. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +183 -153
  1609. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1610. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1611. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1612. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +82 -77
  1613. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +51 -27
  1614. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1615. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1616. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1617. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1618. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1619. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1620. data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
  1621. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1622. data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
  1623. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1624. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1625. data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
  1626. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1627. data/third_party/abseil-cpp/absl/strings/string_view.h +143 -55
  1628. data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
  1629. data/third_party/abseil-cpp/absl/strings/substitute.h +109 -81
  1630. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1631. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1632. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +67 -0
  1633. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +101 -0
  1634. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1635. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1636. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1637. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1638. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1639. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
  1640. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1641. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1642. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
  1643. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
  1644. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
  1645. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
  1646. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1647. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1648. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -11
  1649. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1650. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1651. data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
  1652. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1653. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
  1654. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +97 -22
  1655. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1656. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1657. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1658. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1659. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1660. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1661. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +219 -150
  1662. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1663. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1664. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1665. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1666. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
  1667. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1668. data/third_party/abseil-cpp/absl/time/time.h +107 -75
  1669. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1670. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1671. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1672. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1673. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1674. data/third_party/abseil-cpp/absl/types/span.h +51 -38
  1675. data/third_party/abseil-cpp/absl/types/variant.h +866 -0
  1676. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1677. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1678. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1679. data/third_party/boringssl-with-bazel/err_data.c +775 -721
  1680. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +72 -59
  1681. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1682. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1683. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1684. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1685. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1686. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1687. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +70 -57
  1688. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1689. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1690. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1691. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1692. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +6 -6
  1693. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
  1694. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1695. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1696. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
  1697. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1698. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +25 -29
  1699. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1700. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +6 -1
  1701. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1702. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1704. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1705. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1706. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1707. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1708. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1709. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1710. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1711. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1712. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1713. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1714. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1715. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1716. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1717. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1718. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1719. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1720. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1721. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1722. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1723. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1724. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1725. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1726. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1727. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1728. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1729. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
  1730. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1731. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1732. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1733. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1734. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1735. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1736. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1737. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1738. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1739. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
  1740. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1741. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  1742. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1743. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  1744. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  1745. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1746. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  1747. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +161 -2
  1748. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1749. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1750. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1753. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1754. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1755. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +26 -5
  1756. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1758. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
  1760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1762. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1763. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1764. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
  1765. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1766. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1767. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1768. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1769. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  1771. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  1772. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  1773. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1775. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1776. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1777. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1778. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1779. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1780. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1781. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1782. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1783. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1784. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1785. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1786. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1787. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1788. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1789. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  1790. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +80 -43
  1791. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
  1792. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +238 -18
  1794. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1795. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1796. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1797. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1799. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1800. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1801. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1802. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1803. data/third_party/boringssl-with-bazel/src/crypto/mem.c +75 -24
  1804. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1805. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1806. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1807. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1808. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1809. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1810. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1811. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1812. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1813. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -1
  1814. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +132 -54
  1816. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1817. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1818. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1819. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1821. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1822. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1823. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1824. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1825. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1826. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1827. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1828. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1829. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1830. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  1831. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  1832. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  1833. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1834. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1835. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +11 -1
  1836. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +5 -21
  1837. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1838. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1839. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1840. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1841. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1842. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
  1843. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1844. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
  1845. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1846. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1847. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1848. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
  1849. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
  1850. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1851. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
  1852. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
  1853. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
  1854. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
  1855. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1856. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
  1857. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +82 -113
  1858. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1859. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +99 -25
  1860. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
  1861. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1862. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1863. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
  1864. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1865. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +52 -28
  1866. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1867. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
  1868. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1869. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
  1870. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1871. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
  1872. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1873. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +75 -15
  1874. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1875. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1876. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +244 -11
  1877. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1878. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
  1879. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1880. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1881. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1882. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1883. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1884. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
  1885. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1886. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
  1887. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1888. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1889. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1890. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1891. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1892. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1893. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1894. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1895. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1896. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
  1897. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
  1898. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  1899. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1900. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  1901. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1902. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
  1903. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1801 -673
  1904. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1905. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
  1906. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1907. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
  1908. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1909. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1910. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1911. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1912. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +42 -7
  1913. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1914. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1915. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  1916. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1917. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +66 -32
  1918. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
  1919. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1920. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1921. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1922. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1923. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1924. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +108 -75
  1925. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1926. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1927. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1928. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1929. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1930. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1931. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1932. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1933. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
  1934. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1935. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1936. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1937. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1938. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1939. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1940. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +570 -144
  1941. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +53 -38
  1942. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1943. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2041 -829
  1944. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1945. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
  1946. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1947. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1948. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1949. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1950. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1951. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
  1952. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +108 -53
  1953. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +317 -221
  1954. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +187 -36
  1955. data/third_party/boringssl-with-bazel/src/ssl/internal.h +554 -173
  1956. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1957. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1958. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1959. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
  1960. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
  1961. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
  1962. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1963. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +167 -110
  1964. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1965. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -138
  1966. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1967. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1968. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +16 -8
  1969. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1970. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
  1971. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
  1972. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +316 -211
  1973. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1974. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +398 -145
  1975. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1976. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1977. data/third_party/cares/cares/include/ares.h +742 -0
  1978. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1979. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1980. data/third_party/cares/cares/include/ares_version.h +24 -0
  1981. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1982. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1983. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1984. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1985. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1986. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1987. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1988. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1989. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1990. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1991. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1992. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1993. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1994. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1995. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1996. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1997. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1998. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1999. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2000. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  2001. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  2002. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  2003. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2004. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  2005. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  2006. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  2007. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2008. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2009. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  2010. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2011. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  2012. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  2013. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  2014. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2015. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2016. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2017. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  2018. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2019. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2020. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2021. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  2022. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  2023. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  2024. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  2025. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  2026. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  2027. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  2028. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  2029. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  2030. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  2031. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2032. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2033. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  2034. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  2035. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  2036. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  2037. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  2038. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  2039. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2040. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2041. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2042. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2043. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2044. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2045. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2046. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2047. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2048. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2049. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2050. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2051. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2052. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2053. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2054. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2055. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2056. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2057. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  2058. data/third_party/re2/re2/bitmap256.h +117 -0
  2059. data/third_party/re2/re2/bitstate.cc +385 -0
  2060. data/third_party/re2/re2/compile.cc +1261 -0
  2061. data/third_party/re2/re2/dfa.cc +2118 -0
  2062. data/third_party/re2/re2/filtered_re2.cc +137 -0
  2063. data/third_party/re2/re2/filtered_re2.h +114 -0
  2064. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  2065. data/third_party/re2/re2/nfa.cc +713 -0
  2066. data/third_party/re2/re2/onepass.cc +623 -0
  2067. data/third_party/re2/re2/parse.cc +2483 -0
  2068. data/third_party/re2/re2/perl_groups.cc +119 -0
  2069. data/third_party/re2/re2/pod_array.h +55 -0
  2070. data/third_party/re2/re2/prefilter.cc +711 -0
  2071. data/third_party/re2/re2/prefilter.h +108 -0
  2072. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  2073. data/third_party/re2/re2/prefilter_tree.h +139 -0
  2074. data/third_party/re2/re2/prog.cc +1166 -0
  2075. data/third_party/re2/re2/prog.h +455 -0
  2076. data/third_party/re2/re2/re2.cc +1331 -0
  2077. data/third_party/re2/re2/re2.h +1017 -0
  2078. data/third_party/re2/re2/regexp.cc +987 -0
  2079. data/third_party/re2/re2/regexp.h +665 -0
  2080. data/third_party/re2/re2/set.cc +176 -0
  2081. data/third_party/re2/re2/set.h +85 -0
  2082. data/third_party/re2/re2/simplify.cc +665 -0
  2083. data/third_party/re2/re2/sparse_array.h +392 -0
  2084. data/third_party/re2/re2/sparse_set.h +264 -0
  2085. data/third_party/re2/re2/stringpiece.cc +65 -0
  2086. data/third_party/re2/re2/stringpiece.h +210 -0
  2087. data/third_party/re2/re2/tostring.cc +351 -0
  2088. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  2089. data/third_party/re2/re2/unicode_casefold.h +78 -0
  2090. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  2091. data/third_party/re2/re2/unicode_groups.h +67 -0
  2092. data/third_party/re2/re2/walker-inl.h +246 -0
  2093. data/third_party/re2/util/benchmark.h +156 -0
  2094. data/third_party/re2/util/flags.h +26 -0
  2095. data/third_party/re2/util/logging.h +109 -0
  2096. data/third_party/re2/util/malloc_counter.h +19 -0
  2097. data/third_party/re2/util/mix.h +41 -0
  2098. data/third_party/re2/util/mutex.h +148 -0
  2099. data/third_party/re2/util/pcre.cc +1025 -0
  2100. data/third_party/re2/util/pcre.h +681 -0
  2101. data/third_party/re2/util/rune.cc +260 -0
  2102. data/third_party/re2/util/strutil.cc +149 -0
  2103. data/third_party/re2/util/strutil.h +21 -0
  2104. data/third_party/re2/util/test.h +50 -0
  2105. data/third_party/re2/util/utf.h +44 -0
  2106. data/third_party/re2/util/util.h +42 -0
  2107. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2108. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2109. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2110. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2111. data/third_party/upb/upb/decode.c +997 -481
  2112. data/third_party/upb/upb/decode.h +79 -6
  2113. data/third_party/upb/upb/decode_fast.c +1055 -0
  2114. data/third_party/upb/upb/decode_fast.h +153 -0
  2115. data/third_party/upb/upb/decode_internal.h +211 -0
  2116. data/third_party/upb/upb/def.c +3261 -0
  2117. data/third_party/upb/upb/def.h +409 -0
  2118. data/third_party/upb/upb/def.hpp +438 -0
  2119. data/third_party/upb/upb/encode.c +459 -233
  2120. data/third_party/upb/upb/encode.h +56 -6
  2121. data/third_party/upb/upb/json_encode.c +776 -0
  2122. data/third_party/upb/upb/json_encode.h +62 -0
  2123. data/third_party/upb/upb/msg.c +387 -70
  2124. data/third_party/upb/upb/msg.h +90 -45
  2125. data/third_party/upb/upb/msg_internal.h +831 -0
  2126. data/third_party/upb/upb/port_def.inc +195 -84
  2127. data/third_party/upb/upb/port_undef.inc +48 -7
  2128. data/third_party/upb/upb/reflection.c +480 -0
  2129. data/third_party/upb/upb/reflection.h +220 -0
  2130. data/third_party/upb/upb/reflection.hpp +37 -0
  2131. data/third_party/upb/upb/table.c +441 -428
  2132. data/third_party/upb/upb/table_internal.h +385 -0
  2133. data/third_party/upb/upb/text_encode.c +472 -0
  2134. data/third_party/upb/upb/text_encode.h +64 -0
  2135. data/third_party/upb/upb/upb.c +255 -154
  2136. data/third_party/upb/upb/upb.h +235 -226
  2137. data/third_party/upb/upb/upb.hpp +115 -0
  2138. data/third_party/upb/upb/upb_internal.h +68 -0
  2139. data/third_party/xxhash/xxhash.h +5580 -0
  2140. data/third_party/zlib/crc32.c +966 -292
  2141. data/third_party/zlib/crc32.h +9441 -436
  2142. data/third_party/zlib/deflate.c +78 -30
  2143. data/third_party/zlib/deflate.h +12 -15
  2144. data/third_party/zlib/gzguts.h +3 -2
  2145. data/third_party/zlib/gzlib.c +5 -3
  2146. data/third_party/zlib/gzread.c +5 -7
  2147. data/third_party/zlib/gzwrite.c +25 -13
  2148. data/third_party/zlib/infback.c +2 -1
  2149. data/third_party/zlib/inffast.c +14 -14
  2150. data/third_party/zlib/inflate.c +39 -8
  2151. data/third_party/zlib/inflate.h +3 -2
  2152. data/third_party/zlib/inftrees.c +3 -3
  2153. data/third_party/zlib/trees.c +27 -48
  2154. data/third_party/zlib/zlib.h +123 -100
  2155. data/third_party/zlib/zutil.c +2 -2
  2156. data/third_party/zlib/zutil.h +12 -9
  2157. metadata +1175 -359
  2158. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2159. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -121
  2160. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  2161. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  2162. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  2163. data/src/core/ext/filters/client_channel/parse_address.cc +0 -238
  2164. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  2165. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  2166. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -177
  2167. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  2168. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2169. data/src/core/ext/filters/client_channel/resolver.cc +0 -85
  2170. data/src/core/ext/filters/client_channel/resolver.h +0 -144
  2171. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2172. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2173. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2174. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  2175. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  2176. data/src/core/ext/filters/client_channel/server_address.cc +0 -48
  2177. data/src/core/ext/filters/client_channel/server_address.h +0 -90
  2178. data/src/core/ext/filters/client_channel/service_config.cc +0 -221
  2179. data/src/core/ext/filters/client_channel/service_config.h +0 -123
  2180. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
  2181. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
  2182. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
  2183. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  2184. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  2185. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
  2186. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
  2187. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  2188. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +0 -26
  2189. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  2190. data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2367
  2191. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
  2192. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -115
  2193. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +0 -211
  2194. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2195. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -556
  2196. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2197. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2198. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2199. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2200. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2201. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2202. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2203. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
  2204. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
  2205. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -225
  2206. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2207. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -75
  2208. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2209. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2210. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -246
  2211. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2212. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2213. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2214. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  2215. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  2216. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  2217. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  2218. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  2219. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  2220. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  2221. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  2222. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +0 -28
  2223. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  2224. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  2225. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  2226. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  2227. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  2228. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  2229. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  2230. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  2231. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  2232. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  2233. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  2234. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  2235. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  2236. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  2237. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  2238. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  2239. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  2240. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  2241. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  2242. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  2243. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  2244. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  2245. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  2246. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  2247. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  2248. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  2249. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  2250. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +0 -34
  2251. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  2252. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  2253. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  2254. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -31
  2255. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  2256. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  2257. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  2258. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  2259. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  2260. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  2261. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  2262. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  2263. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  2264. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -31
  2265. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  2266. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  2267. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  2268. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  2269. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  2270. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  2271. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  2272. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  2273. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  2274. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +0 -30
  2275. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  2276. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  2277. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  2278. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  2279. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  2280. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  2281. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  2282. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  2283. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  2284. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +0 -28
  2285. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  2286. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  2287. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  2288. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  2289. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  2290. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  2291. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  2292. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  2293. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  2294. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -24
  2295. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  2296. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  2297. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  2298. data/src/core/ext/upb-generated/envoy/type/http.upb.c +0 -17
  2299. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -36
  2300. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  2301. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  2302. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  2303. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  2304. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  2305. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  2306. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  2307. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  2308. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  2309. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  2310. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -29
  2311. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  2312. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  2313. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  2314. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  2315. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -30
  2316. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2317. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -144
  2318. data/src/core/lib/avl/avl.cc +0 -306
  2319. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2320. data/src/core/lib/compression/compression_args.cc +0 -134
  2321. data/src/core/lib/compression/compression_args.h +0 -56
  2322. data/src/core/lib/compression/stream_compression.cc +0 -80
  2323. data/src/core/lib/compression/stream_compression.h +0 -116
  2324. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2325. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2326. data/src/core/lib/compression/stream_compression_identity.cc +0 -92
  2327. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2328. data/src/core/lib/gpr/arena.h +0 -47
  2329. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2330. data/src/core/lib/gpr/tls_msvc.h +0 -52
  2331. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2332. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2333. data/src/core/lib/gprpp/arena.cc +0 -103
  2334. data/src/core/lib/gprpp/arena.h +0 -120
  2335. data/src/core/lib/gprpp/atomic.h +0 -104
  2336. data/src/core/lib/gprpp/map.h +0 -53
  2337. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2338. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1656
  2339. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2340. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2341. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2342. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2343. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2344. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -105
  2345. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2346. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  2347. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2348. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2349. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2350. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2351. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2352. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2353. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2354. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -173
  2355. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2356. data/src/core/lib/iomgr/resource_quota.cc +0 -1013
  2357. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2358. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2359. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -293
  2360. data/src/core/lib/iomgr/sockaddr_utils.h +0 -79
  2361. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2362. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2363. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -163
  2364. data/src/core/lib/iomgr/tcp_custom.cc +0 -370
  2365. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2366. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -485
  2367. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2368. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2369. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2370. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2371. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2372. data/src/core/lib/iomgr/udp_server.h +0 -101
  2373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2374. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  2375. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  2376. data/src/core/lib/slice/slice_hash_table.h +0 -199
  2377. data/src/core/lib/slice/slice_intern.cc +0 -375
  2378. data/src/core/lib/slice/slice_utils.h +0 -200
  2379. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  2380. data/src/core/lib/surface/init_secure.cc +0 -81
  2381. data/src/core/lib/transport/metadata.cc +0 -679
  2382. data/src/core/lib/transport/metadata.h +0 -446
  2383. data/src/core/lib/transport/metadata_batch.cc +0 -392
  2384. data/src/core/lib/transport/static_metadata.cc +0 -1230
  2385. data/src/core/lib/transport/static_metadata.h +0 -597
  2386. data/src/core/lib/transport/status_metadata.cc +0 -61
  2387. data/src/core/lib/transport/status_metadata.h +0 -48
  2388. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  2389. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  2390. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2391. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2392. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2393. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  2401. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3870
  2402. data/third_party/cares/cares/ares.h +0 -670
  2403. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2404. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2405. data/third_party/cares/cares/ares_create_query.c +0 -206
  2406. data/third_party/cares/cares/ares_data.c +0 -222
  2407. data/third_party/cares/cares/ares_data.h +0 -72
  2408. data/third_party/cares/cares/ares_dns.h +0 -103
  2409. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2410. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2411. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2412. data/third_party/cares/cares/ares_getenv.c +0 -30
  2413. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2414. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2415. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2416. data/third_party/cares/cares/ares_getopt.c +0 -122
  2417. data/third_party/cares/cares/ares_getopt.h +0 -53
  2418. data/third_party/cares/cares/ares_init.c +0 -2615
  2419. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2420. data/third_party/cares/cares/ares_library_init.c +0 -195
  2421. data/third_party/cares/cares/ares_library_init.h +0 -43
  2422. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2423. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2424. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2425. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2426. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2427. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2428. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2429. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2430. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2431. data/third_party/cares/cares/ares_private.h +0 -382
  2432. data/third_party/cares/cares/ares_process.c +0 -1473
  2433. data/third_party/cares/cares/ares_query.c +0 -186
  2434. data/third_party/cares/cares/ares_search.c +0 -323
  2435. data/third_party/cares/cares/ares_send.c +0 -137
  2436. data/third_party/cares/cares/ares_setup.h +0 -217
  2437. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2438. data/third_party/cares/cares/ares_version.h +0 -24
  2439. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2440. data/third_party/cares/cares/inet_ntop.c +0 -207
  2441. data/third_party/upb/upb/generated_util.h +0 -105
  2442. data/third_party/upb/upb/port.c +0 -26
  2443. data/third_party/upb/upb/table.int.h +0 -507
@@ -1,20 +1,18 @@
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
- */
1
+ //
2
+ // Copyright 2015-2016 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
18
16
 
19
17
  #include <grpc/support/port_platform.h>
20
18
 
@@ -24,12 +22,21 @@
24
22
  #include <stdlib.h>
25
23
  #include <string.h>
26
24
 
25
+ #include <algorithm>
26
+ #include <atomic>
27
+ #include <iterator>
28
+ #include <list>
29
+ #include <queue>
30
+ #include <utility>
31
+ #include <vector>
32
+
33
+ #include "absl/memory/memory.h"
34
+ #include "absl/types/optional.h"
35
+
27
36
  #include <grpc/support/alloc.h>
28
37
  #include <grpc/support/log.h>
29
38
  #include <grpc/support/string_util.h>
30
39
 
31
- #include <utility>
32
-
33
40
  #include "src/core/lib/channel/channel_args.h"
34
41
  #include "src/core/lib/channel/channelz.h"
35
42
  #include "src/core/lib/channel/connected_channel.h"
@@ -39,43 +46,29 @@
39
46
  #include "src/core/lib/gprpp/mpscq.h"
40
47
  #include "src/core/lib/iomgr/executor.h"
41
48
  #include "src/core/lib/iomgr/iomgr.h"
49
+ #include "src/core/lib/resource_quota/api.h"
42
50
  #include "src/core/lib/slice/slice_internal.h"
43
51
  #include "src/core/lib/surface/api_trace.h"
44
52
  #include "src/core/lib/surface/call.h"
45
53
  #include "src/core/lib/surface/channel.h"
46
54
  #include "src/core/lib/surface/completion_queue.h"
47
55
  #include "src/core/lib/surface/init.h"
48
- #include "src/core/lib/transport/metadata.h"
49
- #include "src/core/lib/transport/static_metadata.h"
50
-
51
- grpc_core::TraceFlag grpc_server_channel_trace(false, "server_channel");
52
-
53
- using grpc_core::LockedMultiProducerSingleConsumerQueue;
54
56
 
55
- namespace {
57
+ namespace grpc_core {
56
58
 
57
- void server_on_recv_initial_metadata(void* ptr, grpc_error* error);
58
- void server_recv_trailing_metadata_ready(void* user_data, grpc_error* error);
59
-
60
- struct listener {
61
- void* arg;
62
- void (*start)(grpc_server* server, void* arg, grpc_pollset** pollsets,
63
- size_t pollset_count);
64
- void (*destroy)(grpc_server* server, void* arg, grpc_closure* closure);
65
- struct listener* next;
66
- intptr_t socket_uuid;
67
- grpc_closure destroy_done;
68
- };
59
+ TraceFlag grpc_server_channel_trace(false, "server_channel");
69
60
 
70
- enum requested_call_type { BATCH_CALL, REGISTERED_CALL };
61
+ //
62
+ // Server::RequestedCall
63
+ //
71
64
 
72
- struct registered_method;
65
+ struct Server::RequestedCall {
66
+ enum class Type { BATCH_CALL, REGISTERED_CALL };
73
67
 
74
- struct requested_call {
75
- requested_call(void* tag_arg, grpc_completion_queue* call_cq,
76
- grpc_call** call_arg, grpc_metadata_array* initial_md,
77
- grpc_call_details* details)
78
- : type(BATCH_CALL),
68
+ RequestedCall(void* tag_arg, grpc_completion_queue* call_cq,
69
+ grpc_call** call_arg, grpc_metadata_array* initial_md,
70
+ grpc_call_details* details)
71
+ : type(Type::BATCH_CALL),
79
72
  tag(tag_arg),
80
73
  cq_bound_to_call(call_cq),
81
74
  call(call_arg),
@@ -84,11 +77,11 @@ struct requested_call {
84
77
  data.batch.details = details;
85
78
  }
86
79
 
87
- requested_call(void* tag_arg, grpc_completion_queue* call_cq,
88
- grpc_call** call_arg, grpc_metadata_array* initial_md,
89
- registered_method* rm, gpr_timespec* deadline,
90
- grpc_byte_buffer** optional_payload)
91
- : type(REGISTERED_CALL),
80
+ RequestedCall(void* tag_arg, grpc_completion_queue* call_cq,
81
+ grpc_call** call_arg, grpc_metadata_array* initial_md,
82
+ RegisteredMethod* rm, gpr_timespec* deadline,
83
+ grpc_byte_buffer** optional_payload)
84
+ : type(Type::REGISTERED_CALL),
92
85
  tag(tag_arg),
93
86
  cq_bound_to_call(call_cq),
94
87
  call(call_arg),
@@ -98,8 +91,8 @@ struct requested_call {
98
91
  data.registered.optional_payload = optional_payload;
99
92
  }
100
93
 
101
- grpc_core::MultiProducerSingleConsumerQueue::Node mpscq_node;
102
- const requested_call_type type;
94
+ MultiProducerSingleConsumerQueue::Node mpscq_node;
95
+ const Type type;
103
96
  void* const tag;
104
97
  grpc_completion_queue* const cq_bound_to_call;
105
98
  grpc_call** const call;
@@ -110,57 +103,40 @@ struct requested_call {
110
103
  grpc_call_details* details;
111
104
  } batch;
112
105
  struct {
113
- registered_method* method;
106
+ RegisteredMethod* method;
114
107
  gpr_timespec* deadline;
115
108
  grpc_byte_buffer** optional_payload;
116
109
  } registered;
117
110
  } data;
118
111
  };
119
112
 
120
- struct channel_registered_method {
121
- registered_method* server_registered_method;
122
- uint32_t flags;
123
- bool has_host;
124
- grpc_core::ExternallyManagedSlice method;
125
- grpc_core::ExternallyManagedSlice host;
126
- };
113
+ //
114
+ // Server::RegisteredMethod
115
+ //
127
116
 
128
- struct channel_data {
129
- grpc_server* server;
130
- grpc_channel* channel;
131
- size_t cq_idx;
132
- /* linked list of all channels on a server */
133
- channel_data* next;
134
- channel_data* prev;
135
- channel_registered_method* registered_methods;
136
- uint32_t registered_method_slots;
137
- uint32_t registered_method_max_probes;
138
- grpc_closure finish_destroy_channel_closure;
139
- intptr_t channelz_socket_uuid;
140
- };
117
+ struct Server::RegisteredMethod {
118
+ RegisteredMethod(
119
+ const char* method_arg, const char* host_arg,
120
+ grpc_server_register_method_payload_handling payload_handling_arg,
121
+ uint32_t flags_arg)
122
+ : method(method_arg == nullptr ? "" : method_arg),
123
+ host(host_arg == nullptr ? "" : host_arg),
124
+ payload_handling(payload_handling_arg),
125
+ flags(flags_arg) {}
141
126
 
142
- struct shutdown_tag {
143
- void* tag;
144
- grpc_completion_queue* cq;
145
- grpc_cq_completion completion;
146
- };
127
+ ~RegisteredMethod() = default;
147
128
 
148
- enum call_state {
149
- /* waiting for metadata */
150
- NOT_STARTED,
151
- /* initial metadata read, not flow controlled in yet */
152
- PENDING,
153
- /* flow controlled in, on completion queue */
154
- ACTIVATED,
155
- /* cancelled before being queued */
156
- ZOMBIED
129
+ const std::string method;
130
+ const std::string host;
131
+ const grpc_server_register_method_payload_handling payload_handling;
132
+ const uint32_t flags;
133
+ // One request matcher per method.
134
+ std::unique_ptr<RequestMatcherInterface> matcher;
157
135
  };
158
136
 
159
- struct call_data;
160
-
161
- grpc_call_error ValidateServerRequest(
162
- grpc_completion_queue* cq_for_notification, void* tag,
163
- grpc_byte_buffer** optional_payload, registered_method* rm);
137
+ //
138
+ // Server::RequestMatcherInterface
139
+ //
164
140
 
165
141
  // RPCs that come in from the transport must be matched against RPC requests
166
142
  // from the application. An incoming request from the application can be matched
@@ -171,7 +147,7 @@ grpc_call_error ValidateServerRequest(
171
147
  // on the request's notification CQ.
172
148
  //
173
149
  // RequestMatcherInterface is the base class to provide this functionality.
174
- class RequestMatcherInterface {
150
+ class Server::RequestMatcherInterface {
175
151
  public:
176
152
  virtual ~RequestMatcherInterface() {}
177
153
 
@@ -182,7 +158,7 @@ class RequestMatcherInterface {
182
158
  // Mark all application-requested RPCs failed if they have not been matched to
183
159
  // an incoming RPC. The error parameter indicates why the RPCs are being
184
160
  // failed (always server shutdown in all current implementations).
185
- virtual void KillRequests(grpc_error* error) = 0;
161
+ virtual void KillRequests(grpc_error_handle error) = 0;
186
162
 
187
163
  // How many request queues are supported by this matcher. This is an abstract
188
164
  // concept that essentially maps to gRPC completion queues.
@@ -194,7 +170,7 @@ class RequestMatcherInterface {
194
170
  // CQ. If there are pending RPCs waiting to be matched, publish one (match it
195
171
  // and notify the CQ).
196
172
  virtual void RequestCallWithPossiblePublish(size_t request_queue_index,
197
- requested_call* call) = 0;
173
+ RequestedCall* call) = 0;
198
174
 
199
175
  // This function is invoked on an incoming RPC, represented by the calld
200
176
  // object. The RequestMatcher will try to match it against an
@@ -203,248 +179,21 @@ class RequestMatcherInterface {
203
179
  // is done starting at the start_request_queue_index parameter in a cyclic
204
180
  // order rather than always starting at 0.
205
181
  virtual void MatchOrQueue(size_t start_request_queue_index,
206
- call_data* calld) = 0;
182
+ CallData* calld) = 0;
207
183
 
208
184
  // Returns the server associated with this request matcher
209
- virtual grpc_server* server() const = 0;
210
- };
211
-
212
- struct call_data {
213
- call_data(grpc_call_element* elem, const grpc_call_element_args& args)
214
- : call(grpc_call_from_top_element(elem)),
215
- call_combiner(args.call_combiner) {
216
- GRPC_CLOSURE_INIT(&server_on_recv_initial_metadata,
217
- ::server_on_recv_initial_metadata, elem,
218
- grpc_schedule_on_exec_ctx);
219
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready,
220
- ::server_recv_trailing_metadata_ready, elem,
221
- grpc_schedule_on_exec_ctx);
222
- }
223
- ~call_data() {
224
- GPR_ASSERT(state != PENDING);
225
- GRPC_ERROR_UNREF(recv_initial_metadata_error);
226
- if (host_set) {
227
- grpc_slice_unref_internal(host);
228
- }
229
- if (path_set) {
230
- grpc_slice_unref_internal(path);
231
- }
232
- grpc_metadata_array_destroy(&initial_metadata);
233
- grpc_byte_buffer_destroy(payload);
234
- }
235
-
236
- grpc_call* call;
237
-
238
- gpr_atm state = NOT_STARTED;
239
-
240
- bool path_set = false;
241
- bool host_set = false;
242
- grpc_slice path;
243
- grpc_slice host;
244
- grpc_millis deadline = GRPC_MILLIS_INF_FUTURE;
245
-
246
- grpc_completion_queue* cq_new = nullptr;
247
-
248
- grpc_metadata_batch* recv_initial_metadata = nullptr;
249
- uint32_t recv_initial_metadata_flags = 0;
250
- grpc_metadata_array initial_metadata =
251
- grpc_metadata_array(); // Zero-initialize the C struct.
252
-
253
- RequestMatcherInterface* matcher = nullptr;
254
- grpc_byte_buffer* payload = nullptr;
255
-
256
- grpc_closure got_initial_metadata;
257
- grpc_closure server_on_recv_initial_metadata;
258
- grpc_closure kill_zombie_closure;
259
- grpc_closure* on_done_recv_initial_metadata;
260
- grpc_closure recv_trailing_metadata_ready;
261
- grpc_error* recv_initial_metadata_error = GRPC_ERROR_NONE;
262
- grpc_closure* original_recv_trailing_metadata_ready;
263
- grpc_error* recv_trailing_metadata_error = GRPC_ERROR_NONE;
264
- bool seen_recv_trailing_metadata_ready = false;
265
-
266
- grpc_closure publish;
267
-
268
- call_data* pending_next = nullptr;
269
- grpc_core::CallCombiner* call_combiner;
270
- };
271
-
272
- struct registered_method {
273
- registered_method(
274
- const char* method_arg, const char* host_arg,
275
- grpc_server_register_method_payload_handling payload_handling_arg,
276
- uint32_t flags_arg)
277
- : method(method_arg == nullptr ? "" : method_arg),
278
- host(host_arg == nullptr ? "" : host_arg),
279
- payload_handling(payload_handling_arg),
280
- flags(flags_arg) {}
281
-
282
- ~registered_method() = default;
283
-
284
- const std::string method;
285
- const std::string host;
286
- const grpc_server_register_method_payload_handling payload_handling;
287
- const uint32_t flags;
288
- /* one request matcher per method */
289
- std::unique_ptr<RequestMatcherInterface> matcher;
290
- registered_method* next;
291
- };
292
-
293
- struct channel_broadcaster {
294
- grpc_channel** channels;
295
- size_t num_channels;
296
- };
297
- } // namespace
298
-
299
- struct grpc_server {
300
- grpc_channel_args* channel_args;
301
-
302
- grpc_resource_user* default_resource_user;
303
-
304
- grpc_completion_queue** cqs;
305
- grpc_pollset** pollsets;
306
- size_t cq_count;
307
- size_t pollset_count;
308
- bool started;
309
-
310
- /* The two following mutexes control access to server-state
311
- mu_global controls access to non-call-related state (e.g., channel state)
312
- mu_call controls access to call-related state (e.g., the call lists)
313
-
314
- If they are ever required to be nested, you must lock mu_global
315
- before mu_call. This is currently used in shutdown processing
316
- (grpc_server_shutdown_and_notify and maybe_finish_shutdown) */
317
- gpr_mu mu_global; /* mutex for server and channel state */
318
- gpr_mu mu_call; /* mutex for call-specific state */
319
-
320
- /* startup synchronization: flag is protected by mu_global, signals whether
321
- we are doing the listener start routine or not */
322
- bool starting;
323
- gpr_cv starting_cv;
324
-
325
- // TODO(vjpai): Convert from a linked-list head pointer to a std::vector once
326
- // grpc_server has a real constructor/destructor
327
- registered_method* registered_methods;
328
- /** one request matcher for unregistered methods */
329
- // TODO(vjpai): Convert to a std::unique_ptr once grpc_server has a real
330
- // constructor and destructor.
331
- RequestMatcherInterface* unregistered_request_matcher;
332
-
333
- gpr_atm shutdown_flag;
334
- uint8_t shutdown_published;
335
- size_t num_shutdown_tags;
336
- shutdown_tag* shutdown_tags;
337
-
338
- channel_data root_channel_data;
339
-
340
- listener* listeners;
341
- int listeners_destroyed;
342
- grpc_core::RefCount internal_refcount;
343
-
344
- /** when did we print the last shutdown progress message */
345
- gpr_timespec last_shutdown_message_time;
346
-
347
- grpc_core::RefCountedPtr<grpc_core::channelz::ServerNode> channelz_server;
348
- };
349
-
350
- #define SERVER_FROM_CALL_ELEM(elem) \
351
- (((channel_data*)(elem)->channel_data)->server)
352
-
353
- namespace {
354
- void publish_call(grpc_server* server, call_data* calld, size_t cq_idx,
355
- requested_call* rc);
356
- void fail_call(grpc_server* server, size_t cq_idx, requested_call* rc,
357
- grpc_error* error);
358
- /* Before calling maybe_finish_shutdown, we must hold mu_global and not
359
- hold mu_call */
360
- void maybe_finish_shutdown(grpc_server* server);
361
-
362
- void kill_zombie(void* elem, grpc_error* /*error*/) {
363
- grpc_call_unref(
364
- grpc_call_from_top_element(static_cast<grpc_call_element*>(elem)));
365
- }
366
-
367
- /*
368
- * channel broadcaster
369
- */
370
-
371
- /* assumes server locked */
372
- void channel_broadcaster_init(grpc_server* s, channel_broadcaster* cb) {
373
- channel_data* c;
374
- size_t count = 0;
375
- for (c = s->root_channel_data.next; c != &s->root_channel_data; c = c->next) {
376
- count++;
377
- }
378
- cb->num_channels = count;
379
- cb->channels = static_cast<grpc_channel**>(
380
- gpr_malloc(sizeof(*cb->channels) * cb->num_channels));
381
- count = 0;
382
- for (c = s->root_channel_data.next; c != &s->root_channel_data; c = c->next) {
383
- cb->channels[count++] = c->channel;
384
- GRPC_CHANNEL_INTERNAL_REF(c->channel, "broadcast");
385
- }
386
- }
387
-
388
- struct shutdown_cleanup_args {
389
- grpc_closure closure;
390
- grpc_slice slice;
185
+ virtual Server* server() const = 0;
391
186
  };
392
187
 
393
- void shutdown_cleanup(void* arg, grpc_error* /*error*/) {
394
- struct shutdown_cleanup_args* a =
395
- static_cast<struct shutdown_cleanup_args*>(arg);
396
- grpc_slice_unref_internal(a->slice);
397
- gpr_free(a);
398
- }
399
-
400
- void send_shutdown(grpc_channel* channel, bool send_goaway,
401
- grpc_error* send_disconnect) {
402
- struct shutdown_cleanup_args* sc =
403
- static_cast<struct shutdown_cleanup_args*>(gpr_malloc(sizeof(*sc)));
404
- GRPC_CLOSURE_INIT(&sc->closure, shutdown_cleanup, sc,
405
- grpc_schedule_on_exec_ctx);
406
- grpc_transport_op* op = grpc_make_transport_op(&sc->closure);
407
- grpc_channel_element* elem;
408
-
409
- op->goaway_error =
410
- send_goaway ? grpc_error_set_int(
411
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"),
412
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
413
- : GRPC_ERROR_NONE;
414
- op->set_accept_stream = true;
415
- sc->slice = grpc_slice_from_copied_string("Server shutdown");
416
- op->disconnect_with_error = send_disconnect;
417
-
418
- elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0);
419
- elem->filter->start_transport_op(elem, op);
420
- }
421
-
422
- void channel_broadcaster_shutdown(channel_broadcaster* cb, bool send_goaway,
423
- grpc_error* force_disconnect) {
424
- size_t i;
425
-
426
- for (i = 0; i < cb->num_channels; i++) {
427
- send_shutdown(cb->channels[i], send_goaway,
428
- GRPC_ERROR_REF(force_disconnect));
429
- GRPC_CHANNEL_INTERNAL_UNREF(cb->channels[i], "broadcast");
430
- }
431
- gpr_free(cb->channels);
432
- GRPC_ERROR_UNREF(force_disconnect);
433
- }
434
-
435
- /*
436
- * request_matcher
437
- */
438
-
439
188
  // The RealRequestMatcher is an implementation of RequestMatcherInterface that
440
189
  // actually uses all the features of RequestMatcherInterface: expecting the
441
190
  // application to explicitly request RPCs and then matching those to incoming
442
191
  // RPCs, along with a slow path by which incoming RPCs are put on a locked
443
192
  // pending list if they aren't able to be matched to an application request.
444
- class RealRequestMatcher : public RequestMatcherInterface {
193
+ class Server::RealRequestMatcher : public RequestMatcherInterface {
445
194
  public:
446
- explicit RealRequestMatcher(grpc_server* server)
447
- : server_(server), requests_per_cq_(server->cq_count) {}
195
+ explicit RealRequestMatcher(Server* server)
196
+ : server_(server), requests_per_cq_(server->cqs_.size()) {}
448
197
 
449
198
  ~RealRequestMatcher() override {
450
199
  for (LockedMultiProducerSingleConsumerQueue& queue : requests_per_cq_) {
@@ -453,25 +202,20 @@ class RealRequestMatcher : public RequestMatcherInterface {
453
202
  }
454
203
 
455
204
  void ZombifyPending() override {
456
- while (pending_head_ != nullptr) {
457
- call_data* calld = pending_head_;
458
- pending_head_ = calld->pending_next;
459
- gpr_atm_no_barrier_store(&calld->state, ZOMBIED);
460
- GRPC_CLOSURE_INIT(
461
- &calld->kill_zombie_closure, kill_zombie,
462
- grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0),
463
- grpc_schedule_on_exec_ctx);
464
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, &calld->kill_zombie_closure,
465
- GRPC_ERROR_NONE);
205
+ while (!pending_.empty()) {
206
+ CallData* calld = pending_.front();
207
+ calld->SetState(CallData::CallState::ZOMBIED);
208
+ calld->KillZombie();
209
+ pending_.pop();
466
210
  }
467
211
  }
468
212
 
469
- void KillRequests(grpc_error* error) override {
213
+ void KillRequests(grpc_error_handle error) override {
470
214
  for (size_t i = 0; i < requests_per_cq_.size(); i++) {
471
- requested_call* rc;
472
- while ((rc = reinterpret_cast<requested_call*>(
215
+ RequestedCall* rc;
216
+ while ((rc = reinterpret_cast<RequestedCall*>(
473
217
  requests_per_cq_[i].Pop())) != nullptr) {
474
- fail_call(server_, i, rc, GRPC_ERROR_REF(error));
218
+ server_->FailCall(i, rc, GRPC_ERROR_REF(error));
475
219
  }
476
220
  }
477
221
  GRPC_ERROR_UNREF(error);
@@ -482,90 +226,90 @@ class RealRequestMatcher : public RequestMatcherInterface {
482
226
  }
483
227
 
484
228
  void RequestCallWithPossiblePublish(size_t request_queue_index,
485
- requested_call* call) override {
229
+ RequestedCall* call) override {
486
230
  if (requests_per_cq_[request_queue_index].Push(&call->mpscq_node)) {
487
231
  /* this was the first queued request: we need to lock and start
488
232
  matching calls */
489
- gpr_mu_lock(&server_->mu_call);
490
- call_data* calld;
491
- while ((calld = pending_head_) != nullptr) {
492
- requested_call* rc = reinterpret_cast<requested_call*>(
493
- requests_per_cq_[request_queue_index].Pop());
494
- if (rc == nullptr) break;
495
- pending_head_ = calld->pending_next;
496
- gpr_mu_unlock(&server_->mu_call);
497
- if (!gpr_atm_full_cas(&calld->state, PENDING, ACTIVATED)) {
233
+ struct PendingCall {
234
+ RequestedCall* rc = nullptr;
235
+ CallData* calld;
236
+ };
237
+ auto pop_next_pending = [this, request_queue_index] {
238
+ PendingCall pending_call;
239
+ {
240
+ MutexLock lock(&server_->mu_call_);
241
+ if (!pending_.empty()) {
242
+ pending_call.rc = reinterpret_cast<RequestedCall*>(
243
+ requests_per_cq_[request_queue_index].Pop());
244
+ if (pending_call.rc != nullptr) {
245
+ pending_call.calld = pending_.front();
246
+ pending_.pop();
247
+ }
248
+ }
249
+ }
250
+ return pending_call;
251
+ };
252
+ while (true) {
253
+ PendingCall next_pending = pop_next_pending();
254
+ if (next_pending.rc == nullptr) break;
255
+ if (!next_pending.calld->MaybeActivate()) {
498
256
  // Zombied Call
499
- GRPC_CLOSURE_INIT(
500
- &calld->kill_zombie_closure, kill_zombie,
501
- grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0),
502
- grpc_schedule_on_exec_ctx);
503
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, &calld->kill_zombie_closure,
504
- GRPC_ERROR_NONE);
257
+ next_pending.calld->KillZombie();
505
258
  } else {
506
- publish_call(server_, calld, request_queue_index, rc);
259
+ next_pending.calld->Publish(request_queue_index, next_pending.rc);
507
260
  }
508
- gpr_mu_lock(&server_->mu_call);
509
261
  }
510
- gpr_mu_unlock(&server_->mu_call);
511
262
  }
512
263
  }
513
264
 
514
265
  void MatchOrQueue(size_t start_request_queue_index,
515
- call_data* calld) override {
266
+ CallData* calld) override {
516
267
  for (size_t i = 0; i < requests_per_cq_.size(); i++) {
517
268
  size_t cq_idx = (start_request_queue_index + i) % requests_per_cq_.size();
518
- requested_call* rc =
519
- reinterpret_cast<requested_call*>(requests_per_cq_[cq_idx].TryPop());
520
- if (rc == nullptr) {
521
- continue;
522
- } else {
269
+ RequestedCall* rc =
270
+ reinterpret_cast<RequestedCall*>(requests_per_cq_[cq_idx].TryPop());
271
+ if (rc != nullptr) {
523
272
  GRPC_STATS_INC_SERVER_CQS_CHECKED(i);
524
- gpr_atm_no_barrier_store(&calld->state, ACTIVATED);
525
- publish_call(server_, calld, cq_idx, rc);
526
- return; /* early out */
273
+ calld->SetState(CallData::CallState::ACTIVATED);
274
+ calld->Publish(cq_idx, rc);
275
+ return;
527
276
  }
528
277
  }
529
-
530
- /* no cq to take the request found: queue it on the slow list */
278
+ // No cq to take the request found; queue it on the slow list.
531
279
  GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED();
532
- gpr_mu_lock(&server_->mu_call);
533
-
534
280
  // We need to ensure that all the queues are empty. We do this under
535
- // the server mu_call lock to ensure that if something is added to
281
+ // the server mu_call_ lock to ensure that if something is added to
536
282
  // an empty request queue, it will block until the call is actually
537
283
  // added to the pending list.
538
- for (size_t i = 0; i < requests_per_cq_.size(); i++) {
539
- size_t cq_idx = (start_request_queue_index + i) % requests_per_cq_.size();
540
- requested_call* rc =
541
- reinterpret_cast<requested_call*>(requests_per_cq_[cq_idx].Pop());
284
+ RequestedCall* rc = nullptr;
285
+ size_t cq_idx = 0;
286
+ size_t loop_count;
287
+ {
288
+ MutexLock lock(&server_->mu_call_);
289
+ for (loop_count = 0; loop_count < requests_per_cq_.size(); loop_count++) {
290
+ cq_idx =
291
+ (start_request_queue_index + loop_count) % requests_per_cq_.size();
292
+ rc = reinterpret_cast<RequestedCall*>(requests_per_cq_[cq_idx].Pop());
293
+ if (rc != nullptr) {
294
+ break;
295
+ }
296
+ }
542
297
  if (rc == nullptr) {
543
- continue;
544
- } else {
545
- gpr_mu_unlock(&server_->mu_call);
546
- GRPC_STATS_INC_SERVER_CQS_CHECKED(i + requests_per_cq_.size());
547
- gpr_atm_no_barrier_store(&calld->state, ACTIVATED);
548
- publish_call(server_, calld, cq_idx, rc);
549
- return; /* early out */
298
+ calld->SetState(CallData::CallState::PENDING);
299
+ pending_.push(calld);
300
+ return;
550
301
  }
551
302
  }
552
-
553
- gpr_atm_no_barrier_store(&calld->state, PENDING);
554
- if (pending_head_ == nullptr) {
555
- pending_tail_ = pending_head_ = calld;
556
- } else {
557
- pending_tail_->pending_next = calld;
558
- pending_tail_ = calld;
559
- }
560
- gpr_mu_unlock(&server_->mu_call);
303
+ GRPC_STATS_INC_SERVER_CQS_CHECKED(loop_count + requests_per_cq_.size());
304
+ calld->SetState(CallData::CallState::ACTIVATED);
305
+ calld->Publish(cq_idx, rc);
561
306
  }
562
307
 
563
- grpc_server* server() const override { return server_; }
308
+ Server* server() const override { return server_; }
564
309
 
565
310
  private:
566
- grpc_server* const server_;
567
- call_data* pending_head_ = nullptr;
568
- call_data* pending_tail_ = nullptr;
311
+ Server* const server_;
312
+ std::queue<CallData*> pending_;
569
313
  std::vector<LockedMultiProducerSingleConsumerQueue> requests_per_cq_;
570
314
  };
571
315
 
@@ -573,33 +317,36 @@ class RealRequestMatcher : public RequestMatcherInterface {
573
317
  // advance or queue up any incoming RPC for later match. Instead, MatchOrQueue
574
318
  // will call out to an allocation function passed in at the construction of the
575
319
  // object. These request matchers are designed for the C++ callback API, so they
576
- // only support 1 completion queue (passed in at the constructor).
577
- class AllocatingRequestMatcherBase : public RequestMatcherInterface {
320
+ // only support 1 completion queue (passed in at the constructor). They are also
321
+ // used for the sync API.
322
+ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
578
323
  public:
579
- AllocatingRequestMatcherBase(grpc_server* server, grpc_completion_queue* cq)
324
+ AllocatingRequestMatcherBase(Server* server, grpc_completion_queue* cq)
580
325
  : server_(server), cq_(cq) {
581
326
  size_t idx;
582
- for (idx = 0; idx < server->cq_count; idx++) {
583
- if (server->cqs[idx] == cq) {
327
+ for (idx = 0; idx < server->cqs_.size(); idx++) {
328
+ if (server->cqs_[idx] == cq) {
584
329
  break;
585
330
  }
586
331
  }
587
- GPR_ASSERT(idx < server->cq_count);
332
+ GPR_ASSERT(idx < server->cqs_.size());
588
333
  cq_idx_ = idx;
589
334
  }
590
335
 
591
336
  void ZombifyPending() override {}
592
337
 
593
- void KillRequests(grpc_error* error) override { GRPC_ERROR_UNREF(error); }
338
+ void KillRequests(grpc_error_handle error) override {
339
+ GRPC_ERROR_UNREF(error);
340
+ }
594
341
 
595
342
  size_t request_queue_count() const override { return 0; }
596
343
 
597
344
  void RequestCallWithPossiblePublish(size_t /*request_queue_index*/,
598
- requested_call* /*call*/) final {
345
+ RequestedCall* /*call*/) final {
599
346
  GPR_ASSERT(false);
600
347
  }
601
348
 
602
- grpc_server* server() const override { return server_; }
349
+ Server* server() const override { return server_; }
603
350
 
604
351
  // Supply the completion queue related to this request matcher
605
352
  grpc_completion_queue* cq() const { return cq_; }
@@ -608,634 +355,559 @@ class AllocatingRequestMatcherBase : public RequestMatcherInterface {
608
355
  size_t cq_idx() const { return cq_idx_; }
609
356
 
610
357
  private:
611
- grpc_server* const server_;
358
+ Server* const server_;
612
359
  grpc_completion_queue* const cq_;
613
360
  size_t cq_idx_;
614
361
  };
615
362
 
616
363
  // An allocating request matcher for non-registered methods (used for generic
617
364
  // API and unimplemented RPCs).
618
- class AllocatingRequestMatcherBatch : public AllocatingRequestMatcherBase {
365
+ class Server::AllocatingRequestMatcherBatch
366
+ : public AllocatingRequestMatcherBase {
619
367
  public:
620
- AllocatingRequestMatcherBatch(
621
- grpc_server* server, grpc_completion_queue* cq,
622
- std::function<grpc_core::ServerBatchCallAllocation()> allocator)
368
+ AllocatingRequestMatcherBatch(Server* server, grpc_completion_queue* cq,
369
+ std::function<BatchCallAllocation()> allocator)
623
370
  : AllocatingRequestMatcherBase(server, cq),
624
371
  allocator_(std::move(allocator)) {}
372
+
625
373
  void MatchOrQueue(size_t /*start_request_queue_index*/,
626
- call_data* calld) override {
627
- grpc_core::ServerBatchCallAllocation call_info = allocator_();
628
- GPR_ASSERT(ValidateServerRequest(cq(), static_cast<void*>(call_info.tag),
629
- nullptr, nullptr) == GRPC_CALL_OK);
630
- requested_call* rc = new requested_call(
631
- static_cast<void*>(call_info.tag), cq(), call_info.call,
632
- call_info.initial_metadata, call_info.details);
633
- gpr_atm_no_barrier_store(&calld->state, ACTIVATED);
634
- publish_call(server(), calld, cq_idx(), rc);
374
+ CallData* calld) override {
375
+ if (server()->ShutdownRefOnRequest()) {
376
+ BatchCallAllocation call_info = allocator_();
377
+ GPR_ASSERT(server()->ValidateServerRequest(
378
+ cq(), static_cast<void*>(call_info.tag), nullptr,
379
+ nullptr) == GRPC_CALL_OK);
380
+ RequestedCall* rc = new RequestedCall(
381
+ static_cast<void*>(call_info.tag), call_info.cq, call_info.call,
382
+ call_info.initial_metadata, call_info.details);
383
+ calld->SetState(CallData::CallState::ACTIVATED);
384
+ calld->Publish(cq_idx(), rc);
385
+ } else {
386
+ calld->FailCallCreation();
387
+ }
388
+ server()->ShutdownUnrefOnRequest();
635
389
  }
636
390
 
637
391
  private:
638
- std::function<grpc_core::ServerBatchCallAllocation()> allocator_;
392
+ std::function<BatchCallAllocation()> allocator_;
639
393
  };
640
394
 
641
395
  // An allocating request matcher for registered methods.
642
- class AllocatingRequestMatcherRegistered : public AllocatingRequestMatcherBase {
396
+ class Server::AllocatingRequestMatcherRegistered
397
+ : public AllocatingRequestMatcherBase {
643
398
  public:
644
399
  AllocatingRequestMatcherRegistered(
645
- grpc_server* server, grpc_completion_queue* cq, registered_method* rm,
646
- std::function<grpc_core::ServerRegisteredCallAllocation()> allocator)
400
+ Server* server, grpc_completion_queue* cq, RegisteredMethod* rm,
401
+ std::function<RegisteredCallAllocation()> allocator)
647
402
  : AllocatingRequestMatcherBase(server, cq),
648
403
  registered_method_(rm),
649
404
  allocator_(std::move(allocator)) {}
405
+
650
406
  void MatchOrQueue(size_t /*start_request_queue_index*/,
651
- call_data* calld) override {
652
- grpc_core::ServerRegisteredCallAllocation call_info = allocator_();
653
- GPR_ASSERT(ValidateServerRequest(cq(), static_cast<void*>(call_info.tag),
654
- call_info.optional_payload,
655
- registered_method_) == GRPC_CALL_OK);
656
- requested_call* rc = new requested_call(
657
- static_cast<void*>(call_info.tag), cq(), call_info.call,
658
- call_info.initial_metadata, registered_method_, call_info.deadline,
659
- call_info.optional_payload);
660
- gpr_atm_no_barrier_store(&calld->state, ACTIVATED);
661
- publish_call(server(), calld, cq_idx(), rc);
407
+ CallData* calld) override {
408
+ if (server()->ShutdownRefOnRequest()) {
409
+ RegisteredCallAllocation call_info = allocator_();
410
+ GPR_ASSERT(server()->ValidateServerRequest(
411
+ cq(), call_info.tag, call_info.optional_payload,
412
+ registered_method_) == GRPC_CALL_OK);
413
+ RequestedCall* rc =
414
+ new RequestedCall(call_info.tag, call_info.cq, call_info.call,
415
+ call_info.initial_metadata, registered_method_,
416
+ call_info.deadline, call_info.optional_payload);
417
+ calld->SetState(CallData::CallState::ACTIVATED);
418
+ calld->Publish(cq_idx(), rc);
419
+ } else {
420
+ calld->FailCallCreation();
421
+ }
422
+ server()->ShutdownUnrefOnRequest();
662
423
  }
663
424
 
664
425
  private:
665
- registered_method* const registered_method_;
666
- std::function<grpc_core::ServerRegisteredCallAllocation()> allocator_;
426
+ RegisteredMethod* const registered_method_;
427
+ std::function<RegisteredCallAllocation()> allocator_;
667
428
  };
668
429
 
669
- /*
670
- * server proper
671
- */
672
-
673
- void server_ref(grpc_server* server) { server->internal_refcount.Ref(); }
674
-
675
- void server_delete(grpc_server* server) {
676
- registered_method* rm;
677
- size_t i;
678
- server->channelz_server.reset();
679
- grpc_channel_args_destroy(server->channel_args);
680
- gpr_mu_destroy(&server->mu_global);
681
- gpr_mu_destroy(&server->mu_call);
682
- gpr_cv_destroy(&server->starting_cv);
683
- while ((rm = server->registered_methods) != nullptr) {
684
- server->registered_methods = rm->next;
685
- delete rm;
686
- }
687
- delete server->unregistered_request_matcher;
688
- for (i = 0; i < server->cq_count; i++) {
689
- GRPC_CQ_INTERNAL_UNREF(server->cqs[i], "server");
690
- }
691
- gpr_free(server->cqs);
692
- gpr_free(server->pollsets);
693
- gpr_free(server->shutdown_tags);
694
- gpr_free(server);
695
- }
696
-
697
- void server_unref(grpc_server* server) {
698
- if (GPR_UNLIKELY(server->internal_refcount.Unref())) {
699
- server_delete(server);
700
- }
701
- }
702
-
703
- int is_channel_orphaned(channel_data* chand) { return chand->next == chand; }
704
-
705
- void orphan_channel(channel_data* chand) {
706
- chand->next->prev = chand->prev;
707
- chand->prev->next = chand->next;
708
- chand->next = chand->prev = chand;
709
- }
430
+ //
431
+ // ChannelBroadcaster
432
+ //
710
433
 
711
- void finish_destroy_channel(void* cd, grpc_error* /*error*/) {
712
- channel_data* chand = static_cast<channel_data*>(cd);
713
- grpc_server* server = chand->server;
714
- GRPC_CHANNEL_INTERNAL_UNREF(chand->channel, "server");
715
- server_unref(server);
716
- }
434
+ namespace {
717
435
 
718
- void destroy_channel(channel_data* chand) {
719
- if (is_channel_orphaned(chand)) return;
720
- GPR_ASSERT(chand->server != nullptr);
721
- orphan_channel(chand);
722
- server_ref(chand->server);
723
- maybe_finish_shutdown(chand->server);
724
- GRPC_CLOSURE_INIT(&chand->finish_destroy_channel_closure,
725
- finish_destroy_channel, chand, grpc_schedule_on_exec_ctx);
436
+ class ChannelBroadcaster {
437
+ public:
438
+ // This can have an empty constructor and destructor since we want to control
439
+ // when the actual setup and shutdown broadcast take place.
726
440
 
727
- if (GRPC_TRACE_FLAG_ENABLED(grpc_server_channel_trace)) {
728
- gpr_log(GPR_INFO, "Disconnected client");
441
+ // Copies over the channels from the locked server.
442
+ void FillChannelsLocked(std::vector<grpc_channel*> channels) {
443
+ GPR_DEBUG_ASSERT(channels_.empty());
444
+ channels_ = std::move(channels);
729
445
  }
730
446
 
731
- grpc_transport_op* op =
732
- grpc_make_transport_op(&chand->finish_destroy_channel_closure);
733
- op->set_accept_stream = true;
734
- grpc_channel_next_op(grpc_channel_stack_element(
735
- grpc_channel_get_channel_stack(chand->channel), 0),
736
- op);
737
- }
738
-
739
- void done_request_event(void* req, grpc_cq_completion* /*c*/) {
740
- delete static_cast<requested_call*>(req);
741
- }
742
-
743
- void publish_call(grpc_server* server, call_data* calld, size_t cq_idx,
744
- requested_call* rc) {
745
- grpc_call_set_completion_queue(calld->call, rc->cq_bound_to_call);
746
- grpc_call* call = calld->call;
747
- *rc->call = call;
748
- calld->cq_new = server->cqs[cq_idx];
749
- GPR_SWAP(grpc_metadata_array, *rc->initial_metadata, calld->initial_metadata);
750
- switch (rc->type) {
751
- case BATCH_CALL:
752
- GPR_ASSERT(calld->host_set);
753
- GPR_ASSERT(calld->path_set);
754
- rc->data.batch.details->host = grpc_slice_ref_internal(calld->host);
755
- rc->data.batch.details->method = grpc_slice_ref_internal(calld->path);
756
- rc->data.batch.details->deadline =
757
- grpc_millis_to_timespec(calld->deadline, GPR_CLOCK_MONOTONIC);
758
- rc->data.batch.details->flags = calld->recv_initial_metadata_flags;
759
- break;
760
- case REGISTERED_CALL:
761
- *rc->data.registered.deadline =
762
- grpc_millis_to_timespec(calld->deadline, GPR_CLOCK_MONOTONIC);
763
- if (rc->data.registered.optional_payload) {
764
- *rc->data.registered.optional_payload = calld->payload;
765
- calld->payload = nullptr;
766
- }
767
- break;
768
- default:
769
- GPR_UNREACHABLE_CODE(return );
447
+ // Broadcasts a shutdown on each channel.
448
+ void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) {
449
+ for (grpc_channel* channel : channels_) {
450
+ SendShutdown(channel, send_goaway, GRPC_ERROR_REF(force_disconnect));
451
+ GRPC_CHANNEL_INTERNAL_UNREF(channel, "broadcast");
452
+ }
453
+ channels_.clear(); // just for safety against double broadcast
454
+ GRPC_ERROR_UNREF(force_disconnect);
770
455
  }
771
456
 
772
- grpc_cq_end_op(calld->cq_new, rc->tag, GRPC_ERROR_NONE, done_request_event,
773
- rc, &rc->completion, true);
774
- }
457
+ private:
458
+ struct ShutdownCleanupArgs {
459
+ grpc_closure closure;
460
+ grpc_slice slice;
461
+ };
775
462
 
776
- void publish_new_rpc(void* arg, grpc_error* error) {
777
- grpc_call_element* call_elem = static_cast<grpc_call_element*>(arg);
778
- call_data* calld = static_cast<call_data*>(call_elem->call_data);
779
- channel_data* chand = static_cast<channel_data*>(call_elem->channel_data);
780
- RequestMatcherInterface* rm = calld->matcher;
781
- grpc_server* server = rm->server();
782
-
783
- if (error != GRPC_ERROR_NONE || gpr_atm_acq_load(&server->shutdown_flag)) {
784
- gpr_atm_no_barrier_store(&calld->state, ZOMBIED);
785
- GRPC_CLOSURE_INIT(
786
- &calld->kill_zombie_closure, kill_zombie,
787
- grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0),
788
- grpc_schedule_on_exec_ctx);
789
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, &calld->kill_zombie_closure,
790
- GRPC_ERROR_REF(error));
791
- return;
463
+ static void ShutdownCleanup(void* arg, grpc_error_handle /*error*/) {
464
+ ShutdownCleanupArgs* a = static_cast<ShutdownCleanupArgs*>(arg);
465
+ grpc_slice_unref_internal(a->slice);
466
+ delete a;
792
467
  }
793
468
 
794
- rm->MatchOrQueue(chand->cq_idx, calld);
795
- }
469
+ static void SendShutdown(grpc_channel* channel, bool send_goaway,
470
+ grpc_error_handle send_disconnect) {
471
+ ShutdownCleanupArgs* sc = new ShutdownCleanupArgs;
472
+ GRPC_CLOSURE_INIT(&sc->closure, ShutdownCleanup, sc,
473
+ grpc_schedule_on_exec_ctx);
474
+ grpc_transport_op* op = grpc_make_transport_op(&sc->closure);
475
+ grpc_channel_element* elem;
476
+ op->goaway_error =
477
+ send_goaway
478
+ ? grpc_error_set_int(
479
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"),
480
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
481
+ : GRPC_ERROR_NONE;
482
+ sc->slice = grpc_slice_from_copied_string("Server shutdown");
483
+ op->disconnect_with_error = send_disconnect;
484
+ elem =
485
+ grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0);
486
+ elem->filter->start_transport_op(elem, op);
487
+ }
488
+
489
+ std::vector<grpc_channel*> channels_;
490
+ };
491
+
492
+ } // namespace
796
493
 
797
- void finish_start_new_rpc(
798
- grpc_server* server, grpc_call_element* elem, RequestMatcherInterface* rm,
799
- grpc_server_register_method_payload_handling payload_handling) {
800
- call_data* calld = static_cast<call_data*>(elem->call_data);
494
+ //
495
+ // Server
496
+ //
801
497
 
802
- if (gpr_atm_acq_load(&server->shutdown_flag)) {
803
- gpr_atm_no_barrier_store(&calld->state, ZOMBIED);
804
- GRPC_CLOSURE_INIT(&calld->kill_zombie_closure, kill_zombie, elem,
805
- grpc_schedule_on_exec_ctx);
806
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, &calld->kill_zombie_closure,
807
- GRPC_ERROR_NONE);
808
- return;
809
- }
498
+ const grpc_channel_filter Server::kServerTopFilter = {
499
+ Server::CallData::StartTransportStreamOpBatch,
500
+ nullptr,
501
+ grpc_channel_next_op,
502
+ sizeof(Server::CallData),
503
+ Server::CallData::InitCallElement,
504
+ grpc_call_stack_ignore_set_pollset_or_pollset_set,
505
+ Server::CallData::DestroyCallElement,
506
+ sizeof(Server::ChannelData),
507
+ Server::ChannelData::InitChannelElement,
508
+ Server::ChannelData::DestroyChannelElement,
509
+ grpc_channel_next_get_info,
510
+ "server",
511
+ };
810
512
 
811
- calld->matcher = rm;
513
+ namespace {
812
514
 
813
- switch (payload_handling) {
814
- case GRPC_SRM_PAYLOAD_NONE:
815
- publish_new_rpc(elem, GRPC_ERROR_NONE);
816
- break;
817
- case GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER: {
818
- grpc_op op;
819
- op.op = GRPC_OP_RECV_MESSAGE;
820
- op.flags = 0;
821
- op.reserved = nullptr;
822
- op.data.recv_message.recv_message = &calld->payload;
823
- GRPC_CLOSURE_INIT(&calld->publish, publish_new_rpc, elem,
824
- grpc_schedule_on_exec_ctx);
825
- grpc_call_start_batch_and_execute(calld->call, &op, 1, &calld->publish);
826
- break;
827
- }
515
+ RefCountedPtr<channelz::ServerNode> CreateChannelzNode(
516
+ const grpc_channel_args* args) {
517
+ RefCountedPtr<channelz::ServerNode> channelz_node;
518
+ if (grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_CHANNELZ,
519
+ GRPC_ENABLE_CHANNELZ_DEFAULT)) {
520
+ size_t channel_tracer_max_memory = grpc_channel_args_find_integer(
521
+ args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
522
+ {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
523
+ channelz_node =
524
+ MakeRefCounted<channelz::ServerNode>(channel_tracer_max_memory);
525
+ channelz_node->AddTraceEvent(
526
+ channelz::ChannelTrace::Severity::Info,
527
+ grpc_slice_from_static_string("Server created"));
828
528
  }
529
+ return channelz_node;
829
530
  }
830
531
 
831
- void start_new_rpc(grpc_call_element* elem) {
832
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
833
- call_data* calld = static_cast<call_data*>(elem->call_data);
834
- grpc_server* server = chand->server;
835
- uint32_t i;
836
- uint32_t hash;
837
- channel_registered_method* rm;
838
-
839
- if (chand->registered_methods && calld->path_set && calld->host_set) {
840
- /* TODO(ctiller): unify these two searches */
841
- /* check for an exact match with host */
842
- hash = GRPC_MDSTR_KV_HASH(grpc_slice_hash_internal(calld->host),
843
- grpc_slice_hash_internal(calld->path));
844
- for (i = 0; i <= chand->registered_method_max_probes; i++) {
845
- rm = &chand->registered_methods[(hash + i) %
846
- chand->registered_method_slots];
847
- if (rm->server_registered_method == nullptr) break;
848
- if (!rm->has_host) continue;
849
- if (rm->host != calld->host) continue;
850
- if (rm->method != calld->path) continue;
851
- if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
852
- 0 == (calld->recv_initial_metadata_flags &
853
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST)) {
854
- continue;
855
- }
856
- finish_start_new_rpc(server, elem,
857
- rm->server_registered_method->matcher.get(),
858
- rm->server_registered_method->payload_handling);
859
- return;
860
- }
861
- /* check for a wildcard method definition (no host set) */
862
- hash = GRPC_MDSTR_KV_HASH(0, grpc_slice_hash_internal(calld->path));
863
- for (i = 0; i <= chand->registered_method_max_probes; i++) {
864
- rm = &chand->registered_methods[(hash + i) %
865
- chand->registered_method_slots];
866
- if (rm->server_registered_method == nullptr) break;
867
- if (rm->has_host) continue;
868
- if (rm->method != calld->path) continue;
869
- if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
870
- 0 == (calld->recv_initial_metadata_flags &
871
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST)) {
872
- continue;
873
- }
874
- finish_start_new_rpc(server, elem,
875
- rm->server_registered_method->matcher.get(),
876
- rm->server_registered_method->payload_handling);
877
- return;
532
+ } // namespace
533
+
534
+ Server::Server(const grpc_channel_args* args)
535
+ : channel_args_(grpc_channel_args_copy(args)),
536
+ channelz_node_(CreateChannelzNode(args)) {}
537
+
538
+ Server::~Server() {
539
+ grpc_channel_args_destroy(channel_args_);
540
+ // Remove the cq pollsets from the config_fetcher.
541
+ if (started_ && config_fetcher_ != nullptr &&
542
+ config_fetcher_->interested_parties() != nullptr) {
543
+ for (grpc_pollset* pollset : pollsets_) {
544
+ grpc_pollset_set_del_pollset(config_fetcher_->interested_parties(),
545
+ pollset);
878
546
  }
879
547
  }
880
- finish_start_new_rpc(server, elem, server->unregistered_request_matcher,
881
- GRPC_SRM_PAYLOAD_NONE);
882
- }
883
-
884
- int num_listeners(grpc_server* server) {
885
- listener* l;
886
- int n = 0;
887
- for (l = server->listeners; l; l = l->next) {
888
- n++;
548
+ for (size_t i = 0; i < cqs_.size(); i++) {
549
+ GRPC_CQ_INTERNAL_UNREF(cqs_[i], "server");
889
550
  }
890
- return n;
891
- }
892
-
893
- void done_shutdown_event(void* server, grpc_cq_completion* /*completion*/) {
894
- server_unref(static_cast<grpc_server*>(server));
895
551
  }
896
552
 
897
- int num_channels(grpc_server* server) {
898
- channel_data* chand;
899
- int n = 0;
900
- for (chand = server->root_channel_data.next;
901
- chand != &server->root_channel_data; chand = chand->next) {
902
- n++;
553
+ void Server::AddListener(OrphanablePtr<ListenerInterface> listener) {
554
+ channelz::ListenSocketNode* listen_socket_node =
555
+ listener->channelz_listen_socket_node();
556
+ if (listen_socket_node != nullptr && channelz_node_ != nullptr) {
557
+ channelz_node_->AddChildListenSocket(listen_socket_node->Ref());
903
558
  }
904
- return n;
559
+ listeners_.emplace_back(std::move(listener));
905
560
  }
906
561
 
907
- void kill_pending_work_locked(grpc_server* server, grpc_error* error) {
908
- if (server->started) {
909
- server->unregistered_request_matcher->KillRequests(GRPC_ERROR_REF(error));
910
- server->unregistered_request_matcher->ZombifyPending();
911
- for (registered_method* rm = server->registered_methods; rm;
912
- rm = rm->next) {
913
- rm->matcher->KillRequests(GRPC_ERROR_REF(error));
914
- rm->matcher->ZombifyPending();
562
+ void Server::Start() {
563
+ started_ = true;
564
+ for (grpc_completion_queue* cq : cqs_) {
565
+ if (grpc_cq_can_listen(cq)) {
566
+ pollsets_.push_back(grpc_cq_pollset(cq));
915
567
  }
916
568
  }
917
- GRPC_ERROR_UNREF(error);
918
- }
919
-
920
- void maybe_finish_shutdown(grpc_server* server) {
921
- size_t i;
922
- if (!gpr_atm_acq_load(&server->shutdown_flag) || server->shutdown_published) {
923
- return;
569
+ if (unregistered_request_matcher_ == nullptr) {
570
+ unregistered_request_matcher_ = absl::make_unique<RealRequestMatcher>(this);
924
571
  }
925
-
926
- gpr_mu_lock(&server->mu_call);
927
- kill_pending_work_locked(
928
- server, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
929
- gpr_mu_unlock(&server->mu_call);
930
-
931
- if (server->root_channel_data.next != &server->root_channel_data ||
932
- server->listeners_destroyed < num_listeners(server)) {
933
- if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME),
934
- server->last_shutdown_message_time),
935
- gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) {
936
- server->last_shutdown_message_time = gpr_now(GPR_CLOCK_REALTIME);
937
- gpr_log(GPR_DEBUG,
938
- "Waiting for %d channels and %d/%d listeners to be destroyed"
939
- " before shutting down server",
940
- num_channels(server),
941
- num_listeners(server) - server->listeners_destroyed,
942
- num_listeners(server));
572
+ for (std::unique_ptr<RegisteredMethod>& rm : registered_methods_) {
573
+ if (rm->matcher == nullptr) {
574
+ rm->matcher = absl::make_unique<RealRequestMatcher>(this);
575
+ }
576
+ }
577
+ {
578
+ MutexLock lock(&mu_global_);
579
+ starting_ = true;
580
+ }
581
+ // Register the interested parties from the config fetcher to the cq pollsets
582
+ // before starting listeners so that config fetcher is being polled when the
583
+ // listeners start watch the fetcher.
584
+ if (config_fetcher_ != nullptr &&
585
+ config_fetcher_->interested_parties() != nullptr) {
586
+ for (grpc_pollset* pollset : pollsets_) {
587
+ grpc_pollset_set_add_pollset(config_fetcher_->interested_parties(),
588
+ pollset);
943
589
  }
944
- return;
945
590
  }
946
- server->shutdown_published = 1;
947
- for (i = 0; i < server->num_shutdown_tags; i++) {
948
- server_ref(server);
949
- grpc_cq_end_op(server->shutdown_tags[i].cq, server->shutdown_tags[i].tag,
950
- GRPC_ERROR_NONE, done_shutdown_event, server,
951
- &server->shutdown_tags[i].completion);
591
+ for (auto& listener : listeners_) {
592
+ listener.listener->Start(this, &pollsets_);
952
593
  }
594
+ MutexLock lock(&mu_global_);
595
+ starting_ = false;
596
+ starting_cv_.Signal();
953
597
  }
954
598
 
955
- void server_on_recv_initial_metadata(void* ptr, grpc_error* error) {
956
- grpc_call_element* elem = static_cast<grpc_call_element*>(ptr);
957
- call_data* calld = static_cast<call_data*>(elem->call_data);
958
- grpc_millis op_deadline;
959
-
960
- if (error == GRPC_ERROR_NONE) {
961
- GPR_DEBUG_ASSERT(calld->recv_initial_metadata->idx.named.path != nullptr);
962
- GPR_DEBUG_ASSERT(calld->recv_initial_metadata->idx.named.authority !=
963
- nullptr);
964
- calld->path = grpc_slice_ref_internal(
965
- GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.path->md));
966
- calld->host = grpc_slice_ref_internal(
967
- GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.authority->md));
968
- calld->path_set = true;
969
- calld->host_set = true;
970
- grpc_metadata_batch_remove(calld->recv_initial_metadata, GRPC_BATCH_PATH);
971
- grpc_metadata_batch_remove(calld->recv_initial_metadata,
972
- GRPC_BATCH_AUTHORITY);
973
- } else {
974
- GRPC_ERROR_REF(error);
599
+ grpc_error_handle Server::SetupTransport(
600
+ grpc_transport* transport, grpc_pollset* accepting_pollset,
601
+ const grpc_channel_args* args,
602
+ const RefCountedPtr<channelz::SocketNode>& socket_node) {
603
+ // Create channel.
604
+ grpc_error_handle error = GRPC_ERROR_NONE;
605
+ grpc_channel* channel = grpc_channel_create_internal(
606
+ nullptr, args, GRPC_SERVER_CHANNEL, transport, &error);
607
+ if (channel == nullptr) {
608
+ return error;
975
609
  }
976
- op_deadline = calld->recv_initial_metadata->deadline;
977
- if (op_deadline != GRPC_MILLIS_INF_FUTURE) {
978
- calld->deadline = op_deadline;
610
+ ChannelData* chand = static_cast<ChannelData*>(
611
+ grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0)
612
+ ->channel_data);
613
+ // Set up CQs.
614
+ size_t cq_idx;
615
+ for (cq_idx = 0; cq_idx < cqs_.size(); cq_idx++) {
616
+ if (grpc_cq_pollset(cqs_[cq_idx]) == accepting_pollset) break;
979
617
  }
980
- if (calld->host_set && calld->path_set) {
981
- /* do nothing */
982
- } else {
983
- /* Pass the error reference to calld->recv_initial_metadata_error */
984
- grpc_error* src_error = error;
985
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
986
- "Missing :authority or :path", &src_error, 1);
987
- GRPC_ERROR_UNREF(src_error);
988
- calld->recv_initial_metadata_error = GRPC_ERROR_REF(error);
618
+ if (cq_idx == cqs_.size()) {
619
+ // Completion queue not found. Pick a random one to publish new calls to.
620
+ cq_idx = static_cast<size_t>(rand()) % cqs_.size();
989
621
  }
990
- grpc_closure* closure = calld->on_done_recv_initial_metadata;
991
- calld->on_done_recv_initial_metadata = nullptr;
992
- if (calld->seen_recv_trailing_metadata_ready) {
993
- GRPC_CALL_COMBINER_START(calld->call_combiner,
994
- &calld->recv_trailing_metadata_ready,
995
- calld->recv_trailing_metadata_error,
996
- "continue server_recv_trailing_metadata_ready");
622
+ // Set up channelz node.
623
+ intptr_t channelz_socket_uuid = 0;
624
+ if (socket_node != nullptr) {
625
+ channelz_socket_uuid = socket_node->uuid();
626
+ channelz_node_->AddChildSocket(socket_node);
997
627
  }
998
- grpc_core::Closure::Run(DEBUG_LOCATION, closure, error);
628
+ // Initialize chand.
629
+ chand->InitTransport(Ref(), channel, cq_idx, transport, channelz_socket_uuid);
630
+ return GRPC_ERROR_NONE;
999
631
  }
1000
632
 
1001
- void server_recv_trailing_metadata_ready(void* user_data, grpc_error* error) {
1002
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
1003
- call_data* calld = static_cast<call_data*>(elem->call_data);
1004
- if (calld->on_done_recv_initial_metadata != nullptr) {
1005
- calld->recv_trailing_metadata_error = GRPC_ERROR_REF(error);
1006
- calld->seen_recv_trailing_metadata_ready = true;
1007
- GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready,
1008
- server_recv_trailing_metadata_ready, elem,
1009
- grpc_schedule_on_exec_ctx);
1010
- GRPC_CALL_COMBINER_STOP(calld->call_combiner,
1011
- "deferring server_recv_trailing_metadata_ready "
1012
- "until after server_on_recv_initial_metadata");
1013
- return;
1014
- }
1015
- error =
1016
- grpc_error_add_child(GRPC_ERROR_REF(error),
1017
- GRPC_ERROR_REF(calld->recv_initial_metadata_error));
1018
- grpc_core::Closure::Run(DEBUG_LOCATION,
1019
- calld->original_recv_trailing_metadata_ready, error);
633
+ bool Server::HasOpenConnections() {
634
+ MutexLock lock(&mu_global_);
635
+ return !channels_.empty();
1020
636
  }
1021
637
 
1022
- void server_mutate_op(grpc_call_element* elem,
1023
- grpc_transport_stream_op_batch* op) {
1024
- call_data* calld = static_cast<call_data*>(elem->call_data);
1025
-
1026
- if (op->recv_initial_metadata) {
1027
- GPR_ASSERT(op->payload->recv_initial_metadata.recv_flags == nullptr);
1028
- calld->recv_initial_metadata =
1029
- op->payload->recv_initial_metadata.recv_initial_metadata;
1030
- calld->on_done_recv_initial_metadata =
1031
- op->payload->recv_initial_metadata.recv_initial_metadata_ready;
1032
- op->payload->recv_initial_metadata.recv_initial_metadata_ready =
1033
- &calld->server_on_recv_initial_metadata;
1034
- op->payload->recv_initial_metadata.recv_flags =
1035
- &calld->recv_initial_metadata_flags;
1036
- }
1037
- if (op->recv_trailing_metadata) {
1038
- calld->original_recv_trailing_metadata_ready =
1039
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
1040
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1041
- &calld->recv_trailing_metadata_ready;
1042
- }
638
+ void Server::SetRegisteredMethodAllocator(
639
+ grpc_completion_queue* cq, void* method_tag,
640
+ std::function<RegisteredCallAllocation()> allocator) {
641
+ RegisteredMethod* rm = static_cast<RegisteredMethod*>(method_tag);
642
+ rm->matcher = absl::make_unique<AllocatingRequestMatcherRegistered>(
643
+ this, cq, rm, std::move(allocator));
1043
644
  }
1044
645
 
1045
- void server_start_transport_stream_op_batch(
1046
- grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
1047
- server_mutate_op(elem, op);
1048
- grpc_call_next_op(elem, op);
646
+ void Server::SetBatchMethodAllocator(
647
+ grpc_completion_queue* cq, std::function<BatchCallAllocation()> allocator) {
648
+ GPR_DEBUG_ASSERT(unregistered_request_matcher_ == nullptr);
649
+ unregistered_request_matcher_ =
650
+ absl::make_unique<AllocatingRequestMatcherBatch>(this, cq,
651
+ std::move(allocator));
1049
652
  }
1050
653
 
1051
- void got_initial_metadata(void* ptr, grpc_error* error) {
1052
- grpc_call_element* elem = static_cast<grpc_call_element*>(ptr);
1053
- call_data* calld = static_cast<call_data*>(elem->call_data);
1054
- if (error == GRPC_ERROR_NONE) {
1055
- start_new_rpc(elem);
1056
- } else {
1057
- if (gpr_atm_full_cas(&calld->state, NOT_STARTED, ZOMBIED)) {
1058
- GRPC_CLOSURE_INIT(&calld->kill_zombie_closure, kill_zombie, elem,
1059
- grpc_schedule_on_exec_ctx);
1060
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, &calld->kill_zombie_closure,
1061
- GRPC_ERROR_NONE);
1062
- } else if (gpr_atm_full_cas(&calld->state, PENDING, ZOMBIED)) {
1063
- /* zombied call will be destroyed when it's removed from the pending
1064
- queue... later */
1065
- }
654
+ void Server::RegisterCompletionQueue(grpc_completion_queue* cq) {
655
+ for (grpc_completion_queue* queue : cqs_) {
656
+ if (queue == cq) return;
1066
657
  }
658
+ GRPC_CQ_INTERNAL_REF(cq, "server");
659
+ cqs_.push_back(cq);
1067
660
  }
1068
661
 
1069
- void accept_stream(void* cd, grpc_transport* /*transport*/,
1070
- const void* transport_server_data) {
1071
- channel_data* chand = static_cast<channel_data*>(cd);
1072
- /* create a call */
1073
- grpc_call_create_args args;
1074
- args.channel = chand->channel;
1075
- args.server = chand->server;
1076
- args.parent = nullptr;
1077
- args.propagation_mask = 0;
1078
- args.cq = nullptr;
1079
- args.pollset_set_alternative = nullptr;
1080
- args.server_transport_data = transport_server_data;
1081
- args.add_initial_metadata = nullptr;
1082
- args.add_initial_metadata_count = 0;
1083
- args.send_deadline = GRPC_MILLIS_INF_FUTURE;
1084
- grpc_call* call;
1085
- grpc_error* error = grpc_call_create(&args, &call);
1086
- grpc_call_element* elem =
1087
- grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
1088
- if (error != GRPC_ERROR_NONE) {
1089
- got_initial_metadata(elem, error);
1090
- GRPC_ERROR_UNREF(error);
1091
- return;
1092
- }
1093
- call_data* calld = static_cast<call_data*>(elem->call_data);
1094
- grpc_op op;
1095
- op.op = GRPC_OP_RECV_INITIAL_METADATA;
1096
- op.flags = 0;
1097
- op.reserved = nullptr;
1098
- op.data.recv_initial_metadata.recv_initial_metadata =
1099
- &calld->initial_metadata;
1100
- GRPC_CLOSURE_INIT(&calld->got_initial_metadata, got_initial_metadata, elem,
1101
- grpc_schedule_on_exec_ctx);
1102
- grpc_call_start_batch_and_execute(call, &op, 1, &calld->got_initial_metadata);
662
+ namespace {
663
+
664
+ bool streq(const std::string& a, const char* b) {
665
+ return (a.empty() && b == nullptr) ||
666
+ ((b != nullptr) && !strcmp(a.c_str(), b));
1103
667
  }
1104
668
 
1105
- grpc_error* server_init_call_elem(grpc_call_element* elem,
1106
- const grpc_call_element_args* args) {
1107
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1108
- server_ref(chand->server);
1109
- new (elem->call_data) call_data(elem, *args);
1110
- return GRPC_ERROR_NONE;
669
+ } // namespace
670
+
671
+ Server::RegisteredMethod* Server::RegisterMethod(
672
+ const char* method, const char* host,
673
+ grpc_server_register_method_payload_handling payload_handling,
674
+ uint32_t flags) {
675
+ if (!method) {
676
+ gpr_log(GPR_ERROR,
677
+ "grpc_server_register_method method string cannot be NULL");
678
+ return nullptr;
679
+ }
680
+ for (std::unique_ptr<RegisteredMethod>& m : registered_methods_) {
681
+ if (streq(m->method, method) && streq(m->host, host)) {
682
+ gpr_log(GPR_ERROR, "duplicate registration for %s@%s", method,
683
+ host ? host : "*");
684
+ return nullptr;
685
+ }
686
+ }
687
+ if (flags != 0) {
688
+ gpr_log(GPR_ERROR, "grpc_server_register_method invalid flags 0x%08x",
689
+ flags);
690
+ return nullptr;
691
+ }
692
+ registered_methods_.emplace_back(absl::make_unique<RegisteredMethod>(
693
+ method, host, payload_handling, flags));
694
+ return registered_methods_.back().get();
1111
695
  }
1112
696
 
1113
- void server_destroy_call_elem(grpc_call_element* elem,
1114
- const grpc_call_final_info* /*final_info*/,
1115
- grpc_closure* /*ignored*/) {
1116
- call_data* calld = static_cast<call_data*>(elem->call_data);
1117
- calld->~call_data();
1118
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1119
- server_unref(chand->server);
697
+ void Server::DoneRequestEvent(void* req, grpc_cq_completion* /*c*/) {
698
+ delete static_cast<RequestedCall*>(req);
1120
699
  }
1121
700
 
1122
- grpc_error* server_init_channel_elem(grpc_channel_element* elem,
1123
- grpc_channel_element_args* args) {
1124
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1125
- GPR_ASSERT(args->is_first);
1126
- GPR_ASSERT(!args->is_last);
1127
- chand->server = nullptr;
1128
- chand->channel = nullptr;
1129
- chand->next = chand->prev = chand;
1130
- chand->registered_methods = nullptr;
1131
- return GRPC_ERROR_NONE;
701
+ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
702
+ grpc_error_handle error) {
703
+ *rc->call = nullptr;
704
+ rc->initial_metadata->count = 0;
705
+ GPR_ASSERT(error != GRPC_ERROR_NONE);
706
+ grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
707
+ &rc->completion);
1132
708
  }
1133
709
 
1134
- void server_destroy_channel_elem(grpc_channel_element* elem) {
1135
- size_t i;
1136
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1137
- if (chand->registered_methods) {
1138
- for (i = 0; i < chand->registered_method_slots; i++) {
1139
- grpc_slice_unref_internal(chand->registered_methods[i].method);
1140
- GPR_DEBUG_ASSERT(chand->registered_methods[i].method.refcount ==
1141
- &grpc_core::kNoopRefcount ||
1142
- chand->registered_methods[i].method.refcount == nullptr);
1143
- if (chand->registered_methods[i].has_host) {
1144
- grpc_slice_unref_internal(chand->registered_methods[i].host);
1145
- GPR_DEBUG_ASSERT(chand->registered_methods[i].host.refcount ==
1146
- &grpc_core::kNoopRefcount ||
1147
- chand->registered_methods[i].host.refcount == nullptr);
1148
- }
710
+ // Before calling MaybeFinishShutdown(), we must hold mu_global_ and not
711
+ // hold mu_call_.
712
+ void Server::MaybeFinishShutdown() {
713
+ if (!ShutdownReady() || shutdown_published_) {
714
+ return;
715
+ }
716
+ {
717
+ MutexLock lock(&mu_call_);
718
+ KillPendingWorkLocked(
719
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
720
+ }
721
+ if (!channels_.empty() || listeners_destroyed_ < listeners_.size()) {
722
+ if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME),
723
+ last_shutdown_message_time_),
724
+ gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) {
725
+ last_shutdown_message_time_ = gpr_now(GPR_CLOCK_REALTIME);
726
+ gpr_log(GPR_DEBUG,
727
+ "Waiting for %" PRIuPTR " channels and %" PRIuPTR "/%" PRIuPTR
728
+ " listeners to be destroyed before shutting down server",
729
+ channels_.size(), listeners_.size() - listeners_destroyed_,
730
+ listeners_.size());
1149
731
  }
1150
- gpr_free(chand->registered_methods);
732
+ return;
733
+ }
734
+ shutdown_published_ = true;
735
+ for (auto& shutdown_tag : shutdown_tags_) {
736
+ Ref().release();
737
+ grpc_cq_end_op(shutdown_tag.cq, shutdown_tag.tag, GRPC_ERROR_NONE,
738
+ DoneShutdownEvent, this, &shutdown_tag.completion);
1151
739
  }
1152
- if (chand->server) {
1153
- if (chand->server->channelz_server != nullptr &&
1154
- chand->channelz_socket_uuid != 0) {
1155
- chand->server->channelz_server->RemoveChildSocket(
1156
- chand->channelz_socket_uuid);
740
+ }
741
+
742
+ void Server::KillPendingWorkLocked(grpc_error_handle error) {
743
+ if (started_) {
744
+ unregistered_request_matcher_->KillRequests(GRPC_ERROR_REF(error));
745
+ unregistered_request_matcher_->ZombifyPending();
746
+ for (std::unique_ptr<RegisteredMethod>& rm : registered_methods_) {
747
+ rm->matcher->KillRequests(GRPC_ERROR_REF(error));
748
+ rm->matcher->ZombifyPending();
1157
749
  }
1158
- gpr_mu_lock(&chand->server->mu_global);
1159
- chand->next->prev = chand->prev;
1160
- chand->prev->next = chand->next;
1161
- chand->next = chand->prev = chand;
1162
- maybe_finish_shutdown(chand->server);
1163
- gpr_mu_unlock(&chand->server->mu_global);
1164
- server_unref(chand->server);
1165
750
  }
751
+ GRPC_ERROR_UNREF(error);
1166
752
  }
1167
753
 
1168
- void register_completion_queue(grpc_server* server, grpc_completion_queue* cq,
1169
- void* reserved) {
1170
- size_t i, n;
1171
- GPR_ASSERT(!reserved);
1172
- for (i = 0; i < server->cq_count; i++) {
1173
- if (server->cqs[i] == cq) return;
754
+ std::vector<grpc_channel*> Server::GetChannelsLocked() const {
755
+ std::vector<grpc_channel*> channels;
756
+ channels.reserve(channels_.size());
757
+ for (const ChannelData* chand : channels_) {
758
+ channels.push_back(chand->channel());
759
+ GRPC_CHANNEL_INTERNAL_REF(chand->channel(), "broadcast");
1174
760
  }
761
+ return channels;
762
+ }
1175
763
 
1176
- GRPC_CQ_INTERNAL_REF(cq, "server");
1177
- n = server->cq_count++;
1178
- server->cqs = static_cast<grpc_completion_queue**>(gpr_realloc(
1179
- server->cqs, server->cq_count * sizeof(grpc_completion_queue*)));
1180
- server->cqs[n] = cq;
764
+ void Server::ListenerDestroyDone(void* arg, grpc_error_handle /*error*/) {
765
+ Server* server = static_cast<Server*>(arg);
766
+ MutexLock lock(&server->mu_global_);
767
+ server->listeners_destroyed_++;
768
+ server->MaybeFinishShutdown();
1181
769
  }
1182
770
 
1183
- bool streq(const std::string& a, const char* b) {
1184
- return (a.empty() && b == nullptr) ||
1185
- ((b != nullptr) && !strcmp(a.c_str(), b));
771
+ namespace {
772
+
773
+ void DonePublishedShutdown(void* /*done_arg*/, grpc_cq_completion* storage) {
774
+ delete storage;
1186
775
  }
1187
776
 
1188
- class ConnectivityWatcher
1189
- : public grpc_core::AsyncConnectivityStateWatcherInterface {
1190
- public:
1191
- explicit ConnectivityWatcher(channel_data* chand) : chand_(chand) {
1192
- GRPC_CHANNEL_INTERNAL_REF(chand_->channel, "connectivity");
1193
- }
777
+ } // namespace
1194
778
 
1195
- ~ConnectivityWatcher() {
1196
- GRPC_CHANNEL_INTERNAL_UNREF(chand_->channel, "connectivity");
779
+ // - Kills all pending requests-for-incoming-RPC-calls (i.e., the requests made
780
+ // via grpc_server_request_call() and grpc_server_request_registered_call()
781
+ // will now be cancelled). See KillPendingWorkLocked().
782
+ //
783
+ // - Shuts down the listeners (i.e., the server will no longer listen on the
784
+ // port for new incoming channels).
785
+ //
786
+ // - Iterates through all channels on the server and sends shutdown msg (see
787
+ // ChannelBroadcaster::BroadcastShutdown() for details) to the clients via
788
+ // the transport layer. The transport layer then guarantees the following:
789
+ // -- Sends shutdown to the client (e.g., HTTP2 transport sends GOAWAY).
790
+ // -- If the server has outstanding calls that are in the process, the
791
+ // connection is NOT closed until the server is done with all those calls.
792
+ // -- Once there are no more calls in progress, the channel is closed.
793
+ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
794
+ absl::Notification* await_requests = nullptr;
795
+ ChannelBroadcaster broadcaster;
796
+ {
797
+ // Wait for startup to be finished. Locks mu_global.
798
+ MutexLock lock(&mu_global_);
799
+ while (starting_) {
800
+ starting_cv_.Wait(&mu_global_);
801
+ }
802
+ // Stay locked, and gather up some stuff to do.
803
+ GPR_ASSERT(grpc_cq_begin_op(cq, tag));
804
+ if (shutdown_published_) {
805
+ grpc_cq_end_op(cq, tag, GRPC_ERROR_NONE, DonePublishedShutdown, nullptr,
806
+ new grpc_cq_completion);
807
+ return;
808
+ }
809
+ shutdown_tags_.emplace_back(tag, cq);
810
+ if (ShutdownCalled()) {
811
+ return;
812
+ }
813
+ last_shutdown_message_time_ = gpr_now(GPR_CLOCK_REALTIME);
814
+ broadcaster.FillChannelsLocked(GetChannelsLocked());
815
+ // Collect all unregistered then registered calls.
816
+ {
817
+ MutexLock lock(&mu_call_);
818
+ KillPendingWorkLocked(
819
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
820
+ }
821
+ await_requests = ShutdownUnrefOnShutdownCall();
822
+ }
823
+ // We expect no new requests but there can still be requests in-flight.
824
+ // Wait for them to complete before proceeding.
825
+ if (await_requests != nullptr) {
826
+ await_requests->WaitForNotification();
827
+ }
828
+ // Shutdown listeners.
829
+ for (auto& listener : listeners_) {
830
+ channelz::ListenSocketNode* channelz_listen_socket_node =
831
+ listener.listener->channelz_listen_socket_node();
832
+ if (channelz_node_ != nullptr && channelz_listen_socket_node != nullptr) {
833
+ channelz_node_->RemoveChildListenSocket(
834
+ channelz_listen_socket_node->uuid());
835
+ }
836
+ GRPC_CLOSURE_INIT(&listener.destroy_done, ListenerDestroyDone, this,
837
+ grpc_schedule_on_exec_ctx);
838
+ listener.listener->SetOnDestroyDone(&listener.destroy_done);
839
+ listener.listener.reset();
1197
840
  }
841
+ broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
842
+ }
1198
843
 
1199
- private:
1200
- void OnConnectivityStateChange(grpc_connectivity_state new_state) override {
1201
- // Don't do anything until we are being shut down.
1202
- if (new_state != GRPC_CHANNEL_SHUTDOWN) return;
1203
- // Shut down channel.
1204
- grpc_server* server = chand_->server;
1205
- gpr_mu_lock(&server->mu_global);
1206
- destroy_channel(chand_);
1207
- gpr_mu_unlock(&server->mu_global);
844
+ void Server::CancelAllCalls() {
845
+ ChannelBroadcaster broadcaster;
846
+ {
847
+ MutexLock lock(&mu_global_);
848
+ broadcaster.FillChannelsLocked(GetChannelsLocked());
1208
849
  }
850
+ broadcaster.BroadcastShutdown(
851
+ /*send_goaway=*/false,
852
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls"));
853
+ }
1209
854
 
1210
- channel_data* chand_;
1211
- };
855
+ void Server::Orphan() {
856
+ {
857
+ MutexLock lock(&mu_global_);
858
+ GPR_ASSERT(ShutdownCalled() || listeners_.empty());
859
+ GPR_ASSERT(listeners_destroyed_ == listeners_.size());
860
+ }
861
+ Unref();
862
+ }
1212
863
 
1213
- void done_published_shutdown(void* done_arg, grpc_cq_completion* storage) {
1214
- (void)done_arg;
1215
- gpr_free(storage);
864
+ grpc_call_error Server::ValidateServerRequest(
865
+ grpc_completion_queue* cq_for_notification, void* tag,
866
+ grpc_byte_buffer** optional_payload, RegisteredMethod* rm) {
867
+ if ((rm == nullptr && optional_payload != nullptr) ||
868
+ ((rm != nullptr) && ((optional_payload == nullptr) !=
869
+ (rm->payload_handling == GRPC_SRM_PAYLOAD_NONE)))) {
870
+ return GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH;
871
+ }
872
+ if (!grpc_cq_begin_op(cq_for_notification, tag)) {
873
+ return GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN;
874
+ }
875
+ return GRPC_CALL_OK;
1216
876
  }
1217
877
 
1218
- void listener_destroy_done(void* s, grpc_error* /*error*/) {
1219
- grpc_server* server = static_cast<grpc_server*>(s);
1220
- gpr_mu_lock(&server->mu_global);
1221
- server->listeners_destroyed++;
1222
- maybe_finish_shutdown(server);
1223
- gpr_mu_unlock(&server->mu_global);
878
+ grpc_call_error Server::ValidateServerRequestAndCq(
879
+ size_t* cq_idx, grpc_completion_queue* cq_for_notification, void* tag,
880
+ grpc_byte_buffer** optional_payload, RegisteredMethod* rm) {
881
+ size_t idx;
882
+ for (idx = 0; idx < cqs_.size(); idx++) {
883
+ if (cqs_[idx] == cq_for_notification) {
884
+ break;
885
+ }
886
+ }
887
+ if (idx == cqs_.size()) {
888
+ return GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE;
889
+ }
890
+ grpc_call_error error =
891
+ ValidateServerRequest(cq_for_notification, tag, optional_payload, rm);
892
+ if (error != GRPC_CALL_OK) {
893
+ return error;
894
+ }
895
+ *cq_idx = idx;
896
+ return GRPC_CALL_OK;
1224
897
  }
1225
898
 
1226
- grpc_call_error queue_call_request(grpc_server* server, size_t cq_idx,
1227
- requested_call* rc) {
1228
- if (gpr_atm_acq_load(&server->shutdown_flag)) {
1229
- fail_call(server, cq_idx, rc,
1230
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
899
+ grpc_call_error Server::QueueRequestedCall(size_t cq_idx, RequestedCall* rc) {
900
+ if (ShutdownCalled()) {
901
+ FailCall(cq_idx, rc,
902
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
1231
903
  return GRPC_CALL_OK;
1232
904
  }
1233
905
  RequestMatcherInterface* rm;
1234
906
  switch (rc->type) {
1235
- case BATCH_CALL:
1236
- rm = server->unregistered_request_matcher;
907
+ case RequestedCall::Type::BATCH_CALL:
908
+ rm = unregistered_request_matcher_.get();
1237
909
  break;
1238
- case REGISTERED_CALL:
910
+ case RequestedCall::Type::REGISTERED_CALL:
1239
911
  rm = rc->data.registered.method->matcher.get();
1240
912
  break;
1241
913
  }
@@ -1243,482 +915,598 @@ grpc_call_error queue_call_request(grpc_server* server, size_t cq_idx,
1243
915
  return GRPC_CALL_OK;
1244
916
  }
1245
917
 
1246
- void fail_call(grpc_server* server, size_t cq_idx, requested_call* rc,
1247
- grpc_error* error) {
1248
- *rc->call = nullptr;
1249
- rc->initial_metadata->count = 0;
1250
- GPR_ASSERT(error != GRPC_ERROR_NONE);
1251
-
1252
- grpc_cq_end_op(server->cqs[cq_idx], rc->tag, error, done_request_event, rc,
1253
- &rc->completion);
1254
- }
1255
- } // namespace
1256
-
1257
- namespace grpc_core {
1258
-
1259
- void SetServerRegisteredMethodAllocator(
1260
- grpc_server* server, grpc_completion_queue* cq, void* method_tag,
1261
- std::function<ServerRegisteredCallAllocation()> allocator) {
1262
- registered_method* rm = static_cast<registered_method*>(method_tag);
1263
- rm->matcher.reset(new AllocatingRequestMatcherRegistered(
1264
- server, cq, rm, std::move(allocator)));
1265
- }
1266
-
1267
- void SetServerBatchMethodAllocator(
1268
- grpc_server* server, grpc_completion_queue* cq,
1269
- std::function<ServerBatchCallAllocation()> allocator) {
1270
- GPR_DEBUG_ASSERT(server->unregistered_request_matcher == nullptr);
1271
- server->unregistered_request_matcher =
1272
- new AllocatingRequestMatcherBatch(server, cq, std::move(allocator));
918
+ grpc_call_error Server::RequestCall(grpc_call** call,
919
+ grpc_call_details* details,
920
+ grpc_metadata_array* request_metadata,
921
+ grpc_completion_queue* cq_bound_to_call,
922
+ grpc_completion_queue* cq_for_notification,
923
+ void* tag) {
924
+ size_t cq_idx;
925
+ grpc_call_error error = ValidateServerRequestAndCq(
926
+ &cq_idx, cq_for_notification, tag, nullptr, nullptr);
927
+ if (error != GRPC_CALL_OK) {
928
+ return error;
929
+ }
930
+ RequestedCall* rc =
931
+ new RequestedCall(tag, cq_bound_to_call, call, request_metadata, details);
932
+ return QueueRequestedCall(cq_idx, rc);
1273
933
  }
1274
934
 
1275
- }; // namespace grpc_core
1276
-
1277
- const grpc_channel_filter grpc_server_top_filter = {
1278
- server_start_transport_stream_op_batch,
1279
- grpc_channel_next_op,
1280
- sizeof(call_data),
1281
- server_init_call_elem,
1282
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
1283
- server_destroy_call_elem,
1284
- sizeof(channel_data),
1285
- server_init_channel_elem,
1286
- server_destroy_channel_elem,
1287
- grpc_channel_next_get_info,
1288
- "server",
1289
- };
1290
-
1291
- void grpc_server_register_completion_queue(grpc_server* server,
1292
- grpc_completion_queue* cq,
1293
- void* reserved) {
1294
- GRPC_API_TRACE(
1295
- "grpc_server_register_completion_queue(server=%p, cq=%p, reserved=%p)", 3,
1296
- (server, cq, reserved));
1297
-
1298
- auto cq_type = grpc_get_cq_completion_type(cq);
1299
- if (cq_type != GRPC_CQ_NEXT && cq_type != GRPC_CQ_CALLBACK) {
1300
- gpr_log(GPR_INFO,
1301
- "Completion queue of type %d is being registered as a "
1302
- "server-completion-queue",
1303
- static_cast<int>(cq_type));
1304
- /* Ideally we should log an error and abort but ruby-wrapped-language API
1305
- calls grpc_completion_queue_pluck() on server completion queues */
935
+ grpc_call_error Server::RequestRegisteredCall(
936
+ RegisteredMethod* rm, grpc_call** call, gpr_timespec* deadline,
937
+ grpc_metadata_array* request_metadata, grpc_byte_buffer** optional_payload,
938
+ grpc_completion_queue* cq_bound_to_call,
939
+ grpc_completion_queue* cq_for_notification, void* tag_new) {
940
+ size_t cq_idx;
941
+ grpc_call_error error = ValidateServerRequestAndCq(
942
+ &cq_idx, cq_for_notification, tag_new, optional_payload, rm);
943
+ if (error != GRPC_CALL_OK) {
944
+ return error;
1306
945
  }
1307
-
1308
- register_completion_queue(server, cq, reserved);
946
+ RequestedCall* rc =
947
+ new RequestedCall(tag_new, cq_bound_to_call, call, request_metadata, rm,
948
+ deadline, optional_payload);
949
+ return QueueRequestedCall(cq_idx, rc);
1309
950
  }
1310
951
 
1311
- grpc_server* grpc_server_create(const grpc_channel_args* args, void* reserved) {
1312
- grpc_core::ExecCtx exec_ctx;
1313
- GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
1314
-
1315
- grpc_server* server =
1316
- static_cast<grpc_server*>(gpr_zalloc(sizeof(grpc_server)));
1317
-
1318
- gpr_mu_init(&server->mu_global);
1319
- gpr_mu_init(&server->mu_call);
1320
- gpr_cv_init(&server->starting_cv);
1321
-
1322
- /* decremented by grpc_server_destroy */
1323
- new (&server->internal_refcount) grpc_core::RefCount();
1324
- server->root_channel_data.next = server->root_channel_data.prev =
1325
- &server->root_channel_data;
1326
-
1327
- server->channel_args = grpc_channel_args_copy(args);
952
+ //
953
+ // Server::ChannelData::ConnectivityWatcher
954
+ //
1328
955
 
1329
- const grpc_arg* arg = grpc_channel_args_find(args, GRPC_ARG_ENABLE_CHANNELZ);
1330
- if (grpc_channel_arg_get_bool(arg, GRPC_ENABLE_CHANNELZ_DEFAULT)) {
1331
- arg = grpc_channel_args_find(
1332
- args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE);
1333
- size_t channel_tracer_max_memory = grpc_channel_arg_get_integer(
1334
- arg,
1335
- {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
1336
- server->channelz_server =
1337
- grpc_core::MakeRefCounted<grpc_core::channelz::ServerNode>(
1338
- server, channel_tracer_max_memory);
1339
- server->channelz_server->AddTraceEvent(
1340
- grpc_core::channelz::ChannelTrace::Severity::Info,
1341
- grpc_slice_from_static_string("Server created"));
956
+ class Server::ChannelData::ConnectivityWatcher
957
+ : public AsyncConnectivityStateWatcherInterface {
958
+ public:
959
+ explicit ConnectivityWatcher(ChannelData* chand) : chand_(chand) {
960
+ GRPC_CHANNEL_INTERNAL_REF(chand_->channel_, "connectivity");
1342
961
  }
1343
962
 
1344
- if (args != nullptr) {
1345
- grpc_resource_quota* resource_quota =
1346
- grpc_resource_quota_from_channel_args(args, false /* create */);
1347
- if (resource_quota != nullptr) {
1348
- server->default_resource_user =
1349
- grpc_resource_user_create(resource_quota, "default");
1350
- }
963
+ ~ConnectivityWatcher() override {
964
+ GRPC_CHANNEL_INTERNAL_UNREF(chand_->channel_, "connectivity");
1351
965
  }
1352
966
 
1353
- return server;
1354
- }
1355
-
1356
- void* grpc_server_register_method(
1357
- grpc_server* server, const char* method, const char* host,
1358
- grpc_server_register_method_payload_handling payload_handling,
1359
- uint32_t flags) {
1360
- registered_method* m;
1361
- GRPC_API_TRACE(
1362
- "grpc_server_register_method(server=%p, method=%s, host=%s, "
1363
- "flags=0x%08x)",
1364
- 4, (server, method, host, flags));
1365
- if (!method) {
1366
- gpr_log(GPR_ERROR,
1367
- "grpc_server_register_method method string cannot be NULL");
1368
- return nullptr;
1369
- }
1370
- for (m = server->registered_methods; m; m = m->next) {
1371
- if (streq(m->method, method) && streq(m->host, host)) {
1372
- gpr_log(GPR_ERROR, "duplicate registration for %s@%s", method,
1373
- host ? host : "*");
1374
- return nullptr;
1375
- }
1376
- }
1377
- if ((flags & ~GRPC_INITIAL_METADATA_USED_MASK) != 0) {
1378
- gpr_log(GPR_ERROR, "grpc_server_register_method invalid flags 0x%08x",
1379
- flags);
1380
- return nullptr;
967
+ private:
968
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
969
+ const absl::Status& /*status*/) override {
970
+ // Don't do anything until we are being shut down.
971
+ if (new_state != GRPC_CHANNEL_SHUTDOWN) return;
972
+ // Shut down channel.
973
+ MutexLock lock(&chand_->server_->mu_global_);
974
+ chand_->Destroy();
1381
975
  }
1382
- m = new registered_method(method, host, payload_handling, flags);
1383
- m->next = server->registered_methods;
1384
- server->registered_methods = m;
1385
- return m;
1386
- }
1387
976
 
1388
- void grpc_server_start(grpc_server* server) {
1389
- size_t i;
1390
- grpc_core::ExecCtx exec_ctx;
977
+ ChannelData* chand_;
978
+ };
1391
979
 
1392
- GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server));
980
+ //
981
+ // Server::ChannelData
982
+ //
1393
983
 
1394
- server->started = true;
1395
- server->pollset_count = 0;
1396
- server->pollsets = static_cast<grpc_pollset**>(
1397
- gpr_malloc(sizeof(grpc_pollset*) * server->cq_count));
1398
- for (i = 0; i < server->cq_count; i++) {
1399
- if (grpc_cq_can_listen(server->cqs[i])) {
1400
- server->pollsets[server->pollset_count++] =
1401
- grpc_cq_pollset(server->cqs[i]);
984
+ Server::ChannelData::~ChannelData() {
985
+ registered_methods_.reset();
986
+ if (server_ != nullptr) {
987
+ if (server_->channelz_node_ != nullptr && channelz_socket_uuid_ != 0) {
988
+ server_->channelz_node_->RemoveChildSocket(channelz_socket_uuid_);
1402
989
  }
1403
- }
1404
- if (server->unregistered_request_matcher == nullptr) {
1405
- server->unregistered_request_matcher = new RealRequestMatcher(server);
1406
- }
1407
- for (registered_method* rm = server->registered_methods; rm; rm = rm->next) {
1408
- if (rm->matcher == nullptr) {
1409
- rm->matcher.reset(new RealRequestMatcher(server));
990
+ {
991
+ MutexLock lock(&server_->mu_global_);
992
+ if (list_position_.has_value()) {
993
+ server_->channels_.erase(*list_position_);
994
+ list_position_.reset();
995
+ }
996
+ server_->MaybeFinishShutdown();
1410
997
  }
1411
998
  }
1412
-
1413
- gpr_mu_lock(&server->mu_global);
1414
- server->starting = true;
1415
- gpr_mu_unlock(&server->mu_global);
1416
-
1417
- for (listener* l = server->listeners; l; l = l->next) {
1418
- l->start(server, l->arg, server->pollsets, server->pollset_count);
1419
- }
1420
-
1421
- gpr_mu_lock(&server->mu_global);
1422
- server->starting = false;
1423
- gpr_cv_signal(&server->starting_cv);
1424
- gpr_mu_unlock(&server->mu_global);
1425
- }
1426
-
1427
- void grpc_server_get_pollsets(grpc_server* server, grpc_pollset*** pollsets,
1428
- size_t* pollset_count) {
1429
- *pollset_count = server->pollset_count;
1430
- *pollsets = server->pollsets;
1431
999
  }
1432
1000
 
1433
- void grpc_server_setup_transport(
1434
- grpc_server* s, grpc_transport* transport, grpc_pollset* accepting_pollset,
1435
- const grpc_channel_args* args,
1436
- const grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode>&
1437
- socket_node,
1438
- grpc_resource_user* resource_user) {
1439
- size_t num_registered_methods;
1440
- size_t alloc;
1441
- registered_method* rm;
1442
- channel_registered_method* crm;
1443
- grpc_channel* channel;
1444
- channel_data* chand;
1445
- uint32_t hash;
1446
- size_t slots;
1447
- uint32_t probes;
1448
- uint32_t max_probes = 0;
1449
- grpc_transport_op* op = nullptr;
1450
-
1451
- channel = grpc_channel_create(nullptr, args, GRPC_SERVER_CHANNEL, transport,
1452
- resource_user);
1453
- chand = static_cast<channel_data*>(
1454
- grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0)
1455
- ->channel_data);
1456
- chand->server = s;
1457
- server_ref(s);
1458
- chand->channel = channel;
1459
- if (socket_node != nullptr) {
1460
- chand->channelz_socket_uuid = socket_node->uuid();
1461
- s->channelz_server->AddChildSocket(socket_node);
1462
- } else {
1463
- chand->channelz_socket_uuid = 0;
1464
- }
1465
-
1466
- size_t cq_idx;
1467
- for (cq_idx = 0; cq_idx < s->cq_count; cq_idx++) {
1468
- if (grpc_cq_pollset(s->cqs[cq_idx]) == accepting_pollset) break;
1469
- }
1470
- if (cq_idx == s->cq_count) {
1471
- /* completion queue not found: pick a random one to publish new calls to */
1472
- cq_idx = static_cast<size_t>(rand()) % s->cq_count;
1473
- }
1474
- chand->cq_idx = cq_idx;
1475
-
1476
- num_registered_methods = 0;
1477
- for (rm = s->registered_methods; rm; rm = rm->next) {
1478
- num_registered_methods++;
1479
- }
1480
- /* build a lookup table phrased in terms of mdstr's in this channels context
1481
- to quickly find registered methods */
1001
+ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
1002
+ grpc_channel* channel, size_t cq_idx,
1003
+ grpc_transport* transport,
1004
+ intptr_t channelz_socket_uuid) {
1005
+ server_ = std::move(server);
1006
+ channel_ = channel;
1007
+ cq_idx_ = cq_idx;
1008
+ channelz_socket_uuid_ = channelz_socket_uuid;
1009
+ // Build a lookup table phrased in terms of mdstr's in this channels context
1010
+ // to quickly find registered methods.
1011
+ size_t num_registered_methods = server_->registered_methods_.size();
1482
1012
  if (num_registered_methods > 0) {
1483
- slots = 2 * num_registered_methods;
1484
- alloc = sizeof(channel_registered_method) * slots;
1485
- chand->registered_methods =
1486
- static_cast<channel_registered_method*>(gpr_zalloc(alloc));
1487
- for (rm = s->registered_methods; rm; rm = rm->next) {
1488
- grpc_core::ExternallyManagedSlice host;
1489
- grpc_core::ExternallyManagedSlice method(rm->method.c_str());
1013
+ uint32_t max_probes = 0;
1014
+ size_t slots = 2 * num_registered_methods;
1015
+ registered_methods_ =
1016
+ absl::make_unique<std::vector<ChannelRegisteredMethod>>(slots);
1017
+ for (std::unique_ptr<RegisteredMethod>& rm : server_->registered_methods_) {
1018
+ Slice host;
1019
+ Slice method = Slice::FromExternalString(rm->method);
1490
1020
  const bool has_host = !rm->host.empty();
1491
1021
  if (has_host) {
1492
- host = grpc_core::ExternallyManagedSlice(rm->host.c_str());
1022
+ host = Slice::FromExternalString(rm->host.c_str());
1493
1023
  }
1494
- hash = GRPC_MDSTR_KV_HASH(has_host ? host.Hash() : 0, method.Hash());
1495
- for (probes = 0; chand->registered_methods[(hash + probes) % slots]
1024
+ uint32_t hash = MixHash32(has_host ? host.Hash() : 0, method.Hash());
1025
+ uint32_t probes = 0;
1026
+ for (probes = 0; (*registered_methods_)[(hash + probes) % slots]
1496
1027
  .server_registered_method != nullptr;
1497
- probes++)
1498
- ;
1028
+ probes++) {
1029
+ }
1499
1030
  if (probes > max_probes) max_probes = probes;
1500
- crm = &chand->registered_methods[(hash + probes) % slots];
1501
- crm->server_registered_method = rm;
1031
+ ChannelRegisteredMethod* crm =
1032
+ &(*registered_methods_)[(hash + probes) % slots];
1033
+ crm->server_registered_method = rm.get();
1502
1034
  crm->flags = rm->flags;
1503
1035
  crm->has_host = has_host;
1504
1036
  if (has_host) {
1505
- crm->host = host;
1037
+ crm->host = std::move(host);
1506
1038
  }
1507
- crm->method = method;
1039
+ crm->method = std::move(method);
1508
1040
  }
1509
1041
  GPR_ASSERT(slots <= UINT32_MAX);
1510
- chand->registered_method_slots = static_cast<uint32_t>(slots);
1511
- chand->registered_method_max_probes = max_probes;
1042
+ registered_method_max_probes_ = max_probes;
1512
1043
  }
1513
-
1514
- gpr_mu_lock(&s->mu_global);
1515
- chand->next = &s->root_channel_data;
1516
- chand->prev = chand->next->prev;
1517
- chand->next->prev = chand->prev->next = chand;
1518
- gpr_mu_unlock(&s->mu_global);
1519
-
1520
- op = grpc_make_transport_op(nullptr);
1044
+ // Publish channel.
1045
+ {
1046
+ MutexLock lock(&server_->mu_global_);
1047
+ server_->channels_.push_front(this);
1048
+ list_position_ = server_->channels_.begin();
1049
+ }
1050
+ // Start accept_stream transport op.
1051
+ grpc_transport_op* op = grpc_make_transport_op(nullptr);
1521
1052
  op->set_accept_stream = true;
1522
- op->set_accept_stream_fn = accept_stream;
1523
- op->set_accept_stream_user_data = chand;
1524
- op->start_connectivity_watch.reset(new ConnectivityWatcher(chand));
1525
- if (gpr_atm_acq_load(&s->shutdown_flag) != 0) {
1053
+ op->set_accept_stream_fn = AcceptStream;
1054
+ op->set_accept_stream_user_data = this;
1055
+ op->start_connectivity_watch = MakeOrphanable<ConnectivityWatcher>(this);
1056
+ if (server_->ShutdownCalled()) {
1526
1057
  op->disconnect_with_error =
1527
1058
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown");
1528
1059
  }
1529
1060
  grpc_transport_perform_op(transport, op);
1530
1061
  }
1531
1062
 
1532
- /*
1533
- - Kills all pending requests-for-incoming-RPC-calls (i.e the requests made via
1534
- grpc_server_request_call and grpc_server_request_registered call will now be
1535
- cancelled). See 'kill_pending_work_locked()'
1536
-
1537
- - Shuts down the listeners (i.e the server will no longer listen on the port
1538
- for new incoming channels).
1539
-
1540
- - Iterates through all channels on the server and sends shutdown msg (see
1541
- 'channel_broadcaster_shutdown()' for details) to the clients via the
1542
- transport layer. The transport layer then guarantees the following:
1543
- -- Sends shutdown to the client (for eg: HTTP2 transport sends GOAWAY)
1544
- -- If the server has outstanding calls that are in the process, the
1545
- connection is NOT closed until the server is done with all those calls
1546
- -- Once, there are no more calls in progress, the channel is closed
1547
- */
1548
- void grpc_server_shutdown_and_notify(grpc_server* server,
1549
- grpc_completion_queue* cq, void* tag) {
1550
- listener* l;
1551
- shutdown_tag* sdt;
1552
- channel_broadcaster broadcaster;
1553
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1554
- grpc_core::ExecCtx exec_ctx;
1063
+ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
1064
+ const grpc_slice& host, const grpc_slice& path) {
1065
+ if (registered_methods_ == nullptr) return nullptr;
1066
+ /* TODO(ctiller): unify these two searches */
1067
+ /* check for an exact match with host */
1068
+ uint32_t hash =
1069
+ MixHash32(grpc_slice_hash_internal(host), grpc_slice_hash_internal(path));
1070
+ for (size_t i = 0; i <= registered_method_max_probes_; i++) {
1071
+ ChannelRegisteredMethod* rm =
1072
+ &(*registered_methods_)[(hash + i) % registered_methods_->size()];
1073
+ if (rm->server_registered_method == nullptr) break;
1074
+ if (!rm->has_host) continue;
1075
+ if (rm->host != host) continue;
1076
+ if (rm->method != path) continue;
1077
+ return rm;
1078
+ }
1079
+ /* check for a wildcard method definition (no host set) */
1080
+ hash = MixHash32(0, grpc_slice_hash_internal(path));
1081
+ for (size_t i = 0; i <= registered_method_max_probes_; i++) {
1082
+ ChannelRegisteredMethod* rm =
1083
+ &(*registered_methods_)[(hash + i) % registered_methods_->size()];
1084
+ if (rm->server_registered_method == nullptr) break;
1085
+ if (rm->has_host) continue;
1086
+ if (rm->method != path) continue;
1087
+ return rm;
1088
+ }
1089
+ return nullptr;
1090
+ }
1555
1091
 
1556
- GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3,
1557
- (server, cq, tag));
1092
+ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
1093
+ const void* transport_server_data) {
1094
+ auto* chand = static_cast<Server::ChannelData*>(arg);
1095
+ /* create a call */
1096
+ grpc_call_create_args args;
1097
+ args.channel = chand->channel_;
1098
+ args.server = chand->server_.get();
1099
+ args.parent = nullptr;
1100
+ args.propagation_mask = 0;
1101
+ args.cq = nullptr;
1102
+ args.pollset_set_alternative = nullptr;
1103
+ args.server_transport_data = transport_server_data;
1104
+ args.send_deadline = Timestamp::InfFuture();
1105
+ grpc_call* call;
1106
+ grpc_error_handle error = grpc_call_create(&args, &call);
1107
+ grpc_call_element* elem =
1108
+ grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
1109
+ auto* calld = static_cast<Server::CallData*>(elem->call_data);
1110
+ if (error != GRPC_ERROR_NONE) {
1111
+ GRPC_ERROR_UNREF(error);
1112
+ calld->FailCallCreation();
1113
+ return;
1114
+ }
1115
+ calld->Start(elem);
1116
+ }
1117
+
1118
+ void Server::ChannelData::FinishDestroy(void* arg,
1119
+ grpc_error_handle /*error*/) {
1120
+ auto* chand = static_cast<Server::ChannelData*>(arg);
1121
+ Server* server = chand->server_.get();
1122
+ GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server");
1123
+ server->Unref();
1124
+ }
1558
1125
 
1559
- /* wait for startup to be finished: locks mu_global */
1560
- gpr_mu_lock(&server->mu_global);
1561
- while (server->starting) {
1562
- gpr_cv_wait(&server->starting_cv, &server->mu_global,
1563
- gpr_inf_future(GPR_CLOCK_MONOTONIC));
1126
+ void Server::ChannelData::Destroy() {
1127
+ if (!list_position_.has_value()) return;
1128
+ GPR_ASSERT(server_ != nullptr);
1129
+ server_->channels_.erase(*list_position_);
1130
+ list_position_.reset();
1131
+ server_->Ref().release();
1132
+ server_->MaybeFinishShutdown();
1133
+ GRPC_CLOSURE_INIT(&finish_destroy_channel_closure_, FinishDestroy, this,
1134
+ grpc_schedule_on_exec_ctx);
1135
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_server_channel_trace)) {
1136
+ gpr_log(GPR_INFO, "Disconnected client");
1564
1137
  }
1138
+ grpc_transport_op* op =
1139
+ grpc_make_transport_op(&finish_destroy_channel_closure_);
1140
+ op->set_accept_stream = true;
1141
+ grpc_channel_next_op(
1142
+ grpc_channel_stack_element(grpc_channel_get_channel_stack(channel_), 0),
1143
+ op);
1144
+ }
1565
1145
 
1566
- /* stay locked, and gather up some stuff to do */
1567
- GPR_ASSERT(grpc_cq_begin_op(cq, tag));
1568
- if (server->shutdown_published) {
1569
- grpc_cq_end_op(cq, tag, GRPC_ERROR_NONE, done_published_shutdown, nullptr,
1570
- static_cast<grpc_cq_completion*>(
1571
- gpr_malloc(sizeof(grpc_cq_completion))));
1572
- gpr_mu_unlock(&server->mu_global);
1573
- return;
1146
+ grpc_error_handle Server::ChannelData::InitChannelElement(
1147
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
1148
+ GPR_ASSERT(args->is_first);
1149
+ GPR_ASSERT(!args->is_last);
1150
+ new (elem->channel_data) ChannelData();
1151
+ return GRPC_ERROR_NONE;
1152
+ }
1153
+
1154
+ void Server::ChannelData::DestroyChannelElement(grpc_channel_element* elem) {
1155
+ auto* chand = static_cast<ChannelData*>(elem->channel_data);
1156
+ chand->~ChannelData();
1157
+ }
1158
+
1159
+ //
1160
+ // Server::CallData
1161
+ //
1162
+
1163
+ Server::CallData::CallData(grpc_call_element* elem,
1164
+ const grpc_call_element_args& args,
1165
+ RefCountedPtr<Server> server)
1166
+ : server_(std::move(server)),
1167
+ call_(grpc_call_from_top_element(elem)),
1168
+ call_combiner_(args.call_combiner) {
1169
+ GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady,
1170
+ elem, grpc_schedule_on_exec_ctx);
1171
+ GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
1172
+ elem, grpc_schedule_on_exec_ctx);
1173
+ }
1174
+
1175
+ Server::CallData::~CallData() {
1176
+ GPR_ASSERT(state_.load(std::memory_order_relaxed) != CallState::PENDING);
1177
+ GRPC_ERROR_UNREF(recv_initial_metadata_error_);
1178
+ grpc_metadata_array_destroy(&initial_metadata_);
1179
+ grpc_byte_buffer_destroy(payload_);
1180
+ }
1181
+
1182
+ void Server::CallData::SetState(CallState state) {
1183
+ state_.store(state, std::memory_order_relaxed);
1184
+ }
1185
+
1186
+ bool Server::CallData::MaybeActivate() {
1187
+ CallState expected = CallState::PENDING;
1188
+ return state_.compare_exchange_strong(expected, CallState::ACTIVATED,
1189
+ std::memory_order_acq_rel,
1190
+ std::memory_order_relaxed);
1191
+ }
1192
+
1193
+ void Server::CallData::FailCallCreation() {
1194
+ CallState expected_not_started = CallState::NOT_STARTED;
1195
+ CallState expected_pending = CallState::PENDING;
1196
+ if (state_.compare_exchange_strong(expected_not_started, CallState::ZOMBIED,
1197
+ std::memory_order_acq_rel,
1198
+ std::memory_order_acquire)) {
1199
+ KillZombie();
1200
+ } else if (state_.compare_exchange_strong(
1201
+ expected_pending, CallState::ZOMBIED,
1202
+ std::memory_order_acq_rel, std::memory_order_relaxed)) {
1203
+ // Zombied call will be destroyed when it's removed from the pending
1204
+ // queue... later.
1574
1205
  }
1575
- server->shutdown_tags = static_cast<shutdown_tag*>(
1576
- gpr_realloc(server->shutdown_tags,
1577
- sizeof(shutdown_tag) * (server->num_shutdown_tags + 1)));
1578
- sdt = &server->shutdown_tags[server->num_shutdown_tags++];
1579
- sdt->tag = tag;
1580
- sdt->cq = cq;
1581
- if (gpr_atm_acq_load(&server->shutdown_flag)) {
1582
- gpr_mu_unlock(&server->mu_global);
1583
- return;
1206
+ }
1207
+
1208
+ void Server::CallData::Start(grpc_call_element* elem) {
1209
+ grpc_op op;
1210
+ op.op = GRPC_OP_RECV_INITIAL_METADATA;
1211
+ op.flags = 0;
1212
+ op.reserved = nullptr;
1213
+ op.data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_;
1214
+ GRPC_CLOSURE_INIT(&recv_initial_metadata_batch_complete_,
1215
+ RecvInitialMetadataBatchComplete, elem,
1216
+ grpc_schedule_on_exec_ctx);
1217
+ grpc_call_start_batch_and_execute(call_, &op, 1,
1218
+ &recv_initial_metadata_batch_complete_);
1219
+ }
1220
+
1221
+ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
1222
+ grpc_call_set_completion_queue(call_, rc->cq_bound_to_call);
1223
+ *rc->call = call_;
1224
+ cq_new_ = server_->cqs_[cq_idx];
1225
+ std::swap(*rc->initial_metadata, initial_metadata_);
1226
+ switch (rc->type) {
1227
+ case RequestedCall::Type::BATCH_CALL:
1228
+ GPR_ASSERT(host_.has_value());
1229
+ GPR_ASSERT(path_.has_value());
1230
+ rc->data.batch.details->host = grpc_slice_ref_internal(host_->c_slice());
1231
+ rc->data.batch.details->method =
1232
+ grpc_slice_ref_internal(path_->c_slice());
1233
+ rc->data.batch.details->deadline =
1234
+ deadline_.as_timespec(GPR_CLOCK_MONOTONIC);
1235
+ rc->data.batch.details->flags = recv_initial_metadata_flags_;
1236
+ break;
1237
+ case RequestedCall::Type::REGISTERED_CALL:
1238
+ *rc->data.registered.deadline =
1239
+ deadline_.as_timespec(GPR_CLOCK_MONOTONIC);
1240
+ if (rc->data.registered.optional_payload != nullptr) {
1241
+ *rc->data.registered.optional_payload = payload_;
1242
+ payload_ = nullptr;
1243
+ }
1244
+ break;
1245
+ default:
1246
+ GPR_UNREACHABLE_CODE(return );
1584
1247
  }
1248
+ grpc_cq_end_op(cq_new_, rc->tag, GRPC_ERROR_NONE, Server::DoneRequestEvent,
1249
+ rc, &rc->completion, true);
1250
+ }
1585
1251
 
1586
- server->last_shutdown_message_time = gpr_now(GPR_CLOCK_REALTIME);
1252
+ void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
1253
+ grpc_call_element* call_elem = static_cast<grpc_call_element*>(arg);
1254
+ auto* calld = static_cast<Server::CallData*>(call_elem->call_data);
1255
+ auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
1256
+ RequestMatcherInterface* rm = calld->matcher_;
1257
+ Server* server = rm->server();
1258
+ if (error != GRPC_ERROR_NONE || server->ShutdownCalled()) {
1259
+ calld->state_.store(CallState::ZOMBIED, std::memory_order_relaxed);
1260
+ calld->KillZombie();
1261
+ return;
1262
+ }
1263
+ rm->MatchOrQueue(chand->cq_idx(), calld);
1264
+ }
1587
1265
 
1588
- channel_broadcaster_init(server, &broadcaster);
1266
+ namespace {
1589
1267
 
1590
- gpr_atm_rel_store(&server->shutdown_flag, 1);
1268
+ void KillZombieClosure(void* call, grpc_error_handle /*error*/) {
1269
+ grpc_call_unref(static_cast<grpc_call*>(call));
1270
+ }
1591
1271
 
1592
- /* collect all unregistered then registered calls */
1593
- gpr_mu_lock(&server->mu_call);
1594
- kill_pending_work_locked(
1595
- server, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
1596
- gpr_mu_unlock(&server->mu_call);
1272
+ } // namespace
1597
1273
 
1598
- maybe_finish_shutdown(server);
1599
- gpr_mu_unlock(&server->mu_global);
1274
+ void Server::CallData::KillZombie() {
1275
+ GRPC_CLOSURE_INIT(&kill_zombie_closure_, KillZombieClosure, call_,
1276
+ grpc_schedule_on_exec_ctx);
1277
+ ExecCtx::Run(DEBUG_LOCATION, &kill_zombie_closure_, GRPC_ERROR_NONE);
1278
+ }
1600
1279
 
1601
- /* Shutdown listeners */
1602
- for (l = server->listeners; l; l = l->next) {
1603
- GRPC_CLOSURE_INIT(&l->destroy_done, listener_destroy_done, server,
1604
- grpc_schedule_on_exec_ctx);
1605
- l->destroy(server, l->arg, &l->destroy_done);
1606
- if (server->channelz_server != nullptr && l->socket_uuid != 0) {
1607
- server->channelz_server->RemoveChildListenSocket(l->socket_uuid);
1280
+ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
1281
+ auto* chand = static_cast<ChannelData*>(elem->channel_data);
1282
+ if (server_->ShutdownCalled()) {
1283
+ state_.store(CallState::ZOMBIED, std::memory_order_relaxed);
1284
+ KillZombie();
1285
+ return;
1286
+ }
1287
+ // Find request matcher.
1288
+ matcher_ = server_->unregistered_request_matcher_.get();
1289
+ grpc_server_register_method_payload_handling payload_handling =
1290
+ GRPC_SRM_PAYLOAD_NONE;
1291
+ if (path_.has_value() && host_.has_value()) {
1292
+ ChannelRegisteredMethod* rm =
1293
+ chand->GetRegisteredMethod(host_->c_slice(), path_->c_slice());
1294
+ if (rm != nullptr) {
1295
+ matcher_ = rm->server_registered_method->matcher.get();
1296
+ payload_handling = rm->server_registered_method->payload_handling;
1608
1297
  }
1609
1298
  }
1299
+ // Start recv_message op if needed.
1300
+ switch (payload_handling) {
1301
+ case GRPC_SRM_PAYLOAD_NONE:
1302
+ PublishNewRpc(elem, GRPC_ERROR_NONE);
1303
+ break;
1304
+ case GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER: {
1305
+ grpc_op op;
1306
+ op.op = GRPC_OP_RECV_MESSAGE;
1307
+ op.flags = 0;
1308
+ op.reserved = nullptr;
1309
+ op.data.recv_message.recv_message = &payload_;
1310
+ GRPC_CLOSURE_INIT(&publish_, PublishNewRpc, elem,
1311
+ grpc_schedule_on_exec_ctx);
1312
+ grpc_call_start_batch_and_execute(call_, &op, 1, &publish_);
1313
+ break;
1314
+ }
1315
+ }
1316
+ }
1610
1317
 
1611
- channel_broadcaster_shutdown(&broadcaster, true /* send_goaway */,
1612
- GRPC_ERROR_NONE);
1318
+ void Server::CallData::RecvInitialMetadataBatchComplete(
1319
+ void* arg, grpc_error_handle error) {
1320
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1321
+ auto* calld = static_cast<Server::CallData*>(elem->call_data);
1322
+ if (error != GRPC_ERROR_NONE) {
1323
+ gpr_log(GPR_DEBUG, "Failed call creation: %s",
1324
+ grpc_error_std_string(error).c_str());
1325
+ calld->FailCallCreation();
1326
+ return;
1327
+ }
1328
+ calld->StartNewRpc(elem);
1329
+ }
1613
1330
 
1614
- if (server->default_resource_user != nullptr) {
1615
- grpc_resource_quota_unref(
1616
- grpc_resource_user_quota(server->default_resource_user));
1617
- grpc_resource_user_shutdown(server->default_resource_user);
1618
- grpc_resource_user_unref(server->default_resource_user);
1331
+ void Server::CallData::StartTransportStreamOpBatchImpl(
1332
+ grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
1333
+ if (batch->recv_initial_metadata) {
1334
+ GPR_ASSERT(batch->payload->recv_initial_metadata.recv_flags == nullptr);
1335
+ recv_initial_metadata_ =
1336
+ batch->payload->recv_initial_metadata.recv_initial_metadata;
1337
+ original_recv_initial_metadata_ready_ =
1338
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
1339
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
1340
+ &recv_initial_metadata_ready_;
1341
+ batch->payload->recv_initial_metadata.recv_flags =
1342
+ &recv_initial_metadata_flags_;
1343
+ }
1344
+ if (batch->recv_trailing_metadata) {
1345
+ original_recv_trailing_metadata_ready_ =
1346
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
1347
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1348
+ &recv_trailing_metadata_ready_;
1349
+ }
1350
+ grpc_call_next_op(elem, batch);
1351
+ }
1352
+
1353
+ void Server::CallData::RecvInitialMetadataReady(void* arg,
1354
+ grpc_error_handle error) {
1355
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1356
+ CallData* calld = static_cast<CallData*>(elem->call_data);
1357
+ if (error == GRPC_ERROR_NONE) {
1358
+ calld->path_ = calld->recv_initial_metadata_->Take(HttpPathMetadata());
1359
+ calld->host_ = calld->recv_initial_metadata_->Take(HttpAuthorityMetadata());
1360
+ } else {
1361
+ (void)GRPC_ERROR_REF(error);
1362
+ }
1363
+ auto op_deadline = calld->recv_initial_metadata_->get(GrpcTimeoutMetadata());
1364
+ if (op_deadline.has_value()) {
1365
+ calld->deadline_ = *op_deadline;
1366
+ }
1367
+ if (calld->host_.has_value() && calld->path_.has_value()) {
1368
+ /* do nothing */
1369
+ } else {
1370
+ /* Pass the error reference to calld->recv_initial_metadata_error */
1371
+ grpc_error_handle src_error = error;
1372
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1373
+ "Missing :authority or :path", &src_error, 1);
1374
+ GRPC_ERROR_UNREF(src_error);
1375
+ calld->recv_initial_metadata_error_ = GRPC_ERROR_REF(error);
1619
1376
  }
1377
+ grpc_closure* closure = calld->original_recv_initial_metadata_ready_;
1378
+ calld->original_recv_initial_metadata_ready_ = nullptr;
1379
+ if (calld->seen_recv_trailing_metadata_ready_) {
1380
+ GRPC_CALL_COMBINER_START(calld->call_combiner_,
1381
+ &calld->recv_trailing_metadata_ready_,
1382
+ calld->recv_trailing_metadata_error_,
1383
+ "continue server recv_trailing_metadata_ready");
1384
+ }
1385
+ Closure::Run(DEBUG_LOCATION, closure, error);
1620
1386
  }
1621
1387
 
1622
- void grpc_server_cancel_all_calls(grpc_server* server) {
1623
- channel_broadcaster broadcaster;
1624
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1625
- grpc_core::ExecCtx exec_ctx;
1388
+ void Server::CallData::RecvTrailingMetadataReady(void* arg,
1389
+ grpc_error_handle error) {
1390
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1391
+ CallData* calld = static_cast<CallData*>(elem->call_data);
1392
+ if (calld->original_recv_initial_metadata_ready_ != nullptr) {
1393
+ calld->recv_trailing_metadata_error_ = GRPC_ERROR_REF(error);
1394
+ calld->seen_recv_trailing_metadata_ready_ = true;
1395
+ GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
1396
+ RecvTrailingMetadataReady, elem,
1397
+ grpc_schedule_on_exec_ctx);
1398
+ GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
1399
+ "deferring server recv_trailing_metadata_ready "
1400
+ "until after recv_initial_metadata_ready");
1401
+ return;
1402
+ }
1403
+ error =
1404
+ grpc_error_add_child(GRPC_ERROR_REF(error),
1405
+ GRPC_ERROR_REF(calld->recv_initial_metadata_error_));
1406
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
1407
+ error);
1408
+ }
1626
1409
 
1627
- GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server));
1410
+ grpc_error_handle Server::CallData::InitCallElement(
1411
+ grpc_call_element* elem, const grpc_call_element_args* args) {
1412
+ auto* chand = static_cast<ChannelData*>(elem->channel_data);
1413
+ new (elem->call_data) Server::CallData(elem, *args, chand->server());
1414
+ return GRPC_ERROR_NONE;
1415
+ }
1628
1416
 
1629
- gpr_mu_lock(&server->mu_global);
1630
- channel_broadcaster_init(server, &broadcaster);
1631
- gpr_mu_unlock(&server->mu_global);
1417
+ void Server::CallData::DestroyCallElement(
1418
+ grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
1419
+ grpc_closure* /*ignored*/) {
1420
+ auto* calld = static_cast<CallData*>(elem->call_data);
1421
+ calld->~CallData();
1422
+ }
1632
1423
 
1633
- channel_broadcaster_shutdown(
1634
- &broadcaster, false /* send_goaway */,
1635
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls"));
1424
+ void Server::CallData::StartTransportStreamOpBatch(
1425
+ grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
1426
+ auto* calld = static_cast<CallData*>(elem->call_data);
1427
+ calld->StartTransportStreamOpBatchImpl(elem, batch);
1636
1428
  }
1637
1429
 
1638
- void grpc_server_destroy(grpc_server* server) {
1639
- listener* l;
1640
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1641
- grpc_core::ExecCtx exec_ctx;
1430
+ } // namespace grpc_core
1642
1431
 
1643
- GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server));
1432
+ //
1433
+ // C-core API
1434
+ //
1644
1435
 
1645
- gpr_mu_lock(&server->mu_global);
1646
- GPR_ASSERT(gpr_atm_acq_load(&server->shutdown_flag) || !server->listeners);
1647
- GPR_ASSERT(server->listeners_destroyed == num_listeners(server));
1436
+ grpc_server* grpc_server_create(const grpc_channel_args* args, void* reserved) {
1437
+ grpc_core::ExecCtx exec_ctx;
1438
+ GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
1439
+ const grpc_channel_args* new_args = grpc_core::CoreConfiguration::Get()
1440
+ .channel_args_preconditioning()
1441
+ .PreconditionChannelArgs(args);
1442
+ grpc_core::Server* server = new grpc_core::Server(new_args);
1443
+ grpc_channel_args_destroy(new_args);
1444
+ return server->c_ptr();
1445
+ }
1648
1446
 
1649
- while (server->listeners) {
1650
- l = server->listeners;
1651
- server->listeners = l->next;
1652
- gpr_free(l);
1447
+ void grpc_server_register_completion_queue(grpc_server* server,
1448
+ grpc_completion_queue* cq,
1449
+ void* reserved) {
1450
+ GRPC_API_TRACE(
1451
+ "grpc_server_register_completion_queue(server=%p, cq=%p, reserved=%p)", 3,
1452
+ (server, cq, reserved));
1453
+ GPR_ASSERT(!reserved);
1454
+ auto cq_type = grpc_get_cq_completion_type(cq);
1455
+ if (cq_type != GRPC_CQ_NEXT && cq_type != GRPC_CQ_CALLBACK) {
1456
+ gpr_log(GPR_INFO,
1457
+ "Completion queue of type %d is being registered as a "
1458
+ "server-completion-queue",
1459
+ static_cast<int>(cq_type));
1460
+ /* Ideally we should log an error and abort but ruby-wrapped-language API
1461
+ calls grpc_completion_queue_pluck() on server completion queues */
1653
1462
  }
1463
+ grpc_core::Server::FromC(server)->RegisterCompletionQueue(cq);
1464
+ }
1654
1465
 
1655
- gpr_mu_unlock(&server->mu_global);
1466
+ void* grpc_server_register_method(
1467
+ grpc_server* server, const char* method, const char* host,
1468
+ grpc_server_register_method_payload_handling payload_handling,
1469
+ uint32_t flags) {
1470
+ GRPC_API_TRACE(
1471
+ "grpc_server_register_method(server=%p, method=%s, host=%s, "
1472
+ "flags=0x%08x)",
1473
+ 4, (server, method, host, flags));
1474
+ return grpc_core::Server::FromC(server)->RegisterMethod(
1475
+ method, host, payload_handling, flags);
1476
+ }
1656
1477
 
1657
- server_unref(server);
1478
+ void grpc_server_start(grpc_server* server) {
1479
+ grpc_core::ExecCtx exec_ctx;
1480
+ GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server));
1481
+ grpc_core::Server::FromC(server)->Start();
1658
1482
  }
1659
1483
 
1660
- void grpc_server_add_listener(
1661
- grpc_server* server, void* listener_arg,
1662
- void (*start)(grpc_server* server, void* arg, grpc_pollset** pollsets,
1663
- size_t pollset_count),
1664
- void (*destroy)(grpc_server* server, void* arg, grpc_closure* on_done),
1665
- grpc_core::RefCountedPtr<grpc_core::channelz::ListenSocketNode> node) {
1666
- listener* l = static_cast<listener*>(gpr_malloc(sizeof(listener)));
1667
- l->arg = listener_arg;
1668
- l->start = start;
1669
- l->destroy = destroy;
1670
- l->socket_uuid = 0;
1671
- if (node != nullptr) {
1672
- l->socket_uuid = node->uuid();
1673
- if (server->channelz_server != nullptr) {
1674
- server->channelz_server->AddChildListenSocket(std::move(node));
1675
- }
1676
- }
1677
- l->next = server->listeners;
1678
- server->listeners = l;
1484
+ void grpc_server_shutdown_and_notify(grpc_server* server,
1485
+ grpc_completion_queue* cq, void* tag) {
1486
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1487
+ grpc_core::ExecCtx exec_ctx;
1488
+ GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3,
1489
+ (server, cq, tag));
1490
+ grpc_core::Server::FromC(server)->ShutdownAndNotify(cq, tag);
1679
1491
  }
1680
1492
 
1681
- namespace {
1682
- grpc_call_error ValidateServerRequest(
1683
- grpc_completion_queue* cq_for_notification, void* tag,
1684
- grpc_byte_buffer** optional_payload, registered_method* rm) {
1685
- if ((rm == nullptr && optional_payload != nullptr) ||
1686
- ((rm != nullptr) && ((optional_payload == nullptr) !=
1687
- (rm->payload_handling == GRPC_SRM_PAYLOAD_NONE)))) {
1688
- return GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH;
1689
- }
1690
- if (grpc_cq_begin_op(cq_for_notification, tag) == false) {
1691
- return GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN;
1692
- }
1693
- return GRPC_CALL_OK;
1493
+ void grpc_server_cancel_all_calls(grpc_server* server) {
1494
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1495
+ grpc_core::ExecCtx exec_ctx;
1496
+ GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server));
1497
+ grpc_core::Server::FromC(server)->CancelAllCalls();
1694
1498
  }
1695
- grpc_call_error ValidateServerRequestAndCq(
1696
- size_t* cq_idx, grpc_server* server,
1697
- grpc_completion_queue* cq_for_notification, void* tag,
1698
- grpc_byte_buffer** optional_payload, registered_method* rm) {
1699
- size_t idx;
1700
- for (idx = 0; idx < server->cq_count; idx++) {
1701
- if (server->cqs[idx] == cq_for_notification) {
1702
- break;
1703
- }
1704
- }
1705
- if (idx == server->cq_count) {
1706
- return GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE;
1707
- }
1708
- grpc_call_error error =
1709
- ValidateServerRequest(cq_for_notification, tag, optional_payload, rm);
1710
- if (error != GRPC_CALL_OK) {
1711
- return error;
1712
- }
1713
1499
 
1714
- *cq_idx = idx;
1715
- return GRPC_CALL_OK;
1500
+ void grpc_server_destroy(grpc_server* server) {
1501
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1502
+ grpc_core::ExecCtx exec_ctx;
1503
+ GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server));
1504
+ grpc_core::Server::FromC(server)->Orphan();
1716
1505
  }
1717
- } // namespace
1718
1506
 
1719
1507
  grpc_call_error grpc_server_request_call(
1720
1508
  grpc_server* server, grpc_call** call, grpc_call_details* details,
1721
- grpc_metadata_array* initial_metadata,
1509
+ grpc_metadata_array* request_metadata,
1722
1510
  grpc_completion_queue* cq_bound_to_call,
1723
1511
  grpc_completion_queue* cq_for_notification, void* tag) {
1724
1512
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -1729,72 +1517,53 @@ grpc_call_error grpc_server_request_call(
1729
1517
  "server=%p, call=%p, details=%p, initial_metadata=%p, "
1730
1518
  "cq_bound_to_call=%p, cq_for_notification=%p, tag=%p)",
1731
1519
  7,
1732
- (server, call, details, initial_metadata, cq_bound_to_call,
1520
+ (server, call, details, request_metadata, cq_bound_to_call,
1733
1521
  cq_for_notification, tag));
1734
-
1735
- size_t cq_idx;
1736
- grpc_call_error error = ValidateServerRequestAndCq(
1737
- &cq_idx, server, cq_for_notification, tag, nullptr, nullptr);
1738
- if (error != GRPC_CALL_OK) {
1739
- return error;
1740
- }
1741
-
1742
- requested_call* rc = new requested_call(tag, cq_bound_to_call, call,
1743
- initial_metadata, details);
1744
- return queue_call_request(server, cq_idx, rc);
1522
+ return grpc_core::Server::FromC(server)->RequestCall(
1523
+ call, details, request_metadata, cq_bound_to_call, cq_for_notification,
1524
+ tag);
1745
1525
  }
1746
1526
 
1747
1527
  grpc_call_error grpc_server_request_registered_call(
1748
- grpc_server* server, void* rmp, grpc_call** call, gpr_timespec* deadline,
1749
- grpc_metadata_array* initial_metadata, grpc_byte_buffer** optional_payload,
1528
+ grpc_server* server, void* registered_method, grpc_call** call,
1529
+ gpr_timespec* deadline, grpc_metadata_array* request_metadata,
1530
+ grpc_byte_buffer** optional_payload,
1750
1531
  grpc_completion_queue* cq_bound_to_call,
1751
- grpc_completion_queue* cq_for_notification, void* tag) {
1532
+ grpc_completion_queue* cq_for_notification, void* tag_new) {
1752
1533
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1753
1534
  grpc_core::ExecCtx exec_ctx;
1754
1535
  GRPC_STATS_INC_SERVER_REQUESTED_CALLS();
1755
- registered_method* rm = static_cast<registered_method*>(rmp);
1536
+ auto* rm =
1537
+ static_cast<grpc_core::Server::RegisteredMethod*>(registered_method);
1756
1538
  GRPC_API_TRACE(
1757
1539
  "grpc_server_request_registered_call("
1758
- "server=%p, rmp=%p, call=%p, deadline=%p, initial_metadata=%p, "
1540
+ "server=%p, registered_method=%p, call=%p, deadline=%p, "
1541
+ "request_metadata=%p, "
1759
1542
  "optional_payload=%p, cq_bound_to_call=%p, cq_for_notification=%p, "
1760
1543
  "tag=%p)",
1761
1544
  9,
1762
- (server, rmp, call, deadline, initial_metadata, optional_payload,
1763
- cq_bound_to_call, cq_for_notification, tag));
1764
-
1765
- size_t cq_idx;
1766
- grpc_call_error error = ValidateServerRequestAndCq(
1767
- &cq_idx, server, cq_for_notification, tag, optional_payload, rm);
1768
- if (error != GRPC_CALL_OK) {
1769
- return error;
1770
- }
1771
-
1772
- requested_call* rc =
1773
- new requested_call(tag, cq_bound_to_call, call, initial_metadata, rm,
1774
- deadline, optional_payload);
1775
- return queue_call_request(server, cq_idx, rc);
1776
- }
1777
-
1778
- const grpc_channel_args* grpc_server_get_channel_args(grpc_server* server) {
1779
- return server->channel_args;
1780
- }
1781
-
1782
- grpc_resource_user* grpc_server_get_default_resource_user(grpc_server* server) {
1783
- return server->default_resource_user;
1545
+ (server, registered_method, call, deadline, request_metadata,
1546
+ optional_payload, cq_bound_to_call, cq_for_notification, tag_new));
1547
+ return grpc_core::Server::FromC(server)->RequestRegisteredCall(
1548
+ rm, call, deadline, request_metadata, optional_payload, cq_bound_to_call,
1549
+ cq_for_notification, tag_new);
1784
1550
  }
1785
1551
 
1786
- int grpc_server_has_open_connections(grpc_server* server) {
1787
- int r;
1788
- gpr_mu_lock(&server->mu_global);
1789
- r = server->root_channel_data.next != &server->root_channel_data;
1790
- gpr_mu_unlock(&server->mu_global);
1791
- return r;
1552
+ void grpc_server_set_config_fetcher(
1553
+ grpc_server* server, grpc_server_config_fetcher* server_config_fetcher) {
1554
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1555
+ grpc_core::ExecCtx exec_ctx;
1556
+ GRPC_API_TRACE("grpc_server_set_config_fetcher(server=%p, config_fetcher=%p)",
1557
+ 2, (server, server_config_fetcher));
1558
+ grpc_core::Server::FromC(server)->set_config_fetcher(
1559
+ std::unique_ptr<grpc_server_config_fetcher>(server_config_fetcher));
1792
1560
  }
1793
1561
 
1794
- grpc_core::channelz::ServerNode* grpc_server_get_channelz_node(
1795
- grpc_server* server) {
1796
- if (server == nullptr) {
1797
- return nullptr;
1798
- }
1799
- return server->channelz_server.get();
1562
+ void grpc_server_config_fetcher_destroy(
1563
+ grpc_server_config_fetcher* server_config_fetcher) {
1564
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1565
+ grpc_core::ExecCtx exec_ctx;
1566
+ GRPC_API_TRACE("grpc_server_config_fetcher_destroy(config_fetcher=%p)", 1,
1567
+ (server_config_fetcher));
1568
+ delete server_config_fetcher;
1800
1569
  }