grpc 1.48.0-x86_64-linux → 1.49.1-x86_64-linux

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 (721) 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 +125 -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 +102 -131
  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 +63 -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 +38 -17
  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 +101 -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 +42 -8
  520. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  521. data/src/core/lib/iomgr/resolve_address_windows.cc +44 -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/2.6/grpc_c.so +0 -0
  659. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  660. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  661. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  662. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  663. data/src/ruby/lib/grpc/version.rb +1 -1
  664. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  665. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  666. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  667. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  668. data/third_party/upb/upb/arena.c +277 -0
  669. data/third_party/upb/upb/arena.h +225 -0
  670. data/third_party/upb/upb/array.c +114 -0
  671. data/third_party/upb/upb/array.h +83 -0
  672. data/third_party/upb/upb/collections.h +36 -0
  673. data/third_party/upb/upb/decode.c +161 -65
  674. data/third_party/upb/upb/decode.h +1 -0
  675. data/third_party/upb/upb/decode_fast.c +1 -1
  676. data/third_party/upb/upb/def.c +10 -2
  677. data/third_party/upb/upb/def.h +8 -1
  678. data/third_party/upb/upb/def.hpp +7 -4
  679. data/third_party/upb/upb/encode.c +29 -20
  680. data/third_party/upb/upb/encode.h +16 -6
  681. data/third_party/upb/upb/extension_registry.c +93 -0
  682. data/third_party/upb/upb/extension_registry.h +84 -0
  683. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  684. data/third_party/upb/upb/internal/table.h +385 -0
  685. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  686. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  687. data/third_party/upb/upb/json_decode.c +1512 -0
  688. data/third_party/upb/upb/json_decode.h +47 -0
  689. data/third_party/upb/upb/json_encode.c +7 -3
  690. data/third_party/upb/upb/json_encode.h +6 -3
  691. data/third_party/upb/upb/map.c +108 -0
  692. data/third_party/upb/upb/map.h +117 -0
  693. data/third_party/upb/upb/message_value.h +66 -0
  694. data/third_party/upb/upb/mini_table.c +1147 -0
  695. data/third_party/upb/upb/mini_table.h +189 -0
  696. data/third_party/upb/upb/mini_table.hpp +112 -0
  697. data/third_party/upb/upb/msg.c +2 -62
  698. data/third_party/upb/upb/msg.h +2 -45
  699. data/third_party/upb/upb/msg_internal.h +28 -22
  700. data/third_party/upb/upb/port_def.inc +2 -1
  701. data/third_party/upb/upb/port_undef.inc +1 -0
  702. data/third_party/upb/upb/reflection.c +2 -159
  703. data/third_party/upb/upb/reflection.h +2 -112
  704. data/third_party/upb/upb/status.c +86 -0
  705. data/third_party/upb/upb/status.h +66 -0
  706. data/third_party/upb/upb/table.c +2 -2
  707. data/third_party/upb/upb/table_internal.h +3 -352
  708. data/third_party/upb/upb/text_encode.c +3 -2
  709. data/third_party/upb/upb/upb.c +4 -290
  710. data/third_party/upb/upb/upb.h +7 -196
  711. metadata +89 -38
  712. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  713. data/src/core/lib/iomgr/error_internal.h +0 -66
  714. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  715. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  716. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  717. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  718. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  719. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  720. data/src/core/lib/promise/detail/switch.h +0 -1455
  721. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
@@ -21,8 +21,7 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <grpc/impl/codegen/grpc_types.h>
25
-
24
+ #include "src/core/lib/channel/channel_args.h"
26
25
  #include "src/core/lib/iomgr/iomgr_fwd.h"
27
26
 
28
27
  // A handshaker factory is used to create handshakers.
@@ -38,7 +37,7 @@ class HandshakeManager;
38
37
 
39
38
  class HandshakerFactory {
40
39
  public:
41
- virtual void AddHandshakers(const grpc_channel_args* args,
40
+ virtual void AddHandshakers(const ChannelArgs& args,
42
41
  grpc_pollset_set* interested_parties,
43
42
  HandshakeManager* handshake_mgr) = 0;
44
43
  virtual ~HandshakerFactory() = default;
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include <stddef.h>
24
24
 
25
+ #include <algorithm>
25
26
  #include <utility>
26
27
 
27
28
  namespace grpc_core {
@@ -43,7 +44,7 @@ HandshakerRegistry HandshakerRegistry::Builder::Build() {
43
44
  }
44
45
 
45
46
  void HandshakerRegistry::AddHandshakers(HandshakerType handshaker_type,
46
- const grpc_channel_args* args,
47
+ const ChannelArgs& args,
47
48
  grpc_pollset_set* interested_parties,
48
49
  HandshakeManager* handshake_mgr) const {
49
50
  for (const auto& factory : factories_[handshaker_type]) {
@@ -24,8 +24,7 @@
24
24
  #include <memory>
25
25
  #include <vector>
26
26
 
27
- #include <grpc/impl/codegen/grpc_types.h>
28
-
27
+ #include "src/core/lib/channel/channel_args.h"
29
28
  #include "src/core/lib/iomgr/iomgr_fwd.h"
30
29
  #include "src/core/lib/transport/handshaker_factory.h"
31
30
 
@@ -55,8 +54,7 @@ class HandshakerRegistry {
55
54
  factories_[NUM_HANDSHAKER_TYPES];
56
55
  };
57
56
 
58
- void AddHandshakers(HandshakerType handshaker_type,
59
- const grpc_channel_args* args,
57
+ void AddHandshakers(HandshakerType handshaker_type, const ChannelArgs& args,
60
58
  grpc_pollset_set* interested_parties,
61
59
  HandshakeManager* handshake_mgr) const;
62
60
 
@@ -30,8 +30,8 @@
30
30
  #include "absl/memory/memory.h"
31
31
  #include "absl/strings/str_cat.h"
32
32
  #include "absl/strings/string_view.h"
33
+ #include "absl/types/optional.h"
33
34
 
34
- #include <grpc/impl/codegen/grpc_types.h>
35
35
  #include <grpc/slice.h>
36
36
  #include <grpc/slice_buffer.h>
37
37
  #include <grpc/support/alloc.h>
@@ -118,8 +118,7 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() {
118
118
  args_->endpoint = nullptr;
119
119
  read_buffer_to_destroy_ = args_->read_buffer;
120
120
  args_->read_buffer = nullptr;
121
- grpc_channel_args_destroy(args_->args);
122
- args_->args = nullptr;
121
+ args_->args = ChannelArgs();
123
122
  }
124
123
 
125
124
  // If the handshake failed or we're shutting down, clean up and invoke the
@@ -297,10 +296,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
297
296
  HandshakerArgs* args) {
298
297
  // Check for HTTP CONNECT channel arg.
299
298
  // If not found, invoke on_handshake_done without doing anything.
300
- const grpc_arg* arg =
301
- grpc_channel_args_find(args->args, GRPC_ARG_HTTP_CONNECT_SERVER);
302
- char* server_name = grpc_channel_arg_get_string(arg);
303
- if (server_name == nullptr) {
299
+ absl::optional<absl::string_view> server_name =
300
+ args->args.GetString(GRPC_ARG_HTTP_CONNECT_SERVER);
301
+ if (!server_name.has_value()) {
304
302
  // Set shutdown to true so that subsequent calls to
305
303
  // http_connect_handshaker_shutdown() do nothing.
306
304
  {
@@ -311,14 +309,15 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
311
309
  return;
312
310
  }
313
311
  // Get headers from channel args.
314
- arg = grpc_channel_args_find(args->args, GRPC_ARG_HTTP_CONNECT_HEADERS);
315
- char* arg_header_string = grpc_channel_arg_get_string(arg);
312
+ absl::optional<absl::string_view> arg_header_string =
313
+ args->args.GetString(GRPC_ARG_HTTP_CONNECT_HEADERS);
316
314
  grpc_http_header* headers = nullptr;
317
315
  size_t num_headers = 0;
318
316
  char** header_strings = nullptr;
319
317
  size_t num_header_strings = 0;
320
- if (arg_header_string != nullptr) {
321
- gpr_string_split(arg_header_string, "\n", &header_strings,
318
+ if (arg_header_string.has_value()) {
319
+ std::string buffer(*arg_header_string);
320
+ gpr_string_split(buffer.c_str(), "\n", &header_strings,
322
321
  &num_header_strings);
323
322
  headers = static_cast<grpc_http_header*>(
324
323
  gpr_malloc(sizeof(grpc_http_header) * num_header_strings));
@@ -342,8 +341,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
342
341
  on_handshake_done_ = on_handshake_done;
343
342
  // Log connection via proxy.
344
343
  std::string proxy_name(grpc_endpoint_get_peer(args->endpoint));
345
- gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s", server_name,
346
- proxy_name.c_str());
344
+ std::string server_name_string(*server_name);
345
+ gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s",
346
+ server_name_string.c_str(), proxy_name.c_str());
347
347
  // Construct HTTP CONNECT request.
348
348
  grpc_http_request request;
349
349
  request.method = const_cast<char*>("CONNECT");
@@ -352,8 +352,8 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
352
352
  request.hdr_count = num_headers;
353
353
  request.body_length = 0;
354
354
  request.body = nullptr;
355
- grpc_slice request_slice =
356
- grpc_httpcli_format_connect_request(&request, server_name, server_name);
355
+ grpc_slice request_slice = grpc_httpcli_format_connect_request(
356
+ &request, server_name_string.c_str(), server_name_string.c_str());
357
357
  grpc_slice_buffer_add(&write_buffer_, request_slice);
358
358
  // Clean up.
359
359
  gpr_free(headers);
@@ -382,7 +382,7 @@ HttpConnectHandshaker::HttpConnectHandshaker() {
382
382
 
383
383
  class HttpConnectHandshakerFactory : public HandshakerFactory {
384
384
  public:
385
- void AddHandshakers(const grpc_channel_args* /*args*/,
385
+ void AddHandshakers(const ChannelArgs& /*args*/,
386
386
  grpc_pollset_set* /*interested_parties*/,
387
387
  HandshakeManager* handshake_mgr) override {
388
388
  handshake_mgr->Add(MakeRefCounted<HttpConnectHandshaker>());
@@ -284,4 +284,9 @@ const std::string& GrpcStatusContext::DisplayValue(const std::string& x) {
284
284
  return x;
285
285
  }
286
286
 
287
+ std::string WaitForReady::DisplayValue(ValueType x) {
288
+ return absl::StrCat(x.value ? "true" : "false",
289
+ x.explicitly_set ? " (explicit)" : "");
290
+ }
291
+
287
292
  } // namespace grpc_core
@@ -25,7 +25,6 @@
25
25
 
26
26
  #include <cstdint>
27
27
  #include <string>
28
- #include <type_traits>
29
28
  #include <utility>
30
29
 
31
30
  #include "absl/container/inlined_vector.h"
@@ -388,6 +387,17 @@ struct GrpcStatusContext {
388
387
  static const std::string& DisplayValue(const std::string& x);
389
388
  };
390
389
 
390
+ // Annotation added by client surface code to denote wait-for-ready state
391
+ struct WaitForReady {
392
+ struct ValueType {
393
+ bool value = false;
394
+ bool explicitly_set = false;
395
+ };
396
+ static absl::string_view DebugKey() { return "WaitForReady"; }
397
+ static constexpr bool kRepeatable = false;
398
+ static std::string DisplayValue(ValueType x);
399
+ };
400
+
391
401
  namespace metadata_detail {
392
402
 
393
403
  // Build a key/value formatted debug string.
@@ -678,6 +688,10 @@ struct Value<Which, absl::enable_if_t<Which::kRepeatable == false &&
678
688
  void EncodeTo(Encoder* encoder) const {
679
689
  encoder->Encode(Which(), value);
680
690
  }
691
+ template <typename Encoder>
692
+ void VisitWith(Encoder* encoder) const {
693
+ return EncodeTo(encoder);
694
+ }
681
695
  void LogTo(LogFn log_fn) const {
682
696
  LogKeyValueTo(Which::key(), value, Which::Encode, log_fn);
683
697
  }
@@ -702,6 +716,10 @@ struct Value<Which, absl::enable_if_t<Which::kRepeatable == false &&
702
716
  }
703
717
  template <typename Encoder>
704
718
  void EncodeTo(Encoder*) const {}
719
+ template <typename Encoder>
720
+ void VisitWith(Encoder* encoder) const {
721
+ encoder->Encode(Which(), value);
722
+ }
705
723
  void LogTo(LogFn log_fn) const {
706
724
  LogKeyValueTo(Which::DebugKey(), value, Which::DisplayValue, log_fn);
707
725
  }
@@ -733,6 +751,10 @@ struct Value<Which, absl::enable_if_t<Which::kRepeatable == true &&
733
751
  encoder->Encode(Which(), v);
734
752
  }
735
753
  }
754
+ template <typename Encoder>
755
+ void VisitWith(Encoder* encoder) const {
756
+ return EncodeTo(encoder);
757
+ }
736
758
  void LogTo(LogFn log_fn) const {
737
759
  for (const auto& v : value) {
738
760
  LogKeyValueTo(Which::key(), v, Which::Encode, log_fn);
@@ -762,6 +784,12 @@ struct Value<Which, absl::enable_if_t<Which::kRepeatable == true &&
762
784
  }
763
785
  template <typename Encoder>
764
786
  void EncodeTo(Encoder*) const {}
787
+ template <typename Encoder>
788
+ void VisitWith(Encoder* encoder) const {
789
+ for (const auto& v : value) {
790
+ encoder->Encode(Which(), v);
791
+ }
792
+ }
765
793
  void LogTo(LogFn log_fn) const {
766
794
  for (const auto& v : value) {
767
795
  LogKeyValueTo(Which::DebugKey(), v, Which::DisplayValue, log_fn);
@@ -806,6 +834,17 @@ struct EncodeWrapper {
806
834
  }
807
835
  };
808
836
 
837
+ // Callable for the table ForEach in ForEach() -- for each value, call the
838
+ // appropriate visitor method.
839
+ template <typename Encoder>
840
+ struct ForEachWrapper {
841
+ Encoder* encoder;
842
+ template <typename Which>
843
+ void operator()(const Value<Which>& which) {
844
+ which.VisitWith(encoder);
845
+ }
846
+ };
847
+
809
848
  // Callable for the ForEach in Log()
810
849
  struct LogWrapper {
811
850
  LogFn log_fn;
@@ -1003,10 +1042,7 @@ class MetadataMap {
1003
1042
  // void Encode(TraitsType, typename TraitsType::ValueType value);
1004
1043
  // For fields for which we do not have traits, this will be a method
1005
1044
  // with the signature:
1006
- // void Encode(grpc_mdelem md);
1007
- // TODO(ctiller): It's expected that the latter Encode method will
1008
- // become Encode(Slice, Slice) by the end of the current metadata API
1009
- // transitions.
1045
+ // void Encode(string_view key, Slice value);
1010
1046
  template <typename Encoder>
1011
1047
  void Encode(Encoder* encoder) const {
1012
1048
  table_.ForEach(metadata_detail::EncodeWrapper<Encoder>{encoder});
@@ -1015,6 +1051,15 @@ class MetadataMap {
1015
1051
  }
1016
1052
  }
1017
1053
 
1054
+ // Like Encode, but also visit the non-encodable fields.
1055
+ template <typename Encoder>
1056
+ void ForEach(Encoder* encoder) const {
1057
+ table_.ForEach(metadata_detail::ForEachWrapper<Encoder>{encoder});
1058
+ for (const auto& unk : unknown_) {
1059
+ encoder->Encode(unk.first, unk.second);
1060
+ }
1061
+ }
1062
+
1018
1063
  // Similar to Encode, but targeted at logging: for each metadatum,
1019
1064
  // call f(key, value) as absl::string_views.
1020
1065
  void Log(metadata_detail::LogFn log_fn) const {
@@ -1227,7 +1272,7 @@ template <typename Derived, typename... Traits>
1227
1272
  Derived MetadataMap<Derived, Traits...>::Copy() const {
1228
1273
  Derived out(unknown_.arena());
1229
1274
  metadata_detail::CopySink<Derived> sink(&out);
1230
- Encode(&sink);
1275
+ ForEach(&sink);
1231
1276
  return out;
1232
1277
  }
1233
1278
 
@@ -1254,7 +1299,7 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
1254
1299
  grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata,
1255
1300
  // Non-encodable things
1256
1301
  grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
1257
- grpc_core::GrpcStatusContext>;
1302
+ grpc_core::GrpcStatusContext, grpc_core::WaitForReady>;
1258
1303
 
1259
1304
  struct grpc_metadata_batch : public grpc_metadata_batch_base {
1260
1305
  using grpc_metadata_batch_base::grpc_metadata_batch_base;
@@ -21,7 +21,6 @@
21
21
 
22
22
  #include <cstdint>
23
23
  #include <string>
24
- #include <type_traits>
25
24
  #include <utility>
26
25
 
27
26
  #include "absl/functional/function_ref.h"
@@ -25,8 +25,9 @@
25
25
  #include "absl/base/thread_annotations.h"
26
26
  #include "absl/memory/memory.h"
27
27
  #include "absl/status/statusor.h"
28
+ #include "absl/strings/string_view.h"
29
+ #include "absl/types/optional.h"
28
30
 
29
- #include <grpc/impl/codegen/grpc_types.h>
30
31
  #include <grpc/slice.h>
31
32
  #include <grpc/support/alloc.h>
32
33
  #include <grpc/support/log.h>
@@ -34,7 +35,6 @@
34
35
  #include "src/core/lib/address_utils/parse_address.h"
35
36
  #include "src/core/lib/channel/channel_args.h"
36
37
  #include "src/core/lib/config/core_configuration.h"
37
- #include "src/core/lib/gpr/useful.h"
38
38
  #include "src/core/lib/gprpp/debug_location.h"
39
39
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
40
40
  #include "src/core/lib/gprpp/sync.h"
@@ -129,25 +129,20 @@ void TCPConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
129
129
  }
130
130
  GPR_ASSERT(args->endpoint == nullptr);
131
131
  args_ = args;
132
- char* address = grpc_channel_args_find_string(
133
- args->args, GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS);
134
- absl::StatusOr<URI> uri = URI::Parse(address);
132
+ absl::StatusOr<URI> uri = URI::Parse(
133
+ args->args.GetString(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS).value());
135
134
  if (!uri.ok() || !grpc_parse_uri(*uri, &addr_)) {
136
135
  MutexLock lock(&mu_);
137
136
  FinishLocked(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
138
137
  "Resolved address in invalid format"));
139
138
  return;
140
139
  }
141
- bind_endpoint_to_pollset_ = grpc_channel_args_find_bool(
142
- args->args, GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET, false);
143
- const char* args_to_remove[] = {
144
- GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS,
145
- GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET};
140
+ bind_endpoint_to_pollset_ =
141
+ args->args.GetBool(GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET)
142
+ .value_or(false);
146
143
  // Update args to not contain the args relevant to TCP connect handshaker.
147
- grpc_channel_args* channel_args = grpc_channel_args_copy_and_remove(
148
- args->args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove));
149
- grpc_channel_args_destroy(args->args);
150
- args->args = channel_args;
144
+ args->args = args->args.Remove(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS)
145
+ .Remove(GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET);
151
146
  // In some implementations, the closure can be flushed before
152
147
  // grpc_tcp_client_connect() returns, and since the closure requires access
153
148
  // to mu_, this can result in a deadlock (see
@@ -160,7 +155,7 @@ void TCPConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
160
155
  // Instead pass endpoint_ and swap this endpoint to
161
156
  // args endpoint on success.
162
157
  grpc_tcp_client_connect(&connected_, &endpoint_to_destroy_,
163
- interested_parties_, args->args, &addr_,
158
+ interested_parties_, args->args.ToC().get(), &addr_,
164
159
  args->deadline);
165
160
  }
166
161
 
@@ -215,8 +210,7 @@ TCPConnectHandshaker::~TCPConnectHandshaker() {
215
210
  void TCPConnectHandshaker::CleanupArgsForFailureLocked() {
216
211
  read_buffer_to_destroy_ = args_->read_buffer;
217
212
  args_->read_buffer = nullptr;
218
- grpc_channel_args_destroy(args_->args);
219
- args_->args = nullptr;
213
+ args_->args = ChannelArgs();
220
214
  }
221
215
 
222
216
  void TCPConnectHandshaker::FinishLocked(grpc_error_handle error) {
@@ -233,7 +227,7 @@ void TCPConnectHandshaker::FinishLocked(grpc_error_handle error) {
233
227
 
234
228
  class TCPConnectHandshakerFactory : public HandshakerFactory {
235
229
  public:
236
- void AddHandshakers(const grpc_channel_args* /*args*/,
230
+ void AddHandshakers(const ChannelArgs& /*args*/,
237
231
  grpc_pollset_set* interested_parties,
238
232
  HandshakeManager* handshake_mgr) override {
239
233
  handshake_mgr->Add(
@@ -344,9 +344,6 @@ struct grpc_transport_stream_op_batch_payload {
344
344
  : context(context) {}
345
345
  struct {
346
346
  grpc_metadata_batch* send_initial_metadata = nullptr;
347
- /** Iff send_initial_metadata != NULL, flags associated with
348
- send_initial_metadata: a bitfield of GRPC_INITIAL_METADATA_xxx */
349
- uint32_t send_initial_metadata_flags = 0;
350
347
  // If non-NULL, will be set by the transport to the peer string (a char*).
351
348
  // The transport retains ownership of the string.
352
349
  // Note: This pointer may be used by the transport after the
@@ -388,10 +385,6 @@ struct grpc_transport_stream_op_batch_payload {
388
385
 
389
386
  struct {
390
387
  grpc_metadata_batch* recv_initial_metadata = nullptr;
391
- // Flags are used only on the server side. If non-null, will be set to
392
- // a bitfield of the GRPC_INITIAL_METADATA_xxx macros (e.g., to
393
- // indicate if the call is idempotent).
394
- uint32_t* recv_flags = nullptr;
395
388
  /** Should be enqueued when initial metadata is ready to be processed. */
396
389
  grpc_closure* recv_initial_metadata_ready = nullptr;
397
390
  // If not NULL, will be set to true if trailing metadata is
@@ -71,7 +71,8 @@ typedef struct alts_grpc_handshaker_client {
71
71
  * handshaker service. */
72
72
  grpc_byte_buffer* send_buffer = nullptr;
73
73
  grpc_byte_buffer* recv_buffer = nullptr;
74
- grpc_status_code status = GRPC_STATUS_OK;
74
+ // Used to inject a read failure from tests.
75
+ bool inject_read_failure = false;
75
76
  /* Initial metadata to be received from handshaker service. */
76
77
  grpc_metadata_array recv_initial_metadata;
77
78
  /* A callback function provided by an application to be invoked when response
@@ -106,6 +107,8 @@ typedef struct alts_grpc_handshaker_client {
106
107
  recv_message_result* pending_recv_message_result = nullptr;
107
108
  /* Maximum frame size used by frame protector. */
108
109
  size_t max_frame_size;
110
+ // If non-null, will be populated with an error string upon error.
111
+ std::string* error;
109
112
  } alts_grpc_handshaker_client;
110
113
 
111
114
  static void handshaker_client_send_buffer_destroy(
@@ -174,10 +177,11 @@ static void maybe_complete_tsi_next(
174
177
  }
175
178
 
176
179
  static void handle_response_done(alts_grpc_handshaker_client* client,
177
- tsi_result status,
180
+ tsi_result status, std::string error,
178
181
  const unsigned char* bytes_to_send,
179
182
  size_t bytes_to_send_size,
180
183
  tsi_handshaker_result* result) {
184
+ if (client->error != nullptr) *client->error = std::move(error);
181
185
  recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
182
186
  p->status = status;
183
187
  p->bytes_to_send = bytes_to_send;
@@ -193,7 +197,6 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
193
197
  alts_grpc_handshaker_client* client =
194
198
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
195
199
  grpc_byte_buffer* recv_buffer = client->recv_buffer;
196
- grpc_status_code status = client->status;
197
200
  alts_tsi_handshaker* handshaker = client->handshaker;
198
201
  /* Invalid input check. */
199
202
  if (client->cb == nullptr) {
@@ -204,25 +207,34 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
204
207
  if (handshaker == nullptr) {
205
208
  gpr_log(GPR_ERROR,
206
209
  "handshaker is nullptr in alts_tsi_handshaker_handle_response()");
207
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
210
+ handle_response_done(
211
+ client, TSI_INTERNAL_ERROR,
212
+ "handshaker is nullptr in alts_tsi_handshaker_handle_response()",
213
+ nullptr, 0, nullptr);
208
214
  return;
209
215
  }
210
216
  /* TSI handshake has been shutdown. */
211
217
  if (alts_tsi_handshaker_has_shutdown(handshaker)) {
212
218
  gpr_log(GPR_INFO, "TSI handshake shutdown");
213
- handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN, nullptr, 0, nullptr);
219
+ handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN,
220
+ "TSI handshake shutdown", nullptr, 0, nullptr);
214
221
  return;
215
222
  }
216
- /* Failed grpc call check. */
217
- if (!is_ok || status != GRPC_STATUS_OK) {
218
- gpr_log(GPR_INFO, "grpc call made to handshaker service failed");
219
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
223
+ /* Check for failed grpc read. */
224
+ if (!is_ok || client->inject_read_failure) {
225
+ gpr_log(GPR_INFO, "read failed on grpc call to handshaker service");
226
+ handle_response_done(client, TSI_INTERNAL_ERROR,
227
+ "read failed on grpc call to handshaker service",
228
+ nullptr, 0, nullptr);
220
229
  return;
221
230
  }
222
231
  if (recv_buffer == nullptr) {
223
232
  gpr_log(GPR_ERROR,
224
233
  "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()");
225
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
234
+ handle_response_done(
235
+ client, TSI_INTERNAL_ERROR,
236
+ "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()",
237
+ nullptr, 0, nullptr);
226
238
  return;
227
239
  }
228
240
  upb::Arena arena;
@@ -233,14 +245,17 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
233
245
  /* Invalid handshaker response check. */
234
246
  if (resp == nullptr) {
235
247
  gpr_log(GPR_ERROR, "alts_tsi_utils_deserialize_response() failed");
236
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
248
+ handle_response_done(client, TSI_DATA_CORRUPTED,
249
+ "alts_tsi_utils_deserialize_response() failed",
250
+ nullptr, 0, nullptr);
237
251
  return;
238
252
  }
239
253
  const grpc_gcp_HandshakerStatus* resp_status =
240
254
  grpc_gcp_HandshakerResp_status(resp);
241
255
  if (resp_status == nullptr) {
242
256
  gpr_log(GPR_ERROR, "No status in HandshakerResp");
243
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
257
+ handle_response_done(client, TSI_DATA_CORRUPTED,
258
+ "No status in HandshakerResp", nullptr, 0, nullptr);
244
259
  return;
245
260
  }
246
261
  upb_StringView out_frames = grpc_gcp_HandshakerResp_out_frames(resp);
@@ -262,7 +277,9 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
262
277
  alts_tsi_handshaker_result_create(resp, client->is_client, &result);
263
278
  if (status != TSI_OK) {
264
279
  gpr_log(GPR_ERROR, "alts_tsi_handshaker_result_create() failed");
265
- handle_response_done(client, status, nullptr, 0, nullptr);
280
+ handle_response_done(client, status,
281
+ "alts_tsi_handshaker_result_create() failed",
282
+ nullptr, 0, nullptr);
266
283
  return;
267
284
  }
268
285
  alts_tsi_handshaker_result_set_unused_bytes(
@@ -271,13 +288,13 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
271
288
  }
272
289
  grpc_status_code code = static_cast<grpc_status_code>(
273
290
  grpc_gcp_HandshakerStatus_code(resp_status));
291
+ std::string error;
274
292
  if (code != GRPC_STATUS_OK) {
275
293
  upb_StringView details = grpc_gcp_HandshakerStatus_details(resp_status);
276
294
  if (details.size > 0) {
277
- char* error_details = static_cast<char*>(gpr_zalloc(details.size + 1));
278
- memcpy(error_details, details.data, details.size);
279
- gpr_log(GPR_ERROR, "Error from handshaker service:%s", error_details);
280
- gpr_free(error_details);
295
+ error = absl::StrCat("Status ", code, " from handshaker service: ",
296
+ absl::string_view(details.data, details.size));
297
+ gpr_log(GPR_ERROR, "%s", error.c_str());
281
298
  }
282
299
  }
283
300
  // TODO(apolcyn): consider short ciruiting handle_response_done and
@@ -285,7 +302,8 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
285
302
  // handle_response_done's allocation per message received causes
286
303
  // a performance issue.
287
304
  handle_response_done(client, alts_tsi_utils_convert_to_tsi_result(code),
288
- bytes_to_send, bytes_to_send_size, result);
305
+ std::move(error), bytes_to_send, bytes_to_send_size,
306
+ result);
289
307
  }
290
308
 
291
309
  static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
@@ -690,7 +708,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
690
708
  grpc_alts_credentials_options* options, const grpc_slice& target_name,
691
709
  grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
692
710
  void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
693
- bool is_client, size_t max_frame_size) {
711
+ bool is_client, size_t max_frame_size, std::string* error) {
694
712
  if (channel == nullptr || handshaker_service_url == nullptr) {
695
713
  gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
696
714
  return nullptr;
@@ -713,6 +731,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
713
731
  client->buffer = static_cast<unsigned char*>(gpr_zalloc(client->buffer_size));
714
732
  client->handshake_status_details = grpc_empty_slice();
715
733
  client->max_frame_size = max_frame_size;
734
+ client->error = error;
716
735
  grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
717
736
  client->call =
718
737
  strcmp(handshaker_service_url, ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING) ==
@@ -776,7 +795,7 @@ void alts_handshaker_client_set_recv_bytes_for_testing(
776
795
  void alts_handshaker_client_set_fields_for_testing(
777
796
  alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
778
797
  tsi_handshaker_on_next_done_cb cb, void* user_data,
779
- grpc_byte_buffer* recv_buffer, grpc_status_code status) {
798
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
780
799
  GPR_ASSERT(c != nullptr);
781
800
  alts_grpc_handshaker_client* client =
782
801
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
@@ -784,7 +803,7 @@ void alts_handshaker_client_set_fields_for_testing(
784
803
  client->cb = cb;
785
804
  client->user_data = user_data;
786
805
  client->recv_buffer = recv_buffer;
787
- client->status = status;
806
+ client->inject_read_failure = inject_read_failure;
788
807
  }
789
808
 
790
809
  void alts_handshaker_client_check_fields_for_testing(
@@ -144,7 +144,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
144
144
  grpc_alts_credentials_options* options, const grpc_slice& target_name,
145
145
  grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
146
146
  void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
147
- bool is_client, size_t max_frame_size);
147
+ bool is_client, size_t max_frame_size, std::string* error);
148
148
 
149
149
  /**
150
150
  * This method handles handshaker response returned from ALTS handshaker