grpc 1.47.0 → 1.49.0.pre1

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 (1053) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +183 -62
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +37 -25
  5. data/include/grpc/event_engine/slice_buffer.h +8 -2
  6. data/include/grpc/grpc.h +3 -3
  7. data/include/grpc/impl/codegen/compression_types.h +2 -1
  8. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  9. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +5 -9
  11. data/include/grpc/impl/codegen/port_platform.h +2 -7
  12. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
  14. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
  15. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
  18. data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
  19. data/src/core/ext/filters/client_channel/client_channel.h +34 -12
  20. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  21. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/ext/filters/client_channel/config_selector.h +13 -5
  24. data/src/core/ext/filters/client_channel/connector.h +5 -6
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  28. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  29. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  31. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +200 -96
  42. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  43. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
  44. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
  45. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
  46. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
  47. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
  48. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
  49. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
  50. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
  55. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  56. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
  57. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  58. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  63. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
  65. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  66. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
  67. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
  68. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  69. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
  70. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
  71. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  72. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
  73. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  74. data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
  75. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  76. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  77. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  78. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
  79. data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
  80. data/src/core/ext/filters/client_channel/subchannel.h +14 -30
  81. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  82. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  83. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  84. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
  85. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
  86. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
  87. data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
  88. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
  89. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
  90. data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
  91. data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
  92. data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
  93. data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
  94. data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
  95. data/src/core/ext/filters/http/client_authority_filter.h +6 -3
  96. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
  97. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
  98. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  99. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
  100. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  101. data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
  102. data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
  103. data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
  104. data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
  105. data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
  106. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  107. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
  108. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
  109. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  110. data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
  111. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
  112. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  113. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
  114. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
  115. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  116. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
  118. data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
  119. data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
  120. data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
  121. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
  122. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
  124. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  125. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  126. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
  131. data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
  133. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
  135. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  136. data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
  137. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  138. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  139. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  140. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  141. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  142. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  143. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  144. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  146. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  147. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  148. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  149. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  150. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  151. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  152. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  153. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  154. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  156. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  157. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  158. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  159. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  160. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  161. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  162. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  163. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  164. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  165. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  166. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  167. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  168. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  172. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  173. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  205. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  206. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  207. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  209. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  210. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  211. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  212. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  213. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  221. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  222. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  223. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  224. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  225. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  226. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  227. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  228. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  231. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  232. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  233. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  234. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  235. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  236. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  237. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  238. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  239. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  240. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  241. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  259. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  271. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  272. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
  273. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  280. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  281. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  282. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  285. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  286. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  287. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  288. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  289. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  290. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  291. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  293. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  294. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  295. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  296. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  313. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  314. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  315. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  316. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  317. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  318. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  319. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  320. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  321. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  322. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  323. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  324. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  325. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  326. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  327. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  328. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  329. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  331. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  332. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  333. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  334. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  335. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  336. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  337. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  338. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  339. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  340. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  341. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  342. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  343. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  344. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  345. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  346. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  347. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  348. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  349. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  350. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  351. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  352. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  353. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  354. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  355. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  356. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  357. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  358. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  359. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  360. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  361. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  362. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  363. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  364. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  365. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  366. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  367. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  368. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  369. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  370. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  371. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  372. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  373. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  374. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  375. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  376. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  377. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  378. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  379. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  380. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  381. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  382. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  383. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  384. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  385. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  386. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  387. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  388. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  389. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  390. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  391. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  392. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  393. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  394. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  395. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  396. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  397. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  398. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  399. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  400. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  401. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  402. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  403. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  404. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  405. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  406. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  407. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  408. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  409. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  410. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  411. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  412. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  413. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  414. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  415. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  416. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  417. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  418. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  422. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  423. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  425. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  426. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  428. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  429. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  430. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  431. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  432. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  434. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  436. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  437. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  438. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  439. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  440. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  441. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  442. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  443. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  444. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  445. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  446. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  447. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  448. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  449. data/src/core/ext/xds/certificate_provider_store.cc +2 -0
  450. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  451. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  452. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  453. data/src/core/ext/xds/upb_utils.h +0 -22
  454. data/src/core/ext/xds/xds_api.cc +68 -103
  455. data/src/core/ext/xds/xds_api.h +30 -32
  456. data/src/core/ext/xds/xds_bootstrap.cc +69 -69
  457. data/src/core/ext/xds/xds_bootstrap.h +37 -19
  458. data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
  459. data/src/core/ext/xds/xds_certificate_provider.h +25 -1
  460. data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
  461. data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
  462. data/src/core/ext/xds/xds_client.cc +583 -1193
  463. data/src/core/ext/xds/xds_client.h +28 -42
  464. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  465. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  466. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  467. data/src/core/ext/xds/xds_client_stats.h +4 -3
  468. data/src/core/ext/xds/xds_cluster.cc +107 -107
  469. data/src/core/ext/xds/xds_cluster.h +14 -5
  470. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
  471. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
  472. data/src/core/ext/xds/xds_common_types.cc +161 -123
  473. data/src/core/ext/xds/xds_common_types.h +16 -9
  474. data/src/core/ext/xds/xds_endpoint.cc +95 -85
  475. data/src/core/ext/xds/xds_endpoint.h +16 -8
  476. data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
  477. data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
  478. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  479. data/src/core/ext/xds/xds_http_filters.h +5 -5
  480. data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
  481. data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
  482. data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
  483. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  484. data/src/core/ext/xds/xds_listener.cc +355 -307
  485. data/src/core/ext/xds/xds_listener.h +13 -4
  486. data/src/core/ext/xds/xds_resource_type.h +16 -5
  487. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  488. data/src/core/ext/xds/xds_route_config.cc +215 -184
  489. data/src/core/ext/xds/xds_route_config.h +39 -16
  490. data/src/core/ext/xds/xds_routing.cc +19 -6
  491. data/src/core/ext/xds/xds_routing.h +12 -9
  492. data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
  493. data/src/core/ext/xds/xds_transport.h +86 -0
  494. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  495. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  496. data/src/core/lib/address_utils/parse_address.cc +24 -25
  497. data/src/core/lib/address_utils/parse_address.h +11 -7
  498. data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
  499. data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
  500. data/src/core/lib/avl/avl.h +47 -25
  501. data/src/core/lib/backoff/backoff.cc +1 -1
  502. data/src/core/lib/backoff/backoff.h +1 -1
  503. data/src/core/lib/channel/call_tracer.h +4 -4
  504. data/src/core/lib/channel/channel_args.cc +88 -19
  505. data/src/core/lib/channel/channel_args.h +114 -62
  506. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  507. data/src/core/lib/channel/channel_fwd.h +26 -0
  508. data/src/core/lib/channel/channel_stack.cc +4 -5
  509. data/src/core/lib/channel/channel_stack.h +1 -11
  510. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  511. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  512. data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
  513. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
  514. data/src/core/lib/channel/channelz.cc +28 -37
  515. data/src/core/lib/channel/channelz.h +11 -3
  516. data/src/core/lib/channel/channelz_registry.cc +4 -5
  517. data/src/core/lib/channel/connected_channel.cc +1 -0
  518. data/src/core/lib/channel/connected_channel.h +1 -0
  519. data/src/core/lib/channel/promise_based_filter.cc +11 -5
  520. data/src/core/lib/channel/promise_based_filter.h +2 -1
  521. data/src/core/lib/compression/compression.cc +6 -1
  522. data/src/core/lib/compression/compression_internal.cc +3 -6
  523. data/src/core/lib/compression/compression_internal.h +3 -2
  524. data/src/core/lib/compression/message_compress.cc +3 -1
  525. data/src/core/lib/compression/message_compress.h +2 -3
  526. data/src/core/lib/config/core_configuration.h +48 -35
  527. data/src/core/lib/debug/stats.cc +15 -18
  528. data/src/core/lib/debug/stats.h +13 -4
  529. data/src/core/lib/debug/stats_data.cc +2 -1
  530. data/src/core/lib/debug/stats_data.h +0 -4
  531. data/src/core/lib/debug/trace.h +13 -12
  532. data/src/core/lib/event_engine/default_event_engine.cc +71 -0
  533. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
  534. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  535. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  536. data/src/core/lib/event_engine/executor/executor.h +38 -0
  537. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  538. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  539. data/src/core/lib/event_engine/forkable.cc +98 -0
  540. data/src/core/lib/event_engine/forkable.h +61 -0
  541. data/src/core/lib/event_engine/poller.h +54 -0
  542. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
  543. data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
  544. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  545. data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
  546. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  547. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  548. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
  549. data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
  550. data/src/core/lib/event_engine/promise.h +78 -0
  551. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  552. data/src/core/lib/event_engine/thread_pool.cc +158 -0
  553. data/src/core/lib/event_engine/thread_pool.h +81 -0
  554. data/src/core/lib/event_engine/utils.cc +49 -0
  555. data/src/core/lib/event_engine/utils.h +40 -0
  556. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  557. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  558. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  559. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  560. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  561. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  562. data/src/core/lib/gpr/time.cc +11 -9
  563. data/src/core/lib/gpr/time_posix.cc +6 -9
  564. data/src/core/lib/gpr/time_windows.cc +10 -7
  565. data/src/core/lib/gpr/useful.h +29 -0
  566. data/src/core/lib/gprpp/bitset.h +3 -13
  567. data/src/core/lib/gprpp/debug_location.h +39 -7
  568. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  569. data/src/core/lib/gprpp/no_destruct.h +94 -0
  570. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  571. data/src/core/lib/gprpp/status_helper.cc +45 -30
  572. data/src/core/lib/gprpp/table.h +0 -1
  573. data/src/core/lib/gprpp/time.cc +8 -0
  574. data/src/core/lib/gprpp/time.h +4 -0
  575. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  576. data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
  577. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  578. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
  579. data/src/core/lib/http/format_request.cc +5 -4
  580. data/src/core/lib/http/format_request.h +1 -1
  581. data/src/core/lib/http/httpcli.cc +29 -35
  582. data/src/core/lib/http/httpcli.h +19 -3
  583. data/src/core/lib/http/httpcli_security_connector.cc +26 -14
  584. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  585. data/src/core/lib/http/parser.cc +6 -7
  586. data/src/core/lib/http/parser.h +3 -0
  587. data/src/core/lib/iomgr/call_combiner.cc +2 -28
  588. data/src/core/lib/iomgr/closure.h +0 -9
  589. data/src/core/lib/iomgr/combiner.cc +0 -20
  590. data/src/core/lib/iomgr/endpoint.h +1 -1
  591. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
  592. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  593. data/src/core/lib/iomgr/error.cc +6 -777
  594. data/src/core/lib/iomgr/error.h +6 -147
  595. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  596. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  597. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  598. data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
  599. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  600. data/src/core/lib/iomgr/ev_posix.cc +54 -92
  601. data/src/core/lib/iomgr/ev_posix.h +5 -3
  602. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  603. data/src/core/lib/iomgr/executor.cc +0 -10
  604. data/src/core/lib/iomgr/executor.h +0 -3
  605. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  606. data/src/core/lib/iomgr/iomgr.cc +7 -0
  607. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  608. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  609. data/src/core/lib/iomgr/load_file.cc +1 -1
  610. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  611. data/src/core/lib/iomgr/port.h +3 -0
  612. data/src/core/lib/iomgr/resolve_address.h +29 -6
  613. data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
  614. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  615. data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
  616. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  617. data/src/core/lib/iomgr/socket_windows.h +0 -2
  618. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  619. data/src/core/lib/iomgr/tcp_client.h +24 -13
  620. data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
  621. data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
  622. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  623. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
  624. data/src/core/lib/iomgr/tcp_posix.cc +207 -33
  625. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
  626. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
  627. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  628. data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
  629. data/src/core/lib/iomgr/tcp_windows.cc +5 -5
  630. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  631. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  632. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  633. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  634. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  635. data/src/core/lib/json/json.h +19 -22
  636. data/src/core/lib/json/json_args.h +34 -0
  637. data/src/core/lib/json/json_object_loader.cc +233 -0
  638. data/src/core/lib/json/json_object_loader.h +618 -0
  639. data/src/core/lib/json/json_reader.cc +86 -62
  640. data/src/core/lib/json/json_util.cc +8 -36
  641. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  642. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
  643. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  644. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
  645. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  646. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
  647. data/src/core/lib/matchers/matchers.cc +6 -3
  648. data/src/core/lib/matchers/matchers.h +2 -0
  649. data/src/core/lib/promise/activity.cc +0 -1
  650. data/src/core/lib/promise/activity.h +56 -14
  651. data/src/core/lib/promise/arena_promise.h +84 -81
  652. data/src/core/lib/promise/context.h +0 -1
  653. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  654. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  655. data/src/core/lib/promise/loop.h +1 -0
  656. data/src/core/lib/promise/map.h +0 -1
  657. data/src/core/lib/promise/promise.h +1 -0
  658. data/src/core/lib/promise/seq.h +25 -4
  659. data/src/core/lib/promise/sleep.cc +43 -42
  660. data/src/core/lib/promise/sleep.h +31 -28
  661. data/src/core/lib/promise/try_seq.h +26 -6
  662. data/src/core/lib/resolver/resolver.cc +0 -42
  663. data/src/core/lib/resolver/resolver.h +5 -12
  664. data/src/core/lib/resolver/resolver_factory.h +6 -4
  665. data/src/core/lib/resolver/resolver_registry.cc +3 -10
  666. data/src/core/lib/resolver/resolver_registry.h +12 -2
  667. data/src/core/lib/resolver/server_address.cc +19 -15
  668. data/src/core/lib/resolver/server_address.h +11 -8
  669. data/src/core/lib/resource_quota/api.cc +1 -1
  670. data/src/core/lib/resource_quota/arena.cc +21 -1
  671. data/src/core/lib/resource_quota/arena.h +24 -2
  672. data/src/core/lib/resource_quota/memory_quota.cc +171 -73
  673. data/src/core/lib/resource_quota/memory_quota.h +109 -42
  674. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  675. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  676. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  677. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  678. data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
  679. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  680. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  681. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  682. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
  683. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
  684. data/src/core/lib/security/authorization/matchers.cc +20 -9
  685. data/src/core/lib/security/authorization/matchers.h +7 -0
  686. data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
  687. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  688. data/src/core/lib/security/context/security_context.cc +5 -2
  689. data/src/core/lib/security/context/security_context.h +14 -2
  690. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  691. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  692. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  693. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  694. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  695. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  696. data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
  697. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  698. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
  699. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
  700. data/src/core/lib/security/credentials/credentials.cc +4 -8
  701. data/src/core/lib/security/credentials/credentials.h +26 -20
  702. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
  703. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
  704. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  705. data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
  706. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  707. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
  708. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  709. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
  710. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  711. data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
  712. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  713. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  714. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
  715. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
  716. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
  717. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
  718. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
  719. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
  720. data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
  721. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  722. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
  723. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
  724. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
  725. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  726. data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
  727. data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
  728. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
  729. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
  730. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
  731. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
  732. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
  733. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
  734. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  735. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  736. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
  737. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
  738. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
  739. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
  740. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  741. data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
  742. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
  743. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  744. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  745. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
  746. data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
  747. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
  748. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  749. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
  750. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  751. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
  752. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
  753. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  754. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  755. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  756. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
  757. data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
  758. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  759. data/src/core/lib/security/security_connector/security_connector.h +23 -9
  760. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
  761. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  762. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  763. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  764. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  765. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
  766. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
  767. data/src/core/lib/security/transport/auth_filters.h +8 -1
  768. data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
  769. data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
  770. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  771. data/src/core/lib/security/transport/security_handshaker.cc +70 -49
  772. data/src/core/lib/security/transport/security_handshaker.h +6 -1
  773. data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
  774. data/src/core/lib/security/util/json_util.cc +3 -2
  775. data/src/core/lib/security/util/json_util.h +0 -2
  776. data/src/core/lib/service_config/service_config.h +11 -0
  777. data/src/core/lib/service_config/service_config_call_data.h +2 -1
  778. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  779. data/src/core/lib/service_config/service_config_impl.h +12 -16
  780. data/src/core/lib/service_config/service_config_parser.cc +26 -29
  781. data/src/core/lib/service_config/service_config_parser.h +10 -22
  782. data/src/core/lib/slice/percent_encoding.cc +4 -13
  783. data/src/core/lib/slice/slice.cc +10 -4
  784. data/src/core/lib/slice/slice_buffer.cc +30 -1
  785. data/src/core/lib/slice/slice_buffer.h +37 -6
  786. data/src/core/lib/slice/slice_string_helpers.cc +0 -20
  787. data/src/core/lib/slice/slice_string_helpers.h +0 -4
  788. data/src/core/lib/surface/call.cc +61 -117
  789. data/src/core/lib/surface/call.h +5 -1
  790. data/src/core/lib/surface/channel.cc +6 -6
  791. data/src/core/lib/surface/channel.h +3 -1
  792. data/src/core/lib/surface/channel_ping.cc +1 -1
  793. data/src/core/lib/surface/completion_queue.cc +15 -16
  794. data/src/core/lib/surface/completion_queue.h +2 -4
  795. data/src/core/lib/surface/init.cc +2 -7
  796. data/src/core/lib/surface/lame_client.cc +3 -4
  797. data/src/core/lib/surface/lame_client.h +2 -2
  798. data/src/core/lib/surface/server.cc +21 -20
  799. data/src/core/lib/surface/server.h +11 -8
  800. data/src/core/lib/surface/validate_metadata.cc +5 -15
  801. data/src/core/lib/surface/version.cc +2 -2
  802. data/src/core/lib/transport/connectivity_state.cc +0 -1
  803. data/src/core/lib/transport/connectivity_state.h +1 -1
  804. data/src/core/lib/transport/error_utils.cc +9 -39
  805. data/src/core/lib/transport/handshaker.cc +10 -12
  806. data/src/core/lib/transport/handshaker.h +4 -5
  807. data/src/core/lib/transport/handshaker_factory.h +2 -3
  808. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  809. data/src/core/lib/transport/handshaker_registry.h +2 -4
  810. data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
  811. data/src/core/lib/transport/metadata_batch.cc +5 -0
  812. data/src/core/lib/transport/metadata_batch.h +52 -7
  813. data/src/core/lib/transport/parsed_metadata.h +0 -1
  814. data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
  815. data/src/core/lib/transport/transport.cc +0 -3
  816. data/src/core/lib/transport/transport.h +20 -21
  817. data/src/core/lib/transport/transport_fwd.h +20 -0
  818. data/src/core/lib/transport/transport_impl.h +1 -0
  819. data/src/core/lib/transport/transport_op_string.cc +9 -9
  820. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  821. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  822. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
  823. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  824. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  825. data/src/core/tsi/fake_transport_security.cc +66 -31
  826. data/src/core/tsi/fake_transport_security.h +6 -0
  827. data/src/core/tsi/local_transport_security.cc +9 -5
  828. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  829. data/src/core/tsi/ssl_transport_security.cc +48 -24
  830. data/src/core/tsi/transport_security.cc +18 -6
  831. data/src/core/tsi/transport_security.h +2 -1
  832. data/src/core/tsi/transport_security_grpc.cc +3 -2
  833. data/src/core/tsi/transport_security_grpc.h +5 -2
  834. data/src/core/tsi/transport_security_interface.h +17 -5
  835. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  836. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  837. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  838. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  839. data/src/ruby/ext/grpc/extconf.rb +51 -18
  840. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  841. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  842. data/src/ruby/lib/grpc/errors.rb +1 -1
  843. data/src/ruby/lib/grpc/version.rb +1 -1
  844. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  845. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  846. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  847. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  848. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  849. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  850. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  851. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  852. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  853. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  854. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  855. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  856. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  857. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  858. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  859. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  860. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  861. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  862. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  863. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  864. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  865. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  866. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  867. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  868. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  869. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  870. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  871. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  872. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  873. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  874. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  875. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
  876. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  877. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  878. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  879. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  880. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  881. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  882. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  883. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  884. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  885. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  886. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  887. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  888. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  889. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  890. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  891. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  892. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  893. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  894. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  895. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  896. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  897. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  898. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  899. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  900. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  901. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  902. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  903. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  904. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  905. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  906. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  907. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  908. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  909. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  910. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  911. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  912. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  913. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  914. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  915. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  916. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  917. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  918. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  919. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  920. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  921. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  922. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  923. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  924. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  925. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  926. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  927. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  928. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  929. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  930. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  931. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  932. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  933. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  934. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  935. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  936. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  937. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  938. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  939. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  940. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  941. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  942. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  943. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  944. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  945. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  946. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  947. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  948. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  949. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  950. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  951. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  952. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  953. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  954. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  955. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  956. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  957. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  958. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  959. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  960. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  961. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  962. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  963. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  964. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  965. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  966. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  967. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  968. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  969. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  970. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  971. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  972. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  973. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  974. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  975. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  976. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  977. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  978. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  979. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  980. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  981. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  982. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  983. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  984. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  985. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  986. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  987. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  988. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  989. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  990. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  991. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  992. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  993. data/third_party/upb/upb/arena.c +277 -0
  994. data/third_party/upb/upb/arena.h +225 -0
  995. data/third_party/upb/upb/array.c +114 -0
  996. data/third_party/upb/upb/array.h +83 -0
  997. data/third_party/upb/upb/collections.h +36 -0
  998. data/third_party/upb/upb/decode.c +161 -65
  999. data/third_party/upb/upb/decode.h +1 -0
  1000. data/third_party/upb/upb/decode_fast.c +1 -1
  1001. data/third_party/upb/upb/def.c +10 -2
  1002. data/third_party/upb/upb/def.h +8 -1
  1003. data/third_party/upb/upb/def.hpp +7 -4
  1004. data/third_party/upb/upb/encode.c +29 -20
  1005. data/third_party/upb/upb/encode.h +16 -6
  1006. data/third_party/upb/upb/extension_registry.c +93 -0
  1007. data/third_party/upb/upb/extension_registry.h +84 -0
  1008. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  1009. data/third_party/upb/upb/internal/table.h +385 -0
  1010. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  1011. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  1012. data/third_party/upb/upb/json_decode.c +1512 -0
  1013. data/third_party/upb/upb/json_decode.h +47 -0
  1014. data/third_party/upb/upb/json_encode.c +7 -3
  1015. data/third_party/upb/upb/json_encode.h +6 -3
  1016. data/third_party/upb/upb/map.c +108 -0
  1017. data/third_party/upb/upb/map.h +117 -0
  1018. data/third_party/upb/upb/message_value.h +66 -0
  1019. data/third_party/upb/upb/mini_table.c +1147 -0
  1020. data/third_party/upb/upb/mini_table.h +189 -0
  1021. data/third_party/upb/upb/mini_table.hpp +112 -0
  1022. data/third_party/upb/upb/msg.c +2 -62
  1023. data/third_party/upb/upb/msg.h +2 -45
  1024. data/third_party/upb/upb/msg_internal.h +28 -22
  1025. data/third_party/upb/upb/port_def.inc +2 -1
  1026. data/third_party/upb/upb/port_undef.inc +1 -0
  1027. data/third_party/upb/upb/reflection.c +2 -159
  1028. data/third_party/upb/upb/reflection.h +2 -112
  1029. data/third_party/upb/upb/status.c +86 -0
  1030. data/third_party/upb/upb/status.h +66 -0
  1031. data/third_party/upb/upb/table.c +2 -2
  1032. data/third_party/upb/upb/table_internal.h +3 -352
  1033. data/third_party/upb/upb/text_encode.c +3 -2
  1034. data/third_party/upb/upb/upb.c +4 -290
  1035. data/third_party/upb/upb/upb.h +7 -196
  1036. metadata +113 -37
  1037. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  1038. data/src/core/lib/event_engine/event_engine.cc +0 -62
  1039. data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
  1040. data/src/core/lib/iomgr/error_internal.h +0 -66
  1041. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  1042. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  1043. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  1044. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  1045. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  1046. data/src/core/lib/promise/detail/switch.h +0 -1455
  1047. data/src/core/lib/slice/slice_split.cc +0 -103
  1048. data/src/core/lib/slice/slice_split.h +0 -36
  1049. data/src/core/lib/transport/byte_stream.cc +0 -165
  1050. data/src/core/lib/transport/byte_stream.h +0 -170
  1051. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
  1052. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
  1053. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -21,7 +21,6 @@
21
21
  #include "src/core/ext/transport/chttp2/server/chttp2_server.h"
22
22
 
23
23
  #include <inttypes.h>
24
- #include <limits.h>
25
24
  #include <string.h>
26
25
 
27
26
  #include <algorithm>
@@ -39,24 +38,22 @@
39
38
  #include "absl/strings/str_format.h"
40
39
  #include "absl/strings/string_view.h"
41
40
  #include "absl/strings/strip.h"
41
+ #include "absl/types/optional.h"
42
42
 
43
43
  #include <grpc/grpc.h>
44
44
  #include <grpc/grpc_posix.h>
45
45
  #include <grpc/impl/codegen/grpc_types.h>
46
46
  #include <grpc/support/alloc.h>
47
47
  #include <grpc/support/log.h>
48
- #include <grpc/support/time.h>
49
48
 
50
49
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
51
50
  #include "src/core/ext/transport/chttp2/transport/frame.h"
52
51
  #include "src/core/ext/transport/chttp2/transport/internal.h"
53
52
  #include "src/core/lib/address_utils/sockaddr_utils.h"
54
53
  #include "src/core/lib/channel/channel_args.h"
55
- #include "src/core/lib/channel/channel_stack_builder.h"
56
54
  #include "src/core/lib/channel/channelz.h"
57
55
  #include "src/core/lib/config/core_configuration.h"
58
56
  #include "src/core/lib/debug/trace.h"
59
- #include "src/core/lib/gpr/useful.h"
60
57
  #include "src/core/lib/gprpp/debug_location.h"
61
58
  #include "src/core/lib/gprpp/orphanable.h"
62
59
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -73,7 +70,6 @@
73
70
  #include "src/core/lib/iomgr/tcp_server.h"
74
71
  #include "src/core/lib/iomgr/timer.h"
75
72
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
76
- #include "src/core/lib/resource_quota/api.h"
77
73
  #include "src/core/lib/resource_quota/memory_quota.h"
78
74
  #include "src/core/lib/resource_quota/resource_quota.h"
79
75
  #include "src/core/lib/security/credentials/credentials.h"
@@ -86,6 +82,7 @@
86
82
  #include "src/core/lib/transport/handshaker.h"
87
83
  #include "src/core/lib/transport/handshaker_registry.h"
88
84
  #include "src/core/lib/transport/transport.h"
85
+ #include "src/core/lib/transport/transport_fwd.h"
89
86
  #include "src/core/lib/uri/uri_parser.h"
90
87
 
91
88
  #ifdef GPR_SUPPORT_CHANNELS_FROM_FD
@@ -103,16 +100,16 @@ const char kUnixAbstractUriPrefix[] = "unix-abstract:";
103
100
  class Chttp2ServerListener : public Server::ListenerInterface {
104
101
  public:
105
102
  static grpc_error_handle Create(Server* server, grpc_resolved_address* addr,
106
- grpc_channel_args* args,
103
+ const ChannelArgs& args,
107
104
  Chttp2ServerArgsModifier args_modifier,
108
105
  int* port_num);
109
106
 
110
107
  static grpc_error_handle CreateWithAcceptor(
111
- Server* server, const char* name, grpc_channel_args* args,
108
+ Server* server, const char* name, const ChannelArgs& args,
112
109
  Chttp2ServerArgsModifier args_modifier);
113
110
 
114
111
  // Do not instantiate directly. Use one of the factory methods above.
115
- Chttp2ServerListener(Server* server, grpc_channel_args* args,
112
+ Chttp2ServerListener(Server* server, const ChannelArgs& args,
116
113
  Chttp2ServerArgsModifier args_modifier);
117
114
  ~Chttp2ServerListener() override;
118
115
 
@@ -151,13 +148,13 @@ class Chttp2ServerListener : public Server::ListenerInterface {
151
148
  HandshakingState(RefCountedPtr<ActiveConnection> connection_ref,
152
149
  grpc_pollset* accepting_pollset,
153
150
  grpc_tcp_server_acceptor* acceptor,
154
- grpc_channel_args* args);
151
+ const ChannelArgs& args);
155
152
 
156
153
  ~HandshakingState() override;
157
154
 
158
155
  void Orphan() override;
159
156
 
160
- void Start(grpc_endpoint* endpoint, grpc_channel_args* args);
157
+ void Start(grpc_endpoint* endpoint, const ChannelArgs& args);
161
158
 
162
159
  // Needed to be able to grab an external ref in ActiveConnection::Start()
163
160
  using InternallyRefCounted<HandshakingState>::Ref;
@@ -181,7 +178,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
181
178
 
182
179
  ActiveConnection(grpc_pollset* accepting_pollset,
183
180
  grpc_tcp_server_acceptor* acceptor,
184
- grpc_channel_args* args, MemoryOwner memory_owner);
181
+ const ChannelArgs& args, MemoryOwner memory_owner);
185
182
  ~ActiveConnection() override;
186
183
 
187
184
  void Orphan() override;
@@ -189,7 +186,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
189
186
  void SendGoAway();
190
187
 
191
188
  void Start(RefCountedPtr<Chttp2ServerListener> listener,
192
- grpc_endpoint* endpoint, grpc_channel_args* args);
189
+ grpc_endpoint* endpoint, const ChannelArgs& args);
193
190
 
194
191
  // Needed to be able to grab an external ref in
195
192
  // Chttp2ServerListener::OnAccept()
@@ -262,7 +259,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
262
259
  grpc_resolved_address resolved_address_;
263
260
  Chttp2ServerArgsModifier const args_modifier_;
264
261
  ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
265
- grpc_channel_args* args_;
262
+ ChannelArgs args_;
266
263
  Mutex mu_;
267
264
  RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
268
265
  connection_manager_ ABSL_GUARDED_BY(mu_);
@@ -325,7 +322,7 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
325
322
  int port_temp;
326
323
  grpc_error_handle error = grpc_tcp_server_add_port(
327
324
  listener_->tcp_server_, &listener_->resolved_address_, &port_temp);
328
- if (error != GRPC_ERROR_NONE) {
325
+ if (!GRPC_ERROR_IS_NONE(error)) {
329
326
  GRPC_ERROR_UNREF(error);
330
327
  gpr_log(GPR_ERROR, "Error adding port to server: %s",
331
328
  grpc_error_std_string(error).c_str());
@@ -359,17 +356,18 @@ void Chttp2ServerListener::ConfigFetcherWatcher::StopServing() {
359
356
  // Chttp2ServerListener::ActiveConnection::HandshakingState
360
357
  //
361
358
 
362
- Timestamp GetConnectionDeadline(const grpc_channel_args* args) {
363
- auto timeout_ms = Duration::Milliseconds(
364
- grpc_channel_args_find_integer(args, GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS,
365
- {120 * GPR_MS_PER_SEC, 1, INT_MAX}));
366
- return ExecCtx::Get()->Now() + timeout_ms;
359
+ Timestamp GetConnectionDeadline(const ChannelArgs& args) {
360
+ return ExecCtx::Get()->Now() +
361
+ std::max(
362
+ Duration::Milliseconds(1),
363
+ args.GetDurationFromIntMillis(GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS)
364
+ .value_or(Duration::Seconds(120)));
367
365
  }
368
366
 
369
367
  Chttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState(
370
368
  RefCountedPtr<ActiveConnection> connection_ref,
371
369
  grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
372
- grpc_channel_args* args)
370
+ const ChannelArgs& args)
373
371
  : connection_(std::move(connection_ref)),
374
372
  accepting_pollset_(accepting_pollset),
375
373
  acceptor_(acceptor),
@@ -399,7 +397,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::Orphan() {
399
397
  }
400
398
 
401
399
  void Chttp2ServerListener::ActiveConnection::HandshakingState::Start(
402
- grpc_endpoint* endpoint, grpc_channel_args* args) {
400
+ grpc_endpoint* endpoint, const ChannelArgs& channel_args) {
403
401
  Ref().release(); // Held by OnHandshakeDone
404
402
  RefCountedPtr<HandshakeManager> handshake_mgr;
405
403
  {
@@ -407,7 +405,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::Start(
407
405
  if (handshake_mgr_ == nullptr) return;
408
406
  handshake_mgr = handshake_mgr_;
409
407
  }
410
- handshake_mgr->DoHandshake(endpoint, args, deadline_, acceptor_,
408
+ handshake_mgr->DoHandshake(endpoint, channel_args, deadline_, acceptor_,
411
409
  OnHandshakeDone, this);
412
410
  }
413
411
 
@@ -446,11 +444,11 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
446
444
  bool cleanup_connection = false;
447
445
  {
448
446
  MutexLock connection_lock(&self->connection_->mu_);
449
- if (error != GRPC_ERROR_NONE || self->connection_->shutdown_) {
447
+ if (!GRPC_ERROR_IS_NONE(error) || self->connection_->shutdown_) {
450
448
  std::string error_str = grpc_error_std_string(error);
451
449
  gpr_log(GPR_DEBUG, "Handshaking failed: %s", error_str.c_str());
452
450
  cleanup_connection = true;
453
- if (error == GRPC_ERROR_NONE && args->endpoint != nullptr) {
451
+ if (GRPC_ERROR_IS_NONE(error) && args->endpoint != nullptr) {
454
452
  // We were shut down or stopped serving after handshaking completed
455
453
  // successfully, so destroy the endpoint here.
456
454
  // TODO(ctiller): It is currently necessary to shutdown endpoints
@@ -459,7 +457,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
459
457
  // point this can be removed.
460
458
  grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_NONE);
461
459
  grpc_endpoint_destroy(args->endpoint);
462
- grpc_channel_args_destroy(args->args);
463
460
  grpc_slice_buffer_destroy_internal(args->read_buffer);
464
461
  gpr_free(args->read_buffer);
465
462
  }
@@ -474,7 +471,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
474
471
  self->connection_->listener_->server_->SetupTransport(
475
472
  transport, self->accepting_pollset_, args->args,
476
473
  grpc_chttp2_transport_get_socket_node(transport));
477
- if (channel_init_err == GRPC_ERROR_NONE) {
474
+ if (GRPC_ERROR_IS_NONE(channel_init_err)) {
478
475
  // Use notify_on_receive_settings callback to enforce the
479
476
  // handshake deadline.
480
477
  // Note: The reinterpret_cast<>s here are safe, because
@@ -507,7 +504,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
507
504
  grpc_chttp2_transport_start_reading(transport, args->read_buffer,
508
505
  &self->on_receive_settings_,
509
506
  on_close);
510
- grpc_channel_args_destroy(args->args);
511
507
  self->Ref().release(); // Held by OnTimeout().
512
508
  GRPC_CLOSURE_INIT(&self->on_timeout_, OnTimeout, self,
513
509
  grpc_schedule_on_exec_ctx);
@@ -521,7 +517,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
521
517
  grpc_slice_buffer_destroy_internal(args->read_buffer);
522
518
  gpr_free(args->read_buffer);
523
519
  cleanup_connection = true;
524
- grpc_channel_args_destroy(args->args);
525
520
  }
526
521
  } else {
527
522
  cleanup_connection = true;
@@ -555,7 +550,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
555
550
 
556
551
  Chttp2ServerListener::ActiveConnection::ActiveConnection(
557
552
  grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
558
- grpc_channel_args* args, MemoryOwner memory_owner)
553
+ const ChannelArgs& args, MemoryOwner memory_owner)
559
554
  : handshaking_state_(memory_owner.MakeOrphanable<HandshakingState>(
560
555
  Ref(), accepting_pollset, acceptor, args)) {
561
556
  GRPC_CLOSURE_INIT(&on_close_, ActiveConnection::OnClose, this,
@@ -589,13 +584,16 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
589
584
  Ref().release(); // Ref held by OnDrainGraceTimeExpiry
590
585
  GRPC_CLOSURE_INIT(&on_drain_grace_time_expiry_, OnDrainGraceTimeExpiry,
591
586
  this, nullptr);
592
- grpc_timer_init(&drain_grace_timer_,
593
- ExecCtx::Get()->Now() +
594
- Duration::Milliseconds(grpc_channel_args_find_integer(
595
- listener_->args_,
596
- GRPC_ARG_SERVER_CONFIG_CHANGE_DRAIN_GRACE_TIME_MS,
597
- {10 * 60 * GPR_MS_PER_SEC, 0, INT_MAX})),
598
- &on_drain_grace_time_expiry_);
587
+ grpc_timer_init(
588
+ &drain_grace_timer_,
589
+ ExecCtx::Get()->Now() +
590
+ std::max(
591
+ Duration::Zero(),
592
+ listener_->args_
593
+ .GetDurationFromIntMillis(
594
+ GRPC_ARG_SERVER_CONFIG_CHANGE_DRAIN_GRACE_TIME_MS)
595
+ .value_or(Duration::Minutes(10))),
596
+ &on_drain_grace_time_expiry_);
599
597
  drain_grace_timer_expiry_callback_pending_ = true;
600
598
  shutdown_ = true;
601
599
  }
@@ -610,7 +608,7 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
610
608
 
611
609
  void Chttp2ServerListener::ActiveConnection::Start(
612
610
  RefCountedPtr<Chttp2ServerListener> listener, grpc_endpoint* endpoint,
613
- grpc_channel_args* args) {
611
+ const ChannelArgs& args) {
614
612
  RefCountedPtr<HandshakingState> handshaking_state_ref;
615
613
  listener_ = std::move(listener);
616
614
  {
@@ -653,7 +651,7 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry(
653
651
  ActiveConnection* self = static_cast<ActiveConnection*>(arg);
654
652
  // If the drain_grace_timer_ was not cancelled, disconnect the transport
655
653
  // immediately.
656
- if (error == GRPC_ERROR_NONE) {
654
+ if (GRPC_ERROR_IS_NONE(error)) {
657
655
  grpc_chttp2_transport* transport = nullptr;
658
656
  {
659
657
  MutexLock lock(&self->mu_);
@@ -672,7 +670,7 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry(
672
670
  //
673
671
 
674
672
  grpc_error_handle Chttp2ServerListener::Create(
675
- Server* server, grpc_resolved_address* addr, grpc_channel_args* args,
673
+ Server* server, grpc_resolved_address* addr, const ChannelArgs& args,
676
674
  Chttp2ServerArgsModifier args_modifier, int* port_num) {
677
675
  Chttp2ServerListener* listener = nullptr;
678
676
  // The bulk of this method is inside of a lambda to make cleanup
@@ -682,19 +680,19 @@ grpc_error_handle Chttp2ServerListener::Create(
682
680
  // Create Chttp2ServerListener.
683
681
  listener = new Chttp2ServerListener(server, args, args_modifier);
684
682
  error = grpc_tcp_server_create(&listener->tcp_server_shutdown_complete_,
685
- args, &listener->tcp_server_);
686
- if (error != GRPC_ERROR_NONE) return error;
683
+ args.ToC().get(), &listener->tcp_server_);
684
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
687
685
  if (server->config_fetcher() != nullptr) {
688
686
  listener->resolved_address_ = *addr;
689
687
  // TODO(yashykt): Consider binding so as to be able to return the port
690
688
  // number.
691
689
  } else {
692
690
  error = grpc_tcp_server_add_port(listener->tcp_server_, addr, port_num);
693
- if (error != GRPC_ERROR_NONE) return error;
691
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
694
692
  }
695
693
  // Create channelz node.
696
- if (grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_CHANNELZ,
697
- GRPC_ENABLE_CHANNELZ_DEFAULT)) {
694
+ if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
695
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
698
696
  auto string_address = grpc_sockaddr_to_uri(addr);
699
697
  if (!string_address.ok()) {
700
698
  return GRPC_ERROR_CREATE_FROM_CPP_STRING(
@@ -709,7 +707,7 @@ grpc_error_handle Chttp2ServerListener::Create(
709
707
  server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
710
708
  return GRPC_ERROR_NONE;
711
709
  }();
712
- if (error != GRPC_ERROR_NONE) {
710
+ if (!GRPC_ERROR_IS_NONE(error)) {
713
711
  if (listener != nullptr) {
714
712
  if (listener->tcp_server_ != nullptr) {
715
713
  // listener is deleted when tcp_server_ is shutdown.
@@ -717,39 +715,37 @@ grpc_error_handle Chttp2ServerListener::Create(
717
715
  } else {
718
716
  delete listener;
719
717
  }
720
- } else {
721
- grpc_channel_args_destroy(args);
722
718
  }
723
719
  }
724
720
  return error;
725
721
  }
726
722
 
727
723
  grpc_error_handle Chttp2ServerListener::CreateWithAcceptor(
728
- Server* server, const char* name, grpc_channel_args* args,
724
+ Server* server, const char* name, const ChannelArgs& args,
729
725
  Chttp2ServerArgsModifier args_modifier) {
730
726
  Chttp2ServerListener* listener =
731
727
  new Chttp2ServerListener(server, args, args_modifier);
732
- grpc_error_handle error = grpc_tcp_server_create(
733
- &listener->tcp_server_shutdown_complete_, args, &listener->tcp_server_);
734
- if (error != GRPC_ERROR_NONE) {
728
+ grpc_error_handle error =
729
+ grpc_tcp_server_create(&listener->tcp_server_shutdown_complete_,
730
+ args.ToC().get(), &listener->tcp_server_);
731
+ if (!GRPC_ERROR_IS_NONE(error)) {
735
732
  delete listener;
736
733
  return error;
737
734
  }
738
735
  // TODO(yangg) channelz
739
- TcpServerFdHandler** arg_val =
740
- grpc_channel_args_find_pointer<TcpServerFdHandler*>(args, name);
736
+ TcpServerFdHandler** arg_val = args.GetPointer<TcpServerFdHandler*>(name);
741
737
  *arg_val = grpc_tcp_server_create_fd_handler(listener->tcp_server_);
742
738
  server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
743
739
  return GRPC_ERROR_NONE;
744
740
  }
745
741
 
746
742
  Chttp2ServerListener::Chttp2ServerListener(
747
- Server* server, grpc_channel_args* args,
743
+ Server* server, const ChannelArgs& args,
748
744
  Chttp2ServerArgsModifier args_modifier)
749
745
  : server_(server),
750
746
  args_modifier_(args_modifier),
751
747
  args_(args),
752
- memory_quota_(ResourceQuotaFromChannelArgs(args)->memory_quota()) {
748
+ memory_quota_(args.GetObject<ResourceQuota>()->memory_quota()) {
753
749
  GRPC_CLOSURE_INIT(&tcp_server_shutdown_complete_, TcpServerShutdownComplete,
754
750
  this, grpc_schedule_on_exec_ctx);
755
751
  }
@@ -762,7 +758,6 @@ Chttp2ServerListener::~Chttp2ServerListener() {
762
758
  ExecCtx::Run(DEBUG_LOCATION, on_destroy_done_, GRPC_ERROR_NONE);
763
759
  ExecCtx::Get()->Flush();
764
760
  }
765
- grpc_channel_args_destroy(args_);
766
761
  }
767
762
 
768
763
  /* Server callback: start listening on our ports */
@@ -797,8 +792,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
797
792
  grpc_pollset* accepting_pollset,
798
793
  grpc_tcp_server_acceptor* acceptor) {
799
794
  Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
800
- grpc_channel_args* args = self->args_;
801
- grpc_channel_args* args_to_destroy = nullptr;
795
+ ChannelArgs args = self->args_;
802
796
  RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
803
797
  connection_manager;
804
798
  {
@@ -817,11 +811,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
817
811
  endpoint_cleanup(error);
818
812
  return;
819
813
  }
820
- // TODO(yashykt): Maybe combine the following two arg modifiers into a
821
- // single one.
822
- // Make a copy of the args so as to avoid destroying the original.
823
- args = grpc_channel_args_copy(args);
824
- absl::StatusOr<grpc_channel_args*> args_result =
814
+ absl::StatusOr<ChannelArgs> args_result =
825
815
  connection_manager->UpdateChannelArgsForConnection(args, tcp);
826
816
  if (!args_result.ok()) {
827
817
  gpr_log(GPR_DEBUG, "Closing connection: %s",
@@ -832,14 +822,12 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
832
822
  }
833
823
  grpc_error_handle error = GRPC_ERROR_NONE;
834
824
  args = self->args_modifier_(*args_result, &error);
835
- if (error != GRPC_ERROR_NONE) {
825
+ if (!GRPC_ERROR_IS_NONE(error)) {
836
826
  gpr_log(GPR_DEBUG, "Closing connection: %s",
837
827
  grpc_error_std_string(error).c_str());
838
828
  endpoint_cleanup(error);
839
- grpc_channel_args_destroy(args);
840
829
  return;
841
830
  }
842
- args_to_destroy = args;
843
831
  }
844
832
  auto memory_owner = self->memory_quota_->CreateMemoryOwner(
845
833
  absl::StrCat(grpc_endpoint_get_peer(tcp), ":server_channel"));
@@ -871,7 +859,6 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
871
859
  } else {
872
860
  connection_ref->Start(std::move(listener_ref), tcp, args);
873
861
  }
874
- grpc_channel_args_destroy(args_to_destroy);
875
862
  }
876
863
 
877
864
  void Chttp2ServerListener::TcpServerShutdownComplete(void* arg,
@@ -917,7 +904,7 @@ void Chttp2ServerListener::Orphan() {
917
904
  //
918
905
 
919
906
  grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
920
- grpc_channel_args* args,
907
+ const ChannelArgs& args,
921
908
  Chttp2ServerArgsModifier args_modifier,
922
909
  int* port_num) {
923
910
  if (addr == nullptr) {
@@ -943,7 +930,8 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
943
930
  resolved_or =
944
931
  grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed);
945
932
  } else {
946
- resolved_or = GetDNSResolver()->ResolveNameBlocking(parsed_addr, "https");
933
+ resolved_or =
934
+ GetDNSResolver()->LookupHostnameBlocking(parsed_addr, "https");
947
935
  }
948
936
  if (!resolved_or.ok()) {
949
937
  return absl_status_to_grpc_error(resolved_or.status());
@@ -956,10 +944,9 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
956
944
  grpc_sockaddr_set_port(&addr, *port_num);
957
945
  }
958
946
  int port_temp = -1;
959
- error = Chttp2ServerListener::Create(server, &addr,
960
- grpc_channel_args_copy(args),
961
- args_modifier, &port_temp);
962
- if (error != GRPC_ERROR_NONE) {
947
+ error = Chttp2ServerListener::Create(server, &addr, args, args_modifier,
948
+ &port_temp);
949
+ if (!GRPC_ERROR_IS_NONE(error)) {
963
950
  error_list.push_back(error);
964
951
  } else {
965
952
  if (*port_num == -1) {
@@ -991,19 +978,15 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
991
978
  for (const grpc_error_handle& error : error_list) {
992
979
  GRPC_ERROR_UNREF(error);
993
980
  }
994
- grpc_channel_args_destroy(args);
995
- if (error != GRPC_ERROR_NONE) *port_num = 0;
981
+ if (!GRPC_ERROR_IS_NONE(error)) *port_num = 0;
996
982
  return error;
997
983
  }
998
984
 
999
- } // namespace grpc_core
1000
-
1001
985
  namespace {
1002
986
 
1003
- grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
1004
- grpc_error_handle* error) {
1005
- grpc_server_credentials* server_credentials =
1006
- grpc_find_server_credentials_in_args(args);
987
+ ChannelArgs ModifyArgsForConnection(const ChannelArgs& args,
988
+ grpc_error_handle* error) {
989
+ auto* server_credentials = args.GetObject<grpc_server_credentials>();
1007
990
  if (server_credentials == nullptr) {
1008
991
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1009
992
  "Could not find server credentials");
@@ -1016,15 +999,11 @@ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
1016
999
  server_credentials->type().name()));
1017
1000
  return args;
1018
1001
  }
1019
- grpc_arg arg_to_add =
1020
- grpc_security_connector_to_arg(security_connector.get());
1021
- grpc_channel_args* new_args =
1022
- grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
1023
- grpc_channel_args_destroy(args);
1024
- return new_args;
1002
+ return args.SetObject(security_connector);
1025
1003
  }
1026
1004
 
1027
1005
  } // namespace
1006
+ } // namespace grpc_core
1028
1007
 
1029
1008
  int grpc_server_add_http2_port(grpc_server* server, const char* addr,
1030
1009
  grpc_server_credentials* creds) {
@@ -1032,8 +1011,8 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr,
1032
1011
  grpc_error_handle err = GRPC_ERROR_NONE;
1033
1012
  grpc_core::RefCountedPtr<grpc_server_security_connector> sc;
1034
1013
  int port_num = 0;
1035
- grpc_channel_args* args = nullptr;
1036
1014
  grpc_core::Server* core_server = grpc_core::Server::FromC(server);
1015
+ grpc_core::ChannelArgs args = core_server->channel_args();
1037
1016
  GRPC_API_TRACE("grpc_server_add_http2_port(server=%p, addr=%s, creds=%p)", 3,
1038
1017
  (server, addr, creds));
1039
1018
  // Create security context.
@@ -1054,29 +1033,23 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr,
1054
1033
  // fetchers need to be registered before adding ports to the server.
1055
1034
  if (core_server->config_fetcher() != nullptr) {
1056
1035
  // Create channel args.
1057
- grpc_arg arg_to_add = grpc_server_credentials_to_arg(creds);
1058
- args = grpc_channel_args_copy_and_add(core_server->channel_args(),
1059
- &arg_to_add, 1);
1036
+ args = args.SetObject(creds->Ref());
1060
1037
  } else {
1061
- sc = creds->create_security_connector(nullptr);
1038
+ sc = creds->create_security_connector(grpc_core::ChannelArgs());
1062
1039
  if (sc == nullptr) {
1063
1040
  err = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
1064
1041
  "Unable to create secure server with credentials of type ",
1065
1042
  creds->type().name()));
1066
1043
  goto done;
1067
1044
  }
1068
- grpc_arg args_to_add[2];
1069
- args_to_add[0] = grpc_server_credentials_to_arg(creds);
1070
- args_to_add[1] = grpc_security_connector_to_arg(sc.get());
1071
- args = grpc_channel_args_copy_and_add(
1072
- core_server->channel_args(), args_to_add, GPR_ARRAY_SIZE(args_to_add));
1045
+ args = args.SetObject(creds->Ref()).SetObject(sc);
1073
1046
  }
1074
1047
  // Add server port.
1075
- err = grpc_core::Chttp2ServerAddPort(core_server, addr, args,
1076
- ModifyArgsForConnection, &port_num);
1048
+ err = grpc_core::Chttp2ServerAddPort(
1049
+ core_server, addr, args, grpc_core::ModifyArgsForConnection, &port_num);
1077
1050
  done:
1078
1051
  sc.reset(DEBUG_LOCATION, "server");
1079
- if (err != GRPC_ERROR_NONE) {
1052
+ if (!GRPC_ERROR_IS_NONE(err)) {
1080
1053
  gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
1081
1054
 
1082
1055
  GRPC_ERROR_UNREF(err);
@@ -1096,18 +1069,18 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd,
1096
1069
  grpc_core::ExecCtx exec_ctx;
1097
1070
  grpc_core::Server* core_server = grpc_core::Server::FromC(server);
1098
1071
 
1099
- const grpc_channel_args* server_args = core_server->channel_args();
1072
+ grpc_core::ChannelArgs server_args = core_server->channel_args();
1100
1073
  std::string name = absl::StrCat("fd:", fd);
1101
1074
  auto memory_quota =
1102
- grpc_core::ResourceQuotaFromChannelArgs(server_args)->memory_quota();
1075
+ server_args.GetObject<grpc_core::ResourceQuota>()->memory_quota();
1103
1076
  grpc_endpoint* server_endpoint = grpc_tcp_create(
1104
- grpc_fd_create(fd, name.c_str(), true), server_args, name);
1077
+ grpc_fd_create(fd, name.c_str(), true), server_args.ToC().get(), name);
1105
1078
  grpc_transport* transport = grpc_create_chttp2_transport(
1106
1079
  server_args, server_endpoint, false /* is_client */
1107
1080
  );
1108
1081
  grpc_error_handle error =
1109
1082
  core_server->SetupTransport(transport, nullptr, server_args, nullptr);
1110
- if (error == GRPC_ERROR_NONE) {
1083
+ if (GRPC_ERROR_IS_NONE(error)) {
1111
1084
  for (grpc_pollset* pollset : core_server->pollsets()) {
1112
1085
  grpc_endpoint_add_to_pollset(server_endpoint, pollset);
1113
1086
  }
@@ -23,8 +23,7 @@
23
23
 
24
24
  #include <functional>
25
25
 
26
- #include <grpc/impl/codegen/grpc_types.h>
27
-
26
+ #include "src/core/lib/channel/channel_args.h"
28
27
  #include "src/core/lib/iomgr/error.h"
29
28
  #include "src/core/lib/surface/server.h"
30
29
 
@@ -33,15 +32,14 @@ namespace grpc_core {
33
32
  // A function to modify channel args for a listening addr:port. Note that this
34
33
  // is used to create a security connector for listeners when the servers are
35
34
  // configured with a config fetcher. Not invoked if there is no config fetcher
36
- // added to the server. Takes ownership of the args. Caller takes ownership of
37
- // returned args. On failure, the error parameter will be set.
35
+ // added to the server. On failure, the error parameter will be set.
38
36
  using Chttp2ServerArgsModifier =
39
- std::function<grpc_channel_args*(grpc_channel_args*, grpc_error_handle*)>;
37
+ std::function<ChannelArgs(const ChannelArgs&, grpc_error_handle*)>;
40
38
 
41
39
  /// Adds a port to \a server. Sets \a port_num to the port number.
42
40
  /// Takes ownership of \a args.
43
41
  grpc_error_handle Chttp2ServerAddPort(
44
- Server* server, const char* addr, grpc_channel_args* args,
42
+ Server* server, const char* addr, const ChannelArgs& args,
45
43
  Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
46
44
 
47
45
  } // namespace grpc_core