grpc 1.48.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 (715) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +104 -41
  3. data/include/grpc/event_engine/event_engine.h +19 -16
  4. data/include/grpc/impl/codegen/grpc_types.h +3 -8
  5. data/include/grpc/impl/codegen/port_platform.h +0 -8
  6. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
  7. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  8. data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
  9. data/src/core/ext/filters/client_channel/client_channel.h +15 -8
  10. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  11. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  12. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  13. data/src/core/ext/filters/client_channel/config_selector.h +12 -4
  14. data/src/core/ext/filters/client_channel/connector.h +4 -5
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  16. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  17. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  18. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  24. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
  26. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
  28. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
  29. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
  30. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
  31. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
  32. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
  34. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
  39. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  40. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
  41. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  46. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  51. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  52. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
  54. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  56. data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
  57. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  59. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
  60. data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
  61. data/src/core/ext/filters/client_channel/subchannel.h +8 -8
  62. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  63. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
  66. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
  67. data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
  70. data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
  71. data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
  73. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  74. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  75. data/src/core/ext/filters/http/client_authority_filter.h +1 -1
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
  77. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  78. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  79. data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  87. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  91. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  92. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  93. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  94. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  95. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  96. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
  97. data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
  98. data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
  99. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  101. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  102. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  103. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  104. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  105. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  106. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  107. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  108. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  109. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  110. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  111. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  112. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  113. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  114. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  115. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  116. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  117. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  118. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  119. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  120. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  121. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  122. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  123. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  124. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  125. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  126. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  127. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  128. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  129. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  130. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  131. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  132. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  133. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  134. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  135. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  136. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  137. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  138. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  139. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  166. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  167. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  168. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  169. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  170. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  171. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  172. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  173. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  174. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  175. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  176. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  177. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  178. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  179. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  180. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  181. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  182. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  185. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  186. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  187. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  188. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  189. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  190. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  191. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  192. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  193. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  194. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  195. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  196. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  197. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  198. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  199. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  200. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  201. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  202. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  203. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  204. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  205. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  206. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  207. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  208. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  209. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  210. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  211. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  220. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  221. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  222. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  223. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  224. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  226. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  227. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  228. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  229. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  230. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  231. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  232. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
  233. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
  234. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
  235. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  237. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  238. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  239. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  246. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  247. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  248. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  249. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  250. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  251. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  252. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  253. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  254. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  258. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  259. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  273. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  274. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  275. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  276. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  277. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  280. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  281. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  282. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  283. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  284. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  285. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  287. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  288. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  289. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  290. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  291. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  292. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  293. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  294. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  295. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  296. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  297. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  298. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  299. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  300. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  301. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  302. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  303. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  304. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  305. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  306. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  307. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  308. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  309. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  310. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  311. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  312. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  313. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  314. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  315. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  316. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  317. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  318. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  319. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  320. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  321. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  322. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  323. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  324. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  325. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  326. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  327. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  328. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  329. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  330. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  331. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  332. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  333. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  334. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  335. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  336. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  337. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  338. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  339. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  340. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  341. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  342. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  343. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  344. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  345. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  346. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  347. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  348. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  349. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  350. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  351. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  352. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  353. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  361. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  362. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  363. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  369. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  370. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  371. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  372. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  373. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  374. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  375. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  376. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  377. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  378. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  382. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  383. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  384. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  385. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  386. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  387. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  388. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  389. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  390. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  391. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  392. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  396. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  397. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  398. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  399. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  400. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  401. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  402. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  403. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  404. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  405. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  406. data/src/core/ext/xds/upb_utils.h +0 -21
  407. data/src/core/ext/xds/xds_api.cc +53 -86
  408. data/src/core/ext/xds/xds_api.h +19 -28
  409. data/src/core/ext/xds/xds_bootstrap.cc +39 -52
  410. data/src/core/ext/xds/xds_bootstrap.h +28 -8
  411. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  412. data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
  413. data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
  414. data/src/core/ext/xds/xds_client.cc +555 -1214
  415. data/src/core/ext/xds/xds_client.h +16 -44
  416. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  417. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  418. data/src/core/ext/xds/xds_cluster.cc +92 -103
  419. data/src/core/ext/xds/xds_cluster.h +6 -5
  420. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
  421. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
  422. data/src/core/ext/xds/xds_common_types.cc +134 -110
  423. data/src/core/ext/xds/xds_common_types.h +6 -7
  424. data/src/core/ext/xds/xds_endpoint.cc +80 -80
  425. data/src/core/ext/xds/xds_endpoint.h +4 -4
  426. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
  427. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  428. data/src/core/ext/xds/xds_http_filters.h +3 -3
  429. data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
  430. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  431. data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
  432. data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
  433. data/src/core/ext/xds/xds_listener.cc +329 -299
  434. data/src/core/ext/xds/xds_listener.h +4 -4
  435. data/src/core/ext/xds/xds_resource_type.h +13 -2
  436. data/src/core/ext/xds/xds_route_config.cc +180 -177
  437. data/src/core/ext/xds/xds_route_config.h +31 -17
  438. data/src/core/ext/xds/xds_routing.cc +3 -6
  439. data/src/core/ext/xds/xds_routing.h +7 -9
  440. data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
  441. data/src/core/ext/xds/xds_transport.h +86 -0
  442. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  443. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  444. data/src/core/lib/address_utils/parse_address.cc +19 -17
  445. data/src/core/lib/address_utils/parse_address.h +8 -5
  446. data/src/core/lib/avl/avl.h +47 -25
  447. data/src/core/lib/channel/call_tracer.h +1 -1
  448. data/src/core/lib/channel/channel_args.cc +88 -19
  449. data/src/core/lib/channel/channel_args.h +113 -62
  450. data/src/core/lib/channel/channel_stack.cc +0 -1
  451. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  452. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  453. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
  454. data/src/core/lib/channel/channelz.cc +27 -37
  455. data/src/core/lib/channel/channelz.h +9 -0
  456. data/src/core/lib/channel/promise_based_filter.h +0 -1
  457. data/src/core/lib/config/core_configuration.h +48 -35
  458. data/src/core/lib/debug/stats.cc +12 -15
  459. data/src/core/lib/debug/stats.h +11 -3
  460. data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
  461. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
  462. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  463. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  464. data/src/core/lib/event_engine/executor/executor.h +38 -0
  465. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  466. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  467. data/src/core/lib/event_engine/forkable.cc +98 -0
  468. data/src/core/lib/event_engine/forkable.h +61 -0
  469. data/src/core/lib/event_engine/poller.h +54 -0
  470. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
  471. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
  472. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
  473. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
  474. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
  475. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
  476. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
  477. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
  478. data/src/core/lib/event_engine/promise.h +11 -2
  479. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  480. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
  481. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
  482. data/src/core/lib/event_engine/utils.cc +49 -0
  483. data/src/core/lib/event_engine/utils.h +40 -0
  484. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  485. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  486. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  487. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  488. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  489. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  490. data/src/core/lib/gpr/time.cc +11 -9
  491. data/src/core/lib/gpr/useful.h +29 -0
  492. data/src/core/lib/gprpp/bitset.h +3 -13
  493. data/src/core/lib/gprpp/debug_location.h +39 -7
  494. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  495. data/src/core/lib/gprpp/no_destruct.h +94 -0
  496. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  497. data/src/core/lib/gprpp/status_helper.cc +1 -0
  498. data/src/core/lib/gprpp/table.h +0 -1
  499. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
  500. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
  501. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  502. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
  503. data/src/core/lib/http/httpcli.cc +12 -24
  504. data/src/core/lib/http/httpcli_security_connector.cc +11 -11
  505. data/src/core/lib/iomgr/call_combiner.cc +0 -26
  506. data/src/core/lib/iomgr/closure.h +0 -9
  507. data/src/core/lib/iomgr/combiner.cc +0 -20
  508. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  509. data/src/core/lib/iomgr/error.cc +0 -773
  510. data/src/core/lib/iomgr/error.h +0 -145
  511. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  512. data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
  513. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  514. data/src/core/lib/iomgr/executor.cc +0 -10
  515. data/src/core/lib/iomgr/executor.h +0 -3
  516. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  517. data/src/core/lib/iomgr/port.h +3 -0
  518. data/src/core/lib/iomgr/resolve_address.h +29 -6
  519. data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
  520. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  521. data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
  522. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  523. data/src/core/lib/iomgr/socket_windows.h +0 -2
  524. data/src/core/lib/iomgr/tcp_posix.cc +118 -6
  525. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  526. data/src/core/lib/json/json.h +19 -22
  527. data/src/core/lib/json/json_args.h +34 -0
  528. data/src/core/lib/json/json_object_loader.cc +233 -0
  529. data/src/core/lib/json/json_object_loader.h +618 -0
  530. data/src/core/lib/json/json_reader.cc +86 -62
  531. data/src/core/lib/json/json_util.cc +8 -36
  532. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  533. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
  534. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  535. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
  536. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  537. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
  538. data/src/core/lib/promise/activity.h +56 -8
  539. data/src/core/lib/promise/arena_promise.h +84 -81
  540. data/src/core/lib/promise/context.h +0 -1
  541. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  542. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  543. data/src/core/lib/promise/map.h +0 -1
  544. data/src/core/lib/promise/seq.h +25 -4
  545. data/src/core/lib/promise/sleep.cc +38 -42
  546. data/src/core/lib/promise/sleep.h +27 -24
  547. data/src/core/lib/promise/try_seq.h +26 -6
  548. data/src/core/lib/resolver/resolver.cc +0 -47
  549. data/src/core/lib/resolver/resolver.h +2 -12
  550. data/src/core/lib/resolver/resolver_factory.h +2 -3
  551. data/src/core/lib/resolver/resolver_registry.cc +1 -1
  552. data/src/core/lib/resolver/resolver_registry.h +2 -3
  553. data/src/core/lib/resolver/server_address.cc +11 -15
  554. data/src/core/lib/resolver/server_address.h +4 -8
  555. data/src/core/lib/resource_quota/api.cc +1 -1
  556. data/src/core/lib/resource_quota/arena.cc +21 -1
  557. data/src/core/lib/resource_quota/arena.h +24 -2
  558. data/src/core/lib/resource_quota/memory_quota.cc +157 -17
  559. data/src/core/lib/resource_quota/memory_quota.h +98 -17
  560. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  561. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  562. data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
  563. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  564. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  565. data/src/core/lib/security/authorization/matchers.cc +13 -10
  566. data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
  567. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
  568. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
  569. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
  570. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
  571. data/src/core/lib/security/credentials/credentials.h +16 -12
  572. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
  573. data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
  574. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  575. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
  576. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
  577. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
  578. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
  579. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
  580. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  581. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
  582. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
  583. data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
  586. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  587. data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
  588. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
  589. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  590. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
  591. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
  592. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
  593. data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
  594. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
  595. data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
  596. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  597. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
  598. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
  599. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  600. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  601. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
  602. data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
  603. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  604. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  605. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
  606. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
  607. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
  608. data/src/core/lib/security/transport/auth_filters.h +1 -1
  609. data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
  610. data/src/core/lib/security/transport/security_handshaker.cc +32 -44
  611. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  612. data/src/core/lib/service_config/service_config.h +11 -0
  613. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  614. data/src/core/lib/service_config/service_config_impl.h +11 -13
  615. data/src/core/lib/service_config/service_config_parser.cc +26 -27
  616. data/src/core/lib/service_config/service_config_parser.h +10 -22
  617. data/src/core/lib/slice/percent_encoding.cc +4 -13
  618. data/src/core/lib/slice/slice.cc +10 -4
  619. data/src/core/lib/surface/call.cc +8 -2
  620. data/src/core/lib/surface/channel.cc +6 -6
  621. data/src/core/lib/surface/channel.h +1 -1
  622. data/src/core/lib/surface/completion_queue.cc +0 -2
  623. data/src/core/lib/surface/completion_queue.h +0 -3
  624. data/src/core/lib/surface/init.cc +2 -6
  625. data/src/core/lib/surface/lame_client.cc +2 -3
  626. data/src/core/lib/surface/lame_client.h +1 -1
  627. data/src/core/lib/surface/server.cc +7 -12
  628. data/src/core/lib/surface/server.h +7 -7
  629. data/src/core/lib/surface/validate_metadata.cc +4 -14
  630. data/src/core/lib/surface/version.cc +2 -2
  631. data/src/core/lib/transport/connectivity_state.cc +0 -1
  632. data/src/core/lib/transport/connectivity_state.h +1 -1
  633. data/src/core/lib/transport/error_utils.cc +0 -36
  634. data/src/core/lib/transport/handshaker.cc +7 -9
  635. data/src/core/lib/transport/handshaker.h +4 -5
  636. data/src/core/lib/transport/handshaker_factory.h +2 -3
  637. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  638. data/src/core/lib/transport/handshaker_registry.h +2 -4
  639. data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
  640. data/src/core/lib/transport/metadata_batch.cc +5 -0
  641. data/src/core/lib/transport/metadata_batch.h +52 -7
  642. data/src/core/lib/transport/parsed_metadata.h +0 -1
  643. data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
  644. data/src/core/lib/transport/transport.h +0 -7
  645. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  646. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  647. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
  648. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  649. data/src/core/tsi/fake_transport_security.cc +53 -30
  650. data/src/core/tsi/local_transport_security.cc +9 -5
  651. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  652. data/src/core/tsi/ssl_transport_security.cc +47 -23
  653. data/src/core/tsi/transport_security.cc +18 -6
  654. data/src/core/tsi/transport_security.h +2 -1
  655. data/src/core/tsi/transport_security_interface.h +17 -5
  656. data/src/ruby/ext/grpc/extconf.rb +2 -0
  657. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  658. data/src/ruby/lib/grpc/version.rb +1 -1
  659. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  660. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  661. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  662. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  663. data/third_party/upb/upb/arena.c +277 -0
  664. data/third_party/upb/upb/arena.h +225 -0
  665. data/third_party/upb/upb/array.c +114 -0
  666. data/third_party/upb/upb/array.h +83 -0
  667. data/third_party/upb/upb/collections.h +36 -0
  668. data/third_party/upb/upb/decode.c +161 -65
  669. data/third_party/upb/upb/decode.h +1 -0
  670. data/third_party/upb/upb/decode_fast.c +1 -1
  671. data/third_party/upb/upb/def.c +10 -2
  672. data/third_party/upb/upb/def.h +8 -1
  673. data/third_party/upb/upb/def.hpp +7 -4
  674. data/third_party/upb/upb/encode.c +29 -20
  675. data/third_party/upb/upb/encode.h +16 -6
  676. data/third_party/upb/upb/extension_registry.c +93 -0
  677. data/third_party/upb/upb/extension_registry.h +84 -0
  678. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  679. data/third_party/upb/upb/internal/table.h +385 -0
  680. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  681. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  682. data/third_party/upb/upb/json_decode.c +1512 -0
  683. data/third_party/upb/upb/json_decode.h +47 -0
  684. data/third_party/upb/upb/json_encode.c +7 -3
  685. data/third_party/upb/upb/json_encode.h +6 -3
  686. data/third_party/upb/upb/map.c +108 -0
  687. data/third_party/upb/upb/map.h +117 -0
  688. data/third_party/upb/upb/message_value.h +66 -0
  689. data/third_party/upb/upb/mini_table.c +1147 -0
  690. data/third_party/upb/upb/mini_table.h +189 -0
  691. data/third_party/upb/upb/mini_table.hpp +112 -0
  692. data/third_party/upb/upb/msg.c +2 -62
  693. data/third_party/upb/upb/msg.h +2 -45
  694. data/third_party/upb/upb/msg_internal.h +28 -22
  695. data/third_party/upb/upb/port_def.inc +2 -1
  696. data/third_party/upb/upb/port_undef.inc +1 -0
  697. data/third_party/upb/upb/reflection.c +2 -159
  698. data/third_party/upb/upb/reflection.h +2 -112
  699. data/third_party/upb/upb/status.c +86 -0
  700. data/third_party/upb/upb/status.h +66 -0
  701. data/third_party/upb/upb/table.c +2 -2
  702. data/third_party/upb/upb/table_internal.h +3 -352
  703. data/third_party/upb/upb/text_encode.c +3 -2
  704. data/third_party/upb/upb/upb.c +4 -290
  705. data/third_party/upb/upb/upb.h +7 -196
  706. metadata +90 -38
  707. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  708. data/src/core/lib/iomgr/error_internal.h +0 -66
  709. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  710. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  711. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  712. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  713. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  714. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  715. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -40,11 +40,11 @@
40
40
  #include "src/core/ext/filters/client_channel/client_channel_factory.h"
41
41
  #include "src/core/ext/filters/client_channel/config_selector.h"
42
42
  #include "src/core/ext/filters/client_channel/dynamic_filters.h"
43
- #include "src/core/ext/filters/client_channel/lb_policy.h"
44
43
  #include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
45
44
  #include "src/core/ext/filters/client_channel/subchannel.h"
46
45
  #include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
47
46
  #include "src/core/lib/channel/call_tracer.h"
47
+ #include "src/core/lib/channel/channel_args.h"
48
48
  #include "src/core/lib/channel/channel_fwd.h"
49
49
  #include "src/core/lib/channel/channel_stack.h"
50
50
  #include "src/core/lib/channel/channelz.h"
@@ -56,12 +56,13 @@
56
56
  #include "src/core/lib/gprpp/sync.h"
57
57
  #include "src/core/lib/gprpp/time.h"
58
58
  #include "src/core/lib/gprpp/unique_type_name.h"
59
+ #include "src/core/lib/gprpp/work_serializer.h"
59
60
  #include "src/core/lib/iomgr/call_combiner.h"
60
61
  #include "src/core/lib/iomgr/closure.h"
61
62
  #include "src/core/lib/iomgr/error.h"
62
63
  #include "src/core/lib/iomgr/iomgr_fwd.h"
63
64
  #include "src/core/lib/iomgr/polling_entity.h"
64
- #include "src/core/lib/iomgr/work_serializer.h"
65
+ #include "src/core/lib/load_balancing/lb_policy.h"
65
66
  #include "src/core/lib/resolver/resolver.h"
66
67
  #include "src/core/lib/resource_quota/arena.h"
67
68
  #include "src/core/lib/service_config/service_config.h"
@@ -91,9 +92,6 @@
91
92
  // Channel arg containing a pointer to the ClientChannel object.
92
93
  #define GRPC_ARG_CLIENT_CHANNEL "grpc.internal.client_channel"
93
94
 
94
- // Channel arg containing a pointer to the ServiceConfig object.
95
- #define GRPC_ARG_SERVICE_CONFIG_OBJ "grpc.internal.service_config_obj"
96
-
97
95
  // Max number of batches that can be pending on a call at any given
98
96
  // time. This includes one batch for each of the following ops:
99
97
  // recv_initial_metadata
@@ -112,6 +110,10 @@ class ClientChannel {
112
110
 
113
111
  class LoadBalancedCall;
114
112
 
113
+ // Flag that this object gets stored in channel args as a raw pointer.
114
+ struct RawPointerChannelArgTag {};
115
+ static absl::string_view ChannelArgName() { return GRPC_ARG_CLIENT_CHANNEL; }
116
+
115
117
  // Returns the ClientChannel object from channel, or null if channel
116
118
  // is not a client channel.
117
119
  static ClientChannel* GetFromChannel(Channel* channel);
@@ -166,6 +168,12 @@ class ClientChannel {
166
168
  ConfigSelector::CallDispatchController* call_dispatch_controller,
167
169
  bool is_transparent_retry);
168
170
 
171
+ // Exposed for testing only.
172
+ static ChannelArgs MakeSubchannelArgs(
173
+ const ChannelArgs& channel_args, const ChannelArgs& address_args,
174
+ const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
175
+ const std::string& channel_default_authority);
176
+
169
177
  private:
170
178
  class CallData;
171
179
  class ResolverResultHandler;
@@ -247,8 +255,7 @@ class ClientChannel {
247
255
  const absl::optional<std::string>& health_check_service_name,
248
256
  Resolver::Result result) ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
249
257
  OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
250
- const grpc_channel_args& args)
251
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
258
+ const ChannelArgs& args) ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
252
259
 
253
260
  void UpdateStateAndPickerLocked(
254
261
  grpc_connectivity_state state, const absl::Status& status,
@@ -293,10 +300,10 @@ class ClientChannel {
293
300
  //
294
301
  // Fields set at construction and never modified.
295
302
  //
303
+ ChannelArgs channel_args_;
296
304
  const bool deadline_checking_enabled_;
297
305
  grpc_channel_stack* owning_stack_;
298
306
  ClientChannelFactory* client_channel_factory_;
299
- const grpc_channel_args* channel_args_;
300
307
  RefCountedPtr<ServiceConfig> default_service_config_;
301
308
  std::string uri_to_resolve_;
302
309
  std::string default_authority_;
@@ -20,42 +20,13 @@
20
20
 
21
21
  #include "src/core/ext/filters/client_channel/client_channel_factory.h"
22
22
 
23
- #include "src/core/lib/channel/channel_args.h"
24
- #include "src/core/lib/gpr/useful.h"
25
-
26
23
  // Channel arg key for client channel factory.
27
24
  #define GRPC_ARG_CLIENT_CHANNEL_FACTORY "grpc.client_channel_factory"
28
25
 
29
26
  namespace grpc_core {
30
27
 
31
- namespace {
32
-
33
- void* factory_arg_copy(void* f) { return f; }
34
- void factory_arg_destroy(void* /*f*/) {}
35
- int factory_arg_cmp(void* factory1, void* factory2) {
36
- return QsortCompare(factory1, factory2);
37
- }
38
- const grpc_arg_pointer_vtable factory_arg_vtable = {
39
- factory_arg_copy, factory_arg_destroy, factory_arg_cmp};
40
-
41
- } // namespace
42
-
43
28
  absl::string_view ClientChannelFactory::ChannelArgName() {
44
29
  return GRPC_ARG_CLIENT_CHANNEL_FACTORY;
45
30
  }
46
31
 
47
- grpc_arg ClientChannelFactory::CreateChannelArg(ClientChannelFactory* factory) {
48
- return grpc_channel_arg_pointer_create(
49
- const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL_FACTORY), factory,
50
- &factory_arg_vtable);
51
- }
52
-
53
- ClientChannelFactory* ClientChannelFactory::GetFromChannelArgs(
54
- const grpc_channel_args* args) {
55
- const grpc_arg* arg =
56
- grpc_channel_args_find(args, GRPC_ARG_CLIENT_CHANNEL_FACTORY);
57
- if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
58
- return static_cast<ClientChannelFactory*>(arg->value.pointer.p);
59
- }
60
-
61
32
  } // namespace grpc_core
@@ -21,9 +21,8 @@
21
21
 
22
22
  #include "absl/strings/string_view.h"
23
23
 
24
- #include <grpc/impl/codegen/grpc_types.h>
25
-
26
24
  #include "src/core/ext/filters/client_channel/subchannel.h"
25
+ #include "src/core/lib/channel/channel_args.h"
27
26
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
28
27
  #include "src/core/lib/iomgr/resolved_address.h"
29
28
 
@@ -37,16 +36,9 @@ class ClientChannelFactory {
37
36
 
38
37
  // Creates a subchannel with the specified args.
39
38
  virtual RefCountedPtr<Subchannel> CreateSubchannel(
40
- const grpc_resolved_address& address, const grpc_channel_args* args) = 0;
39
+ const grpc_resolved_address& address, const ChannelArgs& args) = 0;
41
40
 
42
41
  static absl::string_view ChannelArgName();
43
-
44
- // Returns a channel arg containing the specified factory.
45
- static grpc_arg CreateChannelArg(ClientChannelFactory* factory);
46
-
47
- // Returns the factory from args, or null if not found.
48
- static ClientChannelFactory* GetFromChannelArgs(
49
- const grpc_channel_args* args);
50
42
  };
51
43
 
52
44
  } // namespace grpc_core
@@ -21,12 +21,12 @@
21
21
  #include "src/core/ext/filters/client_channel/backup_poller.h"
22
22
  #include "src/core/ext/filters/client_channel/client_channel.h"
23
23
  #include "src/core/ext/filters/client_channel/http_proxy.h"
24
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
25
24
  #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
26
25
  #include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
27
26
  #include "src/core/ext/filters/client_channel/retry_service_config.h"
28
27
  #include "src/core/lib/channel/channel_stack_builder.h"
29
28
  #include "src/core/lib/config/core_configuration.h"
29
+ #include "src/core/lib/load_balancing/lb_policy_registry.h"
30
30
  #include "src/core/lib/surface/channel_init.h"
31
31
  #include "src/core/lib/surface/channel_stack_type.h"
32
32
 
@@ -24,14 +24,18 @@
24
24
  #include <utility>
25
25
  #include <vector>
26
26
 
27
+ #include "absl/status/status.h"
28
+ #include "absl/strings/string_view.h"
29
+
27
30
  #include <grpc/impl/codegen/grpc_types.h>
28
31
  #include <grpc/slice.h>
29
32
  #include <grpc/support/log.h>
30
33
 
34
+ #include "src/core/lib/channel/channel_args.h"
31
35
  #include "src/core/lib/channel/channel_fwd.h"
36
+ #include "src/core/lib/gpr/useful.h"
32
37
  #include "src/core/lib/gprpp/ref_counted.h"
33
38
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
- #include "src/core/lib/iomgr/error.h"
35
39
  #include "src/core/lib/resource_quota/arena.h"
36
40
  #include "src/core/lib/service_config/service_config.h"
37
41
  #include "src/core/lib/service_config/service_config_call_data.h"
@@ -69,7 +73,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
69
73
 
70
74
  struct CallConfig {
71
75
  // Can be set to indicate the call should be failed.
72
- grpc_error_handle error = GRPC_ERROR_NONE;
76
+ absl::Status status;
73
77
  // The per-method parsed configs that will be passed to
74
78
  // ServiceConfigCallData.
75
79
  const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
@@ -101,8 +105,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
101
105
  // to determine what set of dynamic filters will be configured.
102
106
  virtual std::vector<const grpc_channel_filter*> GetFilters() { return {}; }
103
107
  // Modifies channel args to be passed to the dynamic filter stack.
104
- // Takes ownership of argument. Caller takes ownership of result.
105
- virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) {
108
+ virtual ChannelArgs ModifyChannelArgs(const ChannelArgs& args) {
106
109
  return args;
107
110
  }
108
111
 
@@ -111,6 +114,11 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
111
114
  grpc_arg MakeChannelArg() const;
112
115
  static RefCountedPtr<ConfigSelector> GetFromChannelArgs(
113
116
  const grpc_channel_args& args);
117
+ static absl::string_view ChannelArgName() { return GRPC_ARG_CONFIG_SELECTOR; }
118
+ static int ChannelArgsCompare(const ConfigSelector* a,
119
+ const ConfigSelector* b) {
120
+ return QsortCompare(a, b);
121
+ }
114
122
  };
115
123
 
116
124
  // Default ConfigSelector that gets the MethodConfig from the service config.
@@ -19,8 +19,7 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <grpc/impl/codegen/grpc_types.h>
23
-
22
+ #include "src/core/lib/channel/channel_args.h"
24
23
  #include "src/core/lib/channel/channelz.h"
25
24
  #include "src/core/lib/gprpp/orphanable.h"
26
25
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -46,20 +45,20 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
46
45
  // Deadline for connection.
47
46
  Timestamp deadline;
48
47
  // Channel args to be passed to handshakers and transport.
49
- const grpc_channel_args* channel_args;
48
+ ChannelArgs channel_args;
50
49
  };
51
50
 
52
51
  struct Result {
53
52
  // The connected transport.
54
53
  grpc_transport* transport = nullptr;
55
54
  // Channel args to be passed to filters.
56
- const grpc_channel_args* channel_args = nullptr;
55
+ ChannelArgs channel_args;
57
56
  // Channelz socket node of the connected transport, if any.
58
57
  RefCountedPtr<channelz::SocketNode> socket_node;
59
58
 
60
59
  void Reset() {
61
60
  transport = nullptr;
62
- channel_args = nullptr;
61
+ channel_args = ChannelArgs();
63
62
  socket_node.reset();
64
63
  }
65
64
  };
@@ -26,7 +26,6 @@
26
26
  #include <string>
27
27
  #include <vector>
28
28
 
29
- #include "absl/container/inlined_vector.h"
30
29
  #include "absl/status/status.h"
31
30
  #include "absl/status/statusor.h"
32
31
  #include "absl/strings/match.h"
@@ -34,10 +33,11 @@
34
33
  #include "absl/strings/str_split.h"
35
34
  #include "absl/strings/string_view.h"
36
35
  #include "absl/strings/strip.h"
36
+ #include "absl/types/optional.h"
37
37
 
38
+ #include <grpc/impl/codegen/grpc_types.h>
38
39
  #include <grpc/support/alloc.h>
39
40
  #include <grpc/support/log.h>
40
- #include <grpc/support/string_util.h>
41
41
 
42
42
  #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
43
43
  #include "src/core/lib/channel/channel_args.h"
@@ -55,17 +55,14 @@ namespace {
55
55
 
56
56
  /**
57
57
  * Parses the 'https_proxy' env var (fallback on 'http_proxy') and returns the
58
- * proxy hostname to resolve or nullptr on error. Also sets 'user_cred' to user
58
+ * proxy hostname to resolve or nullopt on error. Also sets 'user_cred' to user
59
59
  * credentials if present in the 'http_proxy' env var, otherwise leaves it
60
- * unchanged. It is caller's responsibility to gpr_free user_cred.
60
+ * unchanged.
61
61
  */
62
- // TODO(hork): change this to return std::string
63
- char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
62
+ absl::optional<std::string> GetHttpProxyServer(
63
+ const ChannelArgs& args, absl::optional<std::string>* user_cred) {
64
64
  GPR_ASSERT(user_cred != nullptr);
65
65
  absl::StatusOr<URI> uri;
66
- char* proxy_name = nullptr;
67
- char** authority_strs = nullptr;
68
- size_t authority_nstrs;
69
66
  /* We check the following places to determine the HTTP proxy to use, stopping
70
67
  * at the first one that is set:
71
68
  * 1. GRPC_ARG_HTTP_PROXY channel arg
@@ -74,29 +71,39 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
74
71
  * 4. http_proxy environment variable
75
72
  * If none of the above are set, then no HTTP proxy will be used.
76
73
  */
77
- auto uri_str = UniquePtr<char>(
78
- gpr_strdup(grpc_channel_args_find_string(args, GRPC_ARG_HTTP_PROXY)));
79
- if (uri_str == nullptr) uri_str = UniquePtr<char>(gpr_getenv("grpc_proxy"));
80
- if (uri_str == nullptr) uri_str = UniquePtr<char>(gpr_getenv("https_proxy"));
81
- if (uri_str == nullptr) uri_str = UniquePtr<char>(gpr_getenv("http_proxy"));
82
- if (uri_str == nullptr) return nullptr;
74
+ absl::optional<std::string> uri_str =
75
+ args.GetOwnedString(GRPC_ARG_HTTP_PROXY);
76
+ auto get_env = [](const char* name) -> absl::optional<std::string> {
77
+ char* v = gpr_getenv(name);
78
+ if (v == nullptr) return absl::nullopt;
79
+ std::string s(v);
80
+ gpr_free(v);
81
+ return s;
82
+ };
83
+ if (!uri_str.has_value()) uri_str = get_env("grpc_proxy");
84
+ if (!uri_str.has_value()) uri_str = get_env("https_proxy");
85
+ if (!uri_str.has_value()) uri_str = get_env("http_proxy");
86
+ if (!uri_str.has_value()) return absl::nullopt;
83
87
  // an emtpy value means "don't use proxy"
84
- if (uri_str.get()[0] == '\0') return nullptr;
85
- uri = URI::Parse(uri_str.get());
88
+ if (uri_str->empty()) return absl::nullopt;
89
+ uri = URI::Parse(*uri_str);
86
90
  if (!uri.ok() || uri->authority().empty()) {
87
91
  gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var. Error: %s",
88
92
  uri.status().ToString().c_str());
89
- return nullptr;
93
+ return absl::nullopt;
90
94
  }
91
95
  if (uri->scheme() != "http") {
92
96
  gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
93
97
  uri->scheme().c_str());
94
- return nullptr;
98
+ return absl::nullopt;
95
99
  }
96
100
  /* Split on '@' to separate user credentials from host */
101
+ char** authority_strs = nullptr;
102
+ size_t authority_nstrs;
97
103
  gpr_string_split(uri->authority().c_str(), "@", &authority_strs,
98
104
  &authority_nstrs);
99
105
  GPR_ASSERT(authority_nstrs != 0); /* should have at least 1 string */
106
+ absl::optional<std::string> proxy_name;
100
107
  if (authority_nstrs == 1) {
101
108
  /* User cred not present in authority */
102
109
  proxy_name = authority_strs[0];
@@ -107,10 +114,10 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
107
114
  gpr_log(GPR_DEBUG, "userinfo found in proxy URI");
108
115
  } else {
109
116
  /* Bad authority */
110
- for (size_t i = 0; i < authority_nstrs; i++) {
111
- gpr_free(authority_strs[i]);
112
- }
113
- proxy_name = nullptr;
117
+ proxy_name = absl::nullopt;
118
+ }
119
+ for (size_t i = 0; i < authority_nstrs; i++) {
120
+ gpr_free(authority_strs[i]);
114
121
  }
115
122
  gpr_free(authority_strs);
116
123
  return proxy_name;
@@ -129,35 +136,26 @@ std::string MaybeAddDefaultPort(absl::string_view target) {
129
136
 
130
137
  } // namespace
131
138
 
132
- bool HttpProxyMapper::MapName(const char* server_uri,
133
- const grpc_channel_args* args,
134
- char** name_to_resolve,
135
- grpc_channel_args** new_args) {
136
- if (!grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_HTTP_PROXY, true)) {
137
- return false;
139
+ absl::optional<std::string> HttpProxyMapper::MapName(
140
+ absl::string_view server_uri, ChannelArgs* args) {
141
+ if (!args->GetBool(GRPC_ARG_ENABLE_HTTP_PROXY).value_or(true)) {
142
+ return absl::nullopt;
138
143
  }
139
- char* user_cred = nullptr;
140
- *name_to_resolve = GetHttpProxyServer(args, &user_cred);
141
- if (*name_to_resolve == nullptr) return false;
142
- std::string server_target;
144
+ absl::optional<std::string> user_cred;
145
+ auto name_to_resolve = GetHttpProxyServer(*args, &user_cred);
146
+ if (!name_to_resolve.has_value()) return name_to_resolve;
143
147
  absl::StatusOr<URI> uri = URI::Parse(server_uri);
144
- auto no_use_proxy = [&]() {
145
- gpr_free(*name_to_resolve);
146
- *name_to_resolve = nullptr;
147
- gpr_free(user_cred);
148
- return false;
149
- };
150
148
  if (!uri.ok() || uri->path().empty()) {
151
149
  gpr_log(GPR_ERROR,
152
150
  "'http_proxy' environment variable set, but cannot "
153
151
  "parse server URI '%s' -- not using proxy. Error: %s",
154
- server_uri, uri.status().ToString().c_str());
155
- return no_use_proxy();
152
+ std::string(server_uri).c_str(), uri.status().ToString().c_str());
153
+ return absl::nullopt;
156
154
  }
157
155
  if (uri->scheme() == "unix") {
158
156
  gpr_log(GPR_INFO, "not using proxy for Unix domain socket '%s'",
159
- server_uri);
160
- return no_use_proxy();
157
+ std::string(server_uri).c_str());
158
+ return absl::nullopt;
161
159
  }
162
160
  /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */
163
161
  auto no_proxy_str = UniquePtr<char>(gpr_getenv("no_grpc_proxy"));
@@ -173,42 +171,32 @@ bool HttpProxyMapper::MapName(const char* server_uri,
173
171
  gpr_log(GPR_INFO,
174
172
  "unable to split host and port, not checking no_proxy list for "
175
173
  "host '%s'",
176
- server_uri);
174
+ std::string(server_uri).c_str());
177
175
  } else {
178
176
  std::vector<absl::string_view> no_proxy_hosts =
179
177
  absl::StrSplit(no_proxy_str.get(), ',', absl::SkipEmpty());
180
178
  for (const auto& no_proxy_entry : no_proxy_hosts) {
181
179
  if (absl::EndsWithIgnoreCase(server_host, no_proxy_entry)) {
182
180
  gpr_log(GPR_INFO, "not using proxy for host in no_proxy list '%s'",
183
- server_uri);
181
+ std::string(server_uri).c_str());
184
182
  use_proxy = false;
185
183
  break;
186
184
  }
187
185
  }
188
- if (!use_proxy) return no_use_proxy();
186
+ if (!use_proxy) return absl::nullopt;
189
187
  }
190
188
  }
191
- server_target =
192
- MaybeAddDefaultPort(absl::StripPrefix(uri->path(), "/")).c_str();
193
- absl::InlinedVector<grpc_arg, 2> args_to_add;
194
- args_to_add.push_back(grpc_channel_arg_string_create(
195
- const_cast<char*>(GRPC_ARG_HTTP_CONNECT_SERVER),
196
- const_cast<char*>(server_target.c_str())));
197
- std::string header;
198
- if (user_cred != nullptr) {
189
+ *args = args->Set(GRPC_ARG_HTTP_CONNECT_SERVER,
190
+ MaybeAddDefaultPort(absl::StripPrefix(uri->path(), "/")));
191
+ if (user_cred.has_value()) {
199
192
  /* Use base64 encoding for user credentials as stated in RFC 7617 */
200
- auto encoded_user_cred =
201
- UniquePtr<char>(grpc_base64_encode(user_cred, strlen(user_cred), 0, 0));
202
- header =
203
- absl::StrCat("Proxy-Authorization:Basic ", encoded_user_cred.get());
204
- args_to_add.push_back(grpc_channel_arg_string_create(
205
- const_cast<char*>(GRPC_ARG_HTTP_CONNECT_HEADERS),
206
- const_cast<char*>(header.c_str())));
193
+ auto encoded_user_cred = UniquePtr<char>(
194
+ grpc_base64_encode(user_cred->data(), user_cred->length(), 0, 0));
195
+ *args = args->Set(
196
+ GRPC_ARG_HTTP_CONNECT_HEADERS,
197
+ absl::StrCat("Proxy-Authorization:Basic ", encoded_user_cred.get()));
207
198
  }
208
- *new_args = grpc_channel_args_copy_and_add(args, args_to_add.data(),
209
- args_to_add.size());
210
- gpr_free(user_cred);
211
- return true;
199
+ return name_to_resolve;
212
200
  }
213
201
 
214
202
  void RegisterHttpProxyMapper() {
@@ -21,23 +21,26 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <grpc/impl/codegen/grpc_types.h>
24
+ #include <string>
25
+
26
+ #include "absl/strings/string_view.h"
27
+ #include "absl/types/optional.h"
25
28
 
26
29
  #include "src/core/ext/filters/client_channel/proxy_mapper.h"
30
+ #include "src/core/lib/channel/channel_args.h"
27
31
  #include "src/core/lib/iomgr/resolved_address.h"
28
32
 
29
33
  namespace grpc_core {
30
34
 
31
35
  class HttpProxyMapper : public ProxyMapperInterface {
32
36
  public:
33
- bool MapName(const char* server_uri, const grpc_channel_args* args,
34
- char** name_to_resolve, grpc_channel_args** new_args) override;
35
-
36
- bool MapAddress(const grpc_resolved_address& /*address*/,
37
- const grpc_channel_args* /*args*/,
38
- grpc_resolved_address** /*new_address*/,
39
- grpc_channel_args** /*new_args*/) override {
40
- return false;
37
+ absl::optional<std::string> MapName(absl::string_view server_uri,
38
+ ChannelArgs* args) override;
39
+
40
+ absl::optional<grpc_resolved_address> MapAddress(
41
+ const grpc_resolved_address& /*address*/,
42
+ ChannelArgs* /*args*/) override {
43
+ return absl::nullopt;
41
44
  }
42
45
  };
43
46
 
@@ -18,7 +18,6 @@
18
18
 
19
19
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
20
20
 
21
- #include <cstring>
22
21
  #include <memory>
23
22
  #include <string>
24
23
 
@@ -29,10 +28,11 @@
29
28
  #include <grpc/impl/codegen/connectivity_state.h>
30
29
  #include <grpc/support/log.h>
31
30
 
32
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
33
- #include "src/core/ext/filters/client_channel/subchannel_interface.h"
31
+ #include "src/core/lib/channel/channel_args.h"
34
32
  #include "src/core/lib/gprpp/debug_location.h"
35
33
  #include "src/core/lib/iomgr/pollset_set.h"
34
+ #include "src/core/lib/load_balancing/lb_policy_registry.h"
35
+ #include "src/core/lib/load_balancing/subchannel_interface.h"
36
36
  #include "src/core/lib/resolver/server_address.h"
37
37
  #include "src/core/lib/transport/connectivity_state.h"
38
38
 
@@ -51,7 +51,7 @@ class ChildPolicyHandler::Helper
51
51
  ~Helper() override { parent_.reset(DEBUG_LOCATION, "Helper"); }
52
52
 
53
53
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
54
- ServerAddress address, const grpc_channel_args& args) override {
54
+ ServerAddress address, const ChannelArgs& args) override {
55
55
  if (parent_->shutting_down_) return nullptr;
56
56
  if (!CalledByCurrentChild() && !CalledByPendingChild()) return nullptr;
57
57
  return parent_->channel_control_helper()->CreateSubchannel(
@@ -229,11 +229,12 @@ void ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
229
229
  if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
230
230
  gpr_log(GPR_INFO,
231
231
  "[child_policy_handler %p] creating new %schild policy %s", this,
232
- child_policy_ == nullptr ? "" : "pending ", args.config->name());
232
+ child_policy_ == nullptr ? "" : "pending ",
233
+ std::string(args.config->name()).c_str());
233
234
  }
234
235
  auto& lb_policy =
235
236
  child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
236
- lb_policy = CreateChildPolicy(args.config->name(), *args.args);
237
+ lb_policy = CreateChildPolicy(args.config->name(), args.args);
237
238
  policy_to_update = lb_policy.get();
238
239
  } else {
239
240
  // Cases 2a and 3a: update an existing policy.
@@ -273,24 +274,25 @@ void ChildPolicyHandler::ResetBackoffLocked() {
273
274
  }
274
275
 
275
276
  OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
276
- const char* child_policy_name, const grpc_channel_args& args) {
277
+ absl::string_view child_policy_name, const ChannelArgs& args) {
277
278
  Helper* helper = new Helper(Ref(DEBUG_LOCATION, "Helper"));
278
279
  LoadBalancingPolicy::Args lb_policy_args;
279
280
  lb_policy_args.work_serializer = work_serializer();
280
281
  lb_policy_args.channel_control_helper =
281
282
  std::unique_ptr<ChannelControlHelper>(helper);
282
- lb_policy_args.args = &args;
283
+ lb_policy_args.args = args;
283
284
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
284
285
  CreateLoadBalancingPolicy(child_policy_name, std::move(lb_policy_args));
285
286
  if (GPR_UNLIKELY(lb_policy == nullptr)) {
286
- gpr_log(GPR_ERROR, "could not create LB policy \"%s\"", child_policy_name);
287
+ gpr_log(GPR_ERROR, "could not create LB policy \"%s\"",
288
+ std::string(child_policy_name).c_str());
287
289
  return nullptr;
288
290
  }
289
291
  helper->set_child(lb_policy.get());
290
292
  if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
291
293
  gpr_log(GPR_INFO,
292
294
  "[child_policy_handler %p] created new LB policy \"%s\" (%p)", this,
293
- child_policy_name, lb_policy.get());
295
+ std::string(child_policy_name).c_str(), lb_policy.get());
294
296
  }
295
297
  channel_control_helper()->AddTraceEvent(
296
298
  ChannelControlHelper::TRACE_INFO,
@@ -303,12 +305,12 @@ OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
303
305
  bool ChildPolicyHandler::ConfigChangeRequiresNewPolicyInstance(
304
306
  LoadBalancingPolicy::Config* old_config,
305
307
  LoadBalancingPolicy::Config* new_config) const {
306
- return strcmp(old_config->name(), new_config->name()) != 0;
308
+ return old_config->name() != new_config->name();
307
309
  }
308
310
 
309
311
  OrphanablePtr<LoadBalancingPolicy>
310
312
  ChildPolicyHandler::CreateLoadBalancingPolicy(
311
- const char* name, LoadBalancingPolicy::Args args) const {
313
+ absl::string_view name, LoadBalancingPolicy::Args args) const {
312
314
  return LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
313
315
  name, std::move(args));
314
316
  }
@@ -16,17 +16,17 @@
16
16
 
17
17
  #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
18
18
  #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
19
-
20
19
  #include <grpc/support/port_platform.h>
21
20
 
22
21
  #include <utility>
23
22
 
24
- #include <grpc/impl/codegen/grpc_types.h>
23
+ #include "absl/strings/string_view.h"
25
24
 
26
- #include "src/core/ext/filters/client_channel/lb_policy.h"
25
+ #include "src/core/lib/channel/channel_args.h"
27
26
  #include "src/core/lib/debug/trace.h"
28
27
  #include "src/core/lib/gprpp/orphanable.h"
29
28
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
29
+ #include "src/core/lib/load_balancing/lb_policy.h"
30
30
 
31
31
  namespace grpc_core {
32
32
 
@@ -41,7 +41,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
41
41
  ChildPolicyHandler(Args args, TraceFlag* tracer)
42
42
  : LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
43
43
 
44
- const char* name() const override { return "child_policy_handler"; }
44
+ absl::string_view name() const override { return "child_policy_handler"; }
45
45
 
46
46
  void UpdateLocked(UpdateArgs args) override;
47
47
  void ExitIdleLocked() override;
@@ -57,7 +57,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
57
57
  // May be overridden by subclasses to avoid recursion when an LB
58
58
  // policy factory returns a ChildPolicyHandler.
59
59
  virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
60
- const char* name, LoadBalancingPolicy::Args args) const;
60
+ absl::string_view name, LoadBalancingPolicy::Args args) const;
61
61
 
62
62
  private:
63
63
  class Helper;
@@ -65,7 +65,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
65
65
  void ShutdownLocked() override;
66
66
 
67
67
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicy(
68
- const char* child_policy_name, const grpc_channel_args& args);
68
+ absl::string_view child_policy_name, const ChannelArgs& args);
69
69
 
70
70
  // Passed in from caller at construction time.
71
71
  TraceFlag* tracer_;