grpc 1.48.0 → 1.50.0

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 (846) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +114 -150
  3. data/include/grpc/event_engine/endpoint_config.h +11 -5
  4. data/include/grpc/event_engine/event_engine.h +20 -17
  5. data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
  6. data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
  7. data/include/grpc/impl/codegen/atm_windows.h +0 -2
  8. data/include/grpc/impl/codegen/grpc_types.h +9 -8
  9. data/include/grpc/impl/codegen/port_platform.h +0 -8
  10. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
  11. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  12. data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
  13. data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
  14. data/src/core/ext/filters/client_channel/client_channel.h +16 -9
  15. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  16. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -16
  18. data/src/core/ext/filters/client_channel/config_selector.h +12 -4
  19. data/src/core/ext/filters/client_channel/connector.h +4 -5
  20. data/src/core/ext/filters/client_channel/http_proxy.cc +55 -74
  21. data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
  22. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
  23. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +20 -11
  31. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +250 -146
  33. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
  35. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
  36. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
  37. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
  38. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
  39. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
  40. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
  41. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -101
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -16
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
  52. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  53. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +51 -32
  54. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -6
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +167 -168
  58. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
  59. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  60. data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
  61. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  62. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
  64. data/src/core/ext/filters/client_channel/subchannel.cc +86 -121
  65. data/src/core/ext/filters/client_channel/subchannel.h +20 -11
  66. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  67. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  68. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  69. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +4 -6
  70. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
  71. data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
  72. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +24 -19
  73. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -1
  74. data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
  75. data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
  76. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -5
  77. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  78. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  79. data/src/core/ext/filters/http/client_authority_filter.h +1 -1
  80. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
  81. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
  82. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
  83. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  85. data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
  86. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
  87. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
  88. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
  89. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
  90. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +40 -63
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  93. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
  95. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
  96. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
  97. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
  99. data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
  100. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
  101. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
  103. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  104. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +30 -38
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
  108. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
  109. data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
  110. data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
  111. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
  112. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
  113. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  114. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  115. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  116. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  117. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  118. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  119. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  120. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  121. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  122. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  123. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  124. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  125. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  126. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  127. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  128. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  129. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  130. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  131. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  132. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  133. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  134. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  135. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  136. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  137. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  138. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  140. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  141. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  142. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  143. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  144. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  145. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  147. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  148. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  166. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  167. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  168. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  169. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  180. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  181. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  182. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  183. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  184. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  185. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  186. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  187. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  188. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  189. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  190. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  191. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  192. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  193. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  194. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  195. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  196. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  197. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  198. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  199. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  200. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  201. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  202. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  203. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  204. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  205. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  206. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  207. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  208. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  209. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  210. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  211. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  220. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  221. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  222. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  223. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  224. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  225. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  226. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  227. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  228. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  229. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  230. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  231. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  232. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  233. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  234. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  235. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  236. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  237. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  240. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  241. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  242. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  243. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  244. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  245. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  246. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
  247. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
  248. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  250. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  251. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  252. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  253. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  254. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  255. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  256. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  257. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  258. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  259. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  260. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  261. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  263. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  264. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  265. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  266. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  267. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  268. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  280. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  281. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  282. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  283. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  284. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  285. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  286. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  287. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  288. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  289. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  290. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  291. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  292. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  293. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  294. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  295. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  296. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  297. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  298. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  299. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  300. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  301. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  302. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  303. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  305. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  306. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  307. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  308. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  309. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  310. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  311. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  312. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  313. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  314. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  315. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  316. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  317. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  318. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  319. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  320. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  321. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  322. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  323. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  324. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  325. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  326. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  327. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  328. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  329. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  331. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  332. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  333. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  334. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  335. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  336. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  337. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  338. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  339. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  340. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  341. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  342. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  343. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  344. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  345. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  346. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  347. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  348. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  349. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  350. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  351. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  352. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  353. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  354. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  355. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  356. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  357. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  358. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  359. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  360. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  361. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  362. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  363. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  364. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  365. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  366. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  367. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  368. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  369. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  370. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  371. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  372. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  373. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  374. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  375. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  376. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  377. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  378. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  379. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  380. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  381. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  382. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  383. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  384. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  385. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  390. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  391. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  392. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  393. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  394. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  395. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  396. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  397. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  399. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  400. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  402. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  403. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  404. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  406. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  410. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  411. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  412. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  413. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  414. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  415. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  416. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  417. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  418. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  419. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  420. data/src/core/ext/xds/certificate_provider_store.cc +63 -3
  421. data/src/core/ext/xds/certificate_provider_store.h +9 -1
  422. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
  423. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
  424. data/src/core/ext/xds/upb_utils.h +0 -21
  425. data/src/core/ext/xds/xds_api.cc +73 -102
  426. data/src/core/ext/xds/xds_api.h +26 -28
  427. data/src/core/ext/xds/xds_bootstrap.cc +5 -550
  428. data/src/core/ext/xds/xds_bootstrap.h +39 -91
  429. data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
  430. data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
  431. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  432. data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
  433. data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
  434. data/src/core/ext/xds/xds_client.cc +732 -1317
  435. data/src/core/ext/xds/xds_client.h +33 -59
  436. data/src/core/ext/xds/xds_client_grpc.cc +229 -0
  437. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  438. data/src/core/ext/xds/xds_client_stats.cc +4 -4
  439. data/src/core/ext/xds/xds_cluster.cc +162 -165
  440. data/src/core/ext/xds/xds_cluster.h +8 -7
  441. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
  442. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
  443. data/src/core/ext/xds/xds_common_types.cc +140 -108
  444. data/src/core/ext/xds/xds_common_types.h +6 -7
  445. data/src/core/ext/xds/xds_endpoint.cc +87 -85
  446. data/src/core/ext/xds/xds_endpoint.h +4 -5
  447. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
  448. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  449. data/src/core/ext/xds/xds_http_filters.h +3 -3
  450. data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
  451. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  452. data/src/core/ext/xds/xds_lb_policy_registry.cc +21 -22
  453. data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
  454. data/src/core/ext/xds/xds_listener.cc +348 -313
  455. data/src/core/ext/xds/xds_listener.h +4 -5
  456. data/src/core/ext/xds/xds_resource_type.h +23 -9
  457. data/src/core/ext/xds/xds_route_config.cc +193 -191
  458. data/src/core/ext/xds/xds_route_config.h +31 -17
  459. data/src/core/ext/xds/xds_routing.cc +3 -6
  460. data/src/core/ext/xds/xds_routing.h +7 -9
  461. data/src/core/ext/xds/xds_server_config_fetcher.cc +81 -84
  462. data/src/core/ext/xds/xds_transport.h +86 -0
  463. data/src/core/ext/xds/xds_transport_grpc.cc +357 -0
  464. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  465. data/src/core/lib/address_utils/parse_address.cc +19 -17
  466. data/src/core/lib/address_utils/parse_address.h +8 -5
  467. data/src/core/lib/avl/avl.h +47 -25
  468. data/src/core/lib/backoff/backoff.cc +2 -4
  469. data/src/core/lib/channel/call_finalization.h +1 -3
  470. data/src/core/lib/channel/call_tracer.h +1 -1
  471. data/src/core/lib/channel/channel_args.cc +88 -19
  472. data/src/core/lib/channel/channel_args.h +218 -67
  473. data/src/core/lib/channel/channel_stack.cc +0 -1
  474. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  475. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  476. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
  477. data/src/core/lib/channel/channel_trace.cc +3 -4
  478. data/src/core/lib/channel/channelz.cc +27 -37
  479. data/src/core/lib/channel/channelz.h +9 -0
  480. data/src/core/lib/channel/promise_based_filter.cc +18 -19
  481. data/src/core/lib/channel/promise_based_filter.h +0 -1
  482. data/src/core/lib/channel/status_util.cc +27 -0
  483. data/src/core/lib/channel/status_util.h +10 -0
  484. data/src/core/lib/config/core_configuration.cc +5 -1
  485. data/src/core/lib/config/core_configuration.h +81 -35
  486. data/src/core/lib/debug/stats.cc +39 -46
  487. data/src/core/lib/debug/stats.h +11 -13
  488. data/src/core/lib/debug/stats_data.cc +118 -614
  489. data/src/core/lib/debug/stats_data.h +67 -465
  490. data/src/core/lib/debug/trace.cc +0 -2
  491. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
  492. data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
  493. data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
  494. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
  495. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  496. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  497. data/src/core/lib/event_engine/executor/executor.h +38 -0
  498. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  499. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  500. data/src/core/lib/event_engine/forkable.cc +101 -0
  501. data/src/core/lib/event_engine/forkable.h +61 -0
  502. data/src/core/lib/event_engine/poller.h +56 -0
  503. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
  504. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
  505. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
  506. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
  507. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
  508. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
  509. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +87 -30
  510. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
  511. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  512. data/src/core/lib/event_engine/thread_pool.cc +195 -0
  513. data/src/core/lib/event_engine/thread_pool.h +114 -0
  514. data/src/core/lib/event_engine/time_util.cc +30 -0
  515. data/src/core/lib/event_engine/time_util.h +32 -0
  516. data/src/core/lib/event_engine/utils.cc +44 -0
  517. data/src/core/lib/event_engine/utils.h +36 -0
  518. data/src/core/lib/event_engine/windows/iocp.cc +155 -0
  519. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  520. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  521. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  522. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  523. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  524. data/src/core/lib/experiments/config.cc +146 -0
  525. data/src/core/lib/experiments/config.h +43 -0
  526. data/src/core/lib/experiments/experiments.cc +75 -0
  527. data/src/core/lib/experiments/experiments.h +56 -0
  528. data/src/core/lib/gpr/alloc.cc +1 -9
  529. data/src/core/lib/gpr/log_windows.cc +0 -1
  530. data/src/core/lib/gpr/string_util_windows.cc +3 -30
  531. data/src/core/lib/gpr/sync_abseil.cc +0 -14
  532. data/src/core/lib/gpr/sync_posix.cc +0 -14
  533. data/src/core/lib/gpr/time.cc +11 -9
  534. data/src/core/lib/gpr/time_posix.cc +0 -6
  535. data/src/core/lib/gpr/time_precise.h +1 -1
  536. data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
  537. data/src/core/lib/gpr/useful.h +40 -0
  538. data/src/core/lib/gprpp/bitset.h +3 -13
  539. data/src/core/lib/gprpp/debug_location.h +39 -7
  540. data/src/core/lib/{gpr → gprpp}/env.h +25 -12
  541. data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
  542. data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
  543. data/src/core/lib/gprpp/env_windows.cc +56 -0
  544. data/src/core/lib/gprpp/fork.cc +14 -22
  545. data/src/core/lib/gprpp/fork.h +0 -8
  546. data/src/core/lib/gprpp/global_config_env.cc +7 -6
  547. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  548. data/src/core/lib/gprpp/no_destruct.h +94 -0
  549. data/src/core/lib/gprpp/notification.h +67 -0
  550. data/src/core/lib/gprpp/packed_table.h +40 -0
  551. data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
  552. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  553. data/src/core/lib/gprpp/status_helper.cc +1 -0
  554. data/src/core/lib/gprpp/status_helper.h +6 -0
  555. data/src/core/lib/gprpp/table.h +9 -2
  556. data/src/core/lib/gprpp/tchar.cc +49 -0
  557. data/src/core/lib/gprpp/tchar.h +33 -0
  558. data/src/core/lib/gprpp/time.cc +21 -0
  559. data/src/core/lib/gprpp/time.h +55 -0
  560. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
  561. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
  562. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  563. data/src/core/lib/gprpp/validation_errors.h +110 -0
  564. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  565. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
  566. data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
  567. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  568. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  569. data/src/core/lib/http/httpcli.cc +12 -24
  570. data/src/core/lib/http/httpcli_security_connector.cc +11 -11
  571. data/src/core/lib/iomgr/call_combiner.cc +0 -34
  572. data/src/core/lib/iomgr/closure.h +0 -10
  573. data/src/core/lib/iomgr/combiner.cc +0 -20
  574. data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
  575. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  576. data/src/core/lib/iomgr/error.cc +0 -773
  577. data/src/core/lib/iomgr/error.h +0 -145
  578. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  579. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
  580. data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
  581. data/src/core/lib/iomgr/exec_ctx.cc +0 -22
  582. data/src/core/lib/iomgr/exec_ctx.h +7 -31
  583. data/src/core/lib/iomgr/executor.cc +0 -10
  584. data/src/core/lib/iomgr/executor.h +0 -3
  585. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  586. data/src/core/lib/iomgr/iomgr.cc +6 -8
  587. data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
  588. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  589. data/src/core/lib/iomgr/pollset.h +1 -1
  590. data/src/core/lib/iomgr/pollset_set.h +0 -1
  591. data/src/core/lib/iomgr/port.h +3 -0
  592. data/src/core/lib/iomgr/resolve_address.h +30 -6
  593. data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
  594. data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
  595. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  596. data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
  597. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  598. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
  599. data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
  600. data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
  601. data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
  602. data/src/core/lib/iomgr/socket_windows.h +0 -2
  603. data/src/core/lib/iomgr/tcp_client.cc +6 -7
  604. data/src/core/lib/iomgr/tcp_client.h +11 -11
  605. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
  606. data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
  607. data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
  608. data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
  609. data/src/core/lib/iomgr/tcp_posix.cc +249 -120
  610. data/src/core/lib/iomgr/tcp_posix.h +3 -1
  611. data/src/core/lib/iomgr/tcp_server.cc +5 -4
  612. data/src/core/lib/iomgr/tcp_server.h +9 -6
  613. data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
  614. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  615. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
  616. data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
  617. data/src/core/lib/iomgr/tcp_windows.cc +0 -1
  618. data/src/core/lib/iomgr/tcp_windows.h +0 -1
  619. data/src/core/lib/iomgr/timer_generic.cc +10 -12
  620. data/src/core/lib/iomgr/timer_manager.cc +1 -2
  621. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
  622. data/src/core/lib/json/json.h +19 -22
  623. data/src/core/lib/json/json_args.h +34 -0
  624. data/src/core/lib/json/json_object_loader.cc +202 -0
  625. data/src/core/lib/json/json_object_loader.h +598 -0
  626. data/src/core/lib/json/json_reader.cc +86 -62
  627. data/src/core/lib/json/json_util.cc +9 -36
  628. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  629. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +20 -29
  630. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  631. data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
  632. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  633. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
  634. data/src/core/lib/promise/activity.h +57 -10
  635. data/src/core/lib/promise/arena_promise.h +84 -81
  636. data/src/core/lib/promise/context.h +1 -2
  637. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  638. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  639. data/src/core/lib/promise/map.h +0 -1
  640. data/src/core/lib/promise/seq.h +25 -4
  641. data/src/core/lib/promise/sleep.cc +50 -42
  642. data/src/core/lib/promise/sleep.h +32 -23
  643. data/src/core/lib/promise/try_seq.h +26 -6
  644. data/src/core/lib/resolver/resolver.cc +0 -47
  645. data/src/core/lib/resolver/resolver.h +15 -15
  646. data/src/core/lib/resolver/resolver_factory.h +2 -3
  647. data/src/core/lib/resolver/resolver_registry.cc +1 -1
  648. data/src/core/lib/resolver/resolver_registry.h +2 -3
  649. data/src/core/lib/resolver/server_address.cc +11 -15
  650. data/src/core/lib/resolver/server_address.h +4 -8
  651. data/src/core/lib/resource_quota/api.cc +10 -1
  652. data/src/core/lib/resource_quota/api.h +6 -0
  653. data/src/core/lib/resource_quota/arena.cc +19 -1
  654. data/src/core/lib/resource_quota/arena.h +24 -2
  655. data/src/core/lib/resource_quota/memory_quota.cc +143 -19
  656. data/src/core/lib/resource_quota/memory_quota.h +85 -17
  657. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  658. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  659. data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
  660. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  661. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  662. data/src/core/lib/security/authorization/matchers.cc +13 -10
  663. data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
  664. data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
  665. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  666. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  667. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
  668. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
  669. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
  670. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
  671. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
  672. data/src/core/lib/security/credentials/credentials.h +16 -12
  673. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +33 -27
  674. data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
  675. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  676. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
  677. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
  678. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
  679. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
  680. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
  681. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
  682. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  683. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
  684. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
  685. data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
  686. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
  687. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +14 -15
  688. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  689. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  690. data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
  691. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -20
  692. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  693. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
  694. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
  695. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
  696. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
  697. data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
  698. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
  699. data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
  700. data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
  701. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  702. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
  703. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
  704. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  705. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  706. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
  707. data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
  708. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  709. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  710. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
  711. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
  712. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
  713. data/src/core/lib/security/transport/auth_filters.h +1 -1
  714. data/src/core/lib/security/transport/client_auth_filter.cc +15 -5
  715. data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
  716. data/src/core/lib/security/transport/security_handshaker.cc +32 -44
  717. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  718. data/src/core/lib/service_config/service_config.h +11 -0
  719. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  720. data/src/core/lib/service_config/service_config_impl.h +11 -13
  721. data/src/core/lib/service_config/service_config_parser.cc +26 -27
  722. data/src/core/lib/service_config/service_config_parser.h +10 -22
  723. data/src/core/lib/slice/percent_encoding.cc +4 -13
  724. data/src/core/lib/slice/slice.cc +10 -4
  725. data/src/core/lib/surface/call.cc +9 -13
  726. data/src/core/lib/surface/channel.cc +9 -8
  727. data/src/core/lib/surface/channel.h +1 -1
  728. data/src/core/lib/surface/completion_queue.cc +16 -30
  729. data/src/core/lib/surface/completion_queue.h +1 -4
  730. data/src/core/lib/surface/completion_queue_factory.cc +5 -0
  731. data/src/core/lib/surface/init.cc +17 -16
  732. data/src/core/lib/surface/init_internally.cc +24 -0
  733. data/src/core/lib/surface/init_internally.h +28 -0
  734. data/src/core/lib/surface/lame_client.cc +2 -3
  735. data/src/core/lib/surface/lame_client.h +1 -1
  736. data/src/core/lib/surface/server.cc +8 -19
  737. data/src/core/lib/surface/server.h +11 -13
  738. data/src/core/lib/surface/validate_metadata.cc +4 -14
  739. data/src/core/lib/surface/version.cc +2 -2
  740. data/src/core/lib/transport/bdp_estimator.cc +1 -3
  741. data/src/core/lib/transport/connectivity_state.cc +0 -1
  742. data/src/core/lib/transport/connectivity_state.h +1 -1
  743. data/src/core/lib/transport/error_utils.cc +0 -36
  744. data/src/core/lib/transport/handshaker.cc +7 -9
  745. data/src/core/lib/transport/handshaker.h +4 -5
  746. data/src/core/lib/transport/handshaker_factory.h +2 -3
  747. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  748. data/src/core/lib/transport/handshaker_registry.h +2 -4
  749. data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
  750. data/src/core/lib/transport/metadata_batch.cc +7 -3
  751. data/src/core/lib/transport/metadata_batch.h +61 -14
  752. data/src/core/lib/transport/parsed_metadata.h +4 -3
  753. data/src/core/lib/transport/status_conversion.cc +1 -3
  754. data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
  755. data/src/core/lib/transport/transport.h +0 -8
  756. data/src/core/lib/transport/transport_impl.h +0 -1
  757. data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
  758. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
  759. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  760. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  761. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
  762. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  763. data/src/core/tsi/fake_transport_security.cc +53 -30
  764. data/src/core/tsi/local_transport_security.cc +9 -5
  765. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  766. data/src/core/tsi/ssl_transport_security.cc +47 -23
  767. data/src/core/tsi/transport_security.cc +18 -6
  768. data/src/core/tsi/transport_security.h +2 -1
  769. data/src/core/tsi/transport_security_interface.h +17 -5
  770. data/src/ruby/ext/grpc/extconf.rb +2 -0
  771. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  772. data/src/ruby/lib/grpc/version.rb +1 -1
  773. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  774. data/src/ruby/spec/channel_spec.rb +5 -0
  775. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  776. data/src/ruby/spec/user_agent_spec.rb +1 -1
  777. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  778. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  779. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  780. data/third_party/upb/upb/arena.c +277 -0
  781. data/third_party/upb/upb/arena.h +225 -0
  782. data/third_party/upb/upb/array.c +114 -0
  783. data/third_party/upb/upb/array.h +83 -0
  784. data/third_party/upb/upb/collections.h +36 -0
  785. data/third_party/upb/upb/decode.c +161 -65
  786. data/third_party/upb/upb/decode.h +1 -0
  787. data/third_party/upb/upb/decode_fast.c +1 -1
  788. data/third_party/upb/upb/def.c +10 -2
  789. data/third_party/upb/upb/def.h +8 -1
  790. data/third_party/upb/upb/def.hpp +7 -4
  791. data/third_party/upb/upb/encode.c +29 -20
  792. data/third_party/upb/upb/encode.h +16 -6
  793. data/third_party/upb/upb/extension_registry.c +93 -0
  794. data/third_party/upb/upb/extension_registry.h +84 -0
  795. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  796. data/third_party/upb/upb/internal/table.h +385 -0
  797. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  798. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  799. data/third_party/upb/upb/json_decode.c +1512 -0
  800. data/third_party/upb/upb/json_decode.h +47 -0
  801. data/third_party/upb/upb/json_encode.c +7 -3
  802. data/third_party/upb/upb/json_encode.h +6 -3
  803. data/third_party/upb/upb/map.c +108 -0
  804. data/third_party/upb/upb/map.h +117 -0
  805. data/third_party/upb/upb/message_value.h +66 -0
  806. data/third_party/upb/upb/mini_table.c +1147 -0
  807. data/third_party/upb/upb/mini_table.h +189 -0
  808. data/third_party/upb/upb/mini_table.hpp +112 -0
  809. data/third_party/upb/upb/msg.c +2 -62
  810. data/third_party/upb/upb/msg.h +2 -45
  811. data/third_party/upb/upb/msg_internal.h +28 -22
  812. data/third_party/upb/upb/port_def.inc +2 -1
  813. data/third_party/upb/upb/port_undef.inc +1 -0
  814. data/third_party/upb/upb/reflection.c +2 -159
  815. data/third_party/upb/upb/reflection.h +2 -112
  816. data/third_party/upb/upb/status.c +86 -0
  817. data/third_party/upb/upb/status.h +66 -0
  818. data/third_party/upb/upb/table.c +2 -2
  819. data/third_party/upb/upb/table_internal.h +3 -352
  820. data/third_party/upb/upb/text_encode.c +3 -2
  821. data/third_party/upb/upb/upb.c +4 -290
  822. data/third_party/upb/upb/upb.h +7 -196
  823. metadata +117 -51
  824. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  825. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
  826. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
  827. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
  828. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
  829. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  830. data/src/core/ext/xds/certificate_provider_registry.h +0 -59
  831. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
  832. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
  833. data/src/core/lib/event_engine/promise.h +0 -69
  834. data/src/core/lib/gpr/env_windows.cc +0 -74
  835. data/src/core/lib/gpr/string_windows.h +0 -32
  836. data/src/core/lib/iomgr/error_internal.h +0 -66
  837. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  838. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  839. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  840. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  841. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  842. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  843. data/src/core/lib/profiling/basic_timers.cc +0 -295
  844. data/src/core/lib/profiling/stap_timers.cc +0 -50
  845. data/src/core/lib/profiling/timers.h +0 -94
  846. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -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
@@ -416,7 +416,7 @@ static void on_handshaker_service_resp_recv_dedicated(
416
416
  static tsi_result alts_tsi_handshaker_continue_handshaker_next(
417
417
  alts_tsi_handshaker* handshaker, const unsigned char* received_bytes,
418
418
  size_t received_bytes_size, tsi_handshaker_on_next_done_cb cb,
419
- void* user_data) {
419
+ void* user_data, std::string* error) {
420
420
  if (!handshaker->has_created_handshaker_client) {
421
421
  if (handshaker->channel == nullptr) {
422
422
  grpc_alts_shared_resource_dedicated_start(
@@ -437,9 +437,10 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
437
437
  handshaker->interested_parties, handshaker->options,
438
438
  handshaker->target_name, grpc_cb, cb, user_data,
439
439
  handshaker->client_vtable_for_testing, handshaker->is_client,
440
- handshaker->max_frame_size);
440
+ handshaker->max_frame_size, error);
441
441
  if (client == nullptr) {
442
442
  gpr_log(GPR_ERROR, "Failed to create ALTS handshaker client");
443
+ if (error != nullptr) *error = "Failed to create ALTS handshaker client";
443
444
  return TSI_FAILED_PRECONDITION;
444
445
  }
445
446
  {
@@ -448,6 +449,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
448
449
  handshaker->client = client;
449
450
  if (handshaker->shutdown) {
450
451
  gpr_log(GPR_INFO, "TSI handshake shutdown");
452
+ if (error != nullptr) *error = "TSI handshaker shutdown";
451
453
  return TSI_HANDSHAKE_SHUTDOWN;
452
454
  }
453
455
  }
@@ -490,6 +492,7 @@ struct alts_tsi_handshaker_continue_handshaker_next_args {
490
492
  tsi_handshaker_on_next_done_cb cb;
491
493
  void* user_data;
492
494
  grpc_closure closure;
495
+ std::string* error = nullptr;
493
496
  };
494
497
 
495
498
  static void alts_tsi_handshaker_create_channel(
@@ -510,7 +513,8 @@ static void alts_tsi_handshaker_create_channel(
510
513
  tsi_result continue_next_result =
511
514
  alts_tsi_handshaker_continue_handshaker_next(
512
515
  handshaker, next_args->received_bytes.get(),
513
- next_args->received_bytes_size, next_args->cb, next_args->user_data);
516
+ next_args->received_bytes_size, next_args->cb, next_args->user_data,
517
+ next_args->error);
514
518
  if (continue_next_result != TSI_OK) {
515
519
  next_args->cb(continue_next_result, next_args->user_data, nullptr, 0,
516
520
  nullptr);
@@ -522,9 +526,10 @@ static tsi_result handshaker_next(
522
526
  tsi_handshaker* self, const unsigned char* received_bytes,
523
527
  size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
524
528
  size_t* /*bytes_to_send_size*/, tsi_handshaker_result** /*result*/,
525
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
529
+ tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
526
530
  if (self == nullptr || cb == nullptr) {
527
531
  gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
532
+ if (error != nullptr) *error = "invalid argument";
528
533
  return TSI_INVALID_ARGUMENT;
529
534
  }
530
535
  alts_tsi_handshaker* handshaker =
@@ -533,6 +538,7 @@ static tsi_result handshaker_next(
533
538
  grpc_core::MutexLock lock(&handshaker->mu);
534
539
  if (handshaker->shutdown) {
535
540
  gpr_log(GPR_INFO, "TSI handshake shutdown");
541
+ if (error != nullptr) *error = "handshake shutdown";
536
542
  return TSI_HANDSHAKE_SHUTDOWN;
537
543
  }
538
544
  }
@@ -542,6 +548,7 @@ static tsi_result handshaker_next(
542
548
  args->handshaker = handshaker;
543
549
  args->received_bytes = nullptr;
544
550
  args->received_bytes_size = received_bytes_size;
551
+ args->error = error;
545
552
  if (received_bytes_size > 0) {
546
553
  args->received_bytes = std::unique_ptr<unsigned char>(
547
554
  static_cast<unsigned char*>(gpr_zalloc(received_bytes_size)));
@@ -559,7 +566,7 @@ static tsi_result handshaker_next(
559
566
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, &args->closure, GRPC_ERROR_NONE);
560
567
  } else {
561
568
  tsi_result ok = alts_tsi_handshaker_continue_handshaker_next(
562
- handshaker, received_bytes, received_bytes_size, cb, user_data);
569
+ handshaker, received_bytes, received_bytes_size, cb, user_data, error);
563
570
  if (ok != TSI_OK) {
564
571
  gpr_log(GPR_ERROR, "Failed to schedule ALTS handshaker requests");
565
572
  return ok;
@@ -577,11 +584,11 @@ static tsi_result handshaker_next_dedicated(
577
584
  tsi_handshaker* self, const unsigned char* received_bytes,
578
585
  size_t received_bytes_size, const unsigned char** bytes_to_send,
579
586
  size_t* bytes_to_send_size, tsi_handshaker_result** result,
580
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
587
+ tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
581
588
  grpc_core::ExecCtx exec_ctx;
582
589
  return handshaker_next(self, received_bytes, received_bytes_size,
583
590
  bytes_to_send, bytes_to_send_size, result, cb,
584
- user_data);
591
+ user_data, error);
585
592
  }
586
593
 
587
594
  static void handshaker_shutdown(tsi_handshaker* self) {
@@ -63,7 +63,7 @@ void alts_handshaker_client_check_fields_for_testing(
63
63
  void alts_handshaker_client_set_fields_for_testing(
64
64
  alts_handshaker_client* client, alts_tsi_handshaker* handshaker,
65
65
  tsi_handshaker_on_next_done_cb cb, void* user_data,
66
- grpc_byte_buffer* recv_buffer, grpc_status_code status);
66
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure);
67
67
 
68
68
  void alts_handshaker_client_set_vtable_for_testing(
69
69
  alts_handshaker_client* client, alts_handshaker_client_vtable* vtable);
@@ -96,7 +96,8 @@ static const char* tsi_fake_handshake_message_to_string(int msg) {
96
96
  }
97
97
 
98
98
  static tsi_result tsi_fake_handshake_message_from_string(
99
- const char* msg_string, tsi_fake_handshake_message* msg) {
99
+ const char* msg_string, tsi_fake_handshake_message* msg,
100
+ std::string* error) {
100
101
  for (int i = 0; i < TSI_FAKE_HANDSHAKE_MESSAGE_MAX; i++) {
101
102
  if (strncmp(msg_string, tsi_fake_handshake_message_strings[i],
102
103
  strlen(tsi_fake_handshake_message_strings[i])) == 0) {
@@ -105,6 +106,7 @@ static tsi_result tsi_fake_handshake_message_from_string(
105
106
  }
106
107
  }
107
108
  gpr_log(GPR_ERROR, "Invalid handshake message.");
109
+ if (error != nullptr) *error = "invalid handshake message";
108
110
  return TSI_DATA_CORRUPTED;
109
111
  }
110
112
 
@@ -174,12 +176,16 @@ static void tsi_fake_frame_ensure_size(tsi_fake_frame* frame) {
174
176
  * This method should not be called if frame->needs_framing is not 0. */
175
177
  static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
176
178
  size_t* incoming_bytes_size,
177
- tsi_fake_frame* frame) {
179
+ tsi_fake_frame* frame,
180
+ std::string* error) {
178
181
  size_t available_size = *incoming_bytes_size;
179
182
  size_t to_read_size = 0;
180
183
  const unsigned char* bytes_cursor = incoming_bytes;
181
184
 
182
- if (frame->needs_draining) return TSI_INTERNAL_ERROR;
185
+ if (frame->needs_draining) {
186
+ if (error != nullptr) *error = "fake handshaker frame needs draining";
187
+ return TSI_INTERNAL_ERROR;
188
+ }
183
189
  if (frame->data == nullptr) {
184
190
  frame->allocated_size = TSI_FAKE_FRAME_INITIAL_ALLOCATED_SIZE;
185
191
  frame->data =
@@ -224,9 +230,13 @@ static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
224
230
  * This method should not be called if frame->needs_framing is 0. */
225
231
  static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
226
232
  size_t* outgoing_bytes_size,
227
- tsi_fake_frame* frame) {
233
+ tsi_fake_frame* frame,
234
+ std::string* error) {
228
235
  size_t to_write_size = frame->size - frame->offset;
229
- if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
236
+ if (!frame->needs_draining) {
237
+ if (error != nullptr) *error = "fake frame needs draining";
238
+ return TSI_INTERNAL_ERROR;
239
+ }
230
240
  if (*outgoing_bytes_size < to_write_size) {
231
241
  memcpy(outgoing_bytes, frame->data + frame->offset, *outgoing_bytes_size);
232
242
  frame->offset += *outgoing_bytes_size;
@@ -240,15 +250,14 @@ static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
240
250
 
241
251
  /* Sets the payload of a fake frame to contain the given data blob, where
242
252
  * data_size indicates the size of data. */
243
- static tsi_result tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
244
- tsi_fake_frame* frame) {
253
+ static void tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
254
+ tsi_fake_frame* frame) {
245
255
  frame->offset = 0;
246
256
  frame->size = data_size + TSI_FAKE_FRAME_HEADER_SIZE;
247
257
  tsi_fake_frame_ensure_size(frame);
248
258
  store32_little_endian(static_cast<uint32_t>(frame->size), frame->data);
249
259
  memcpy(frame->data + TSI_FAKE_FRAME_HEADER_SIZE, data, data_size);
250
260
  tsi_fake_frame_reset(frame, 1 /* needs draining */);
251
- return TSI_OK;
252
261
  }
253
262
 
254
263
  /* Destroys the contents of a fake frame. */
@@ -276,8 +285,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
276
285
  /* Try to drain first. */
277
286
  if (frame->needs_draining) {
278
287
  drained_size = saved_output_size - *num_bytes_written;
279
- result =
280
- tsi_fake_frame_encode(protected_output_frames, &drained_size, frame);
288
+ result = tsi_fake_frame_encode(protected_output_frames, &drained_size,
289
+ frame, /*error=*/nullptr);
281
290
  *num_bytes_written += drained_size;
282
291
  protected_output_frames += drained_size;
283
292
  if (result != TSI_OK) {
@@ -297,7 +306,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
297
306
  store32_little_endian(static_cast<uint32_t>(impl->max_frame_size),
298
307
  frame_header);
299
308
  written_in_frame_size = TSI_FAKE_FRAME_HEADER_SIZE;
300
- result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame);
309
+ result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame,
310
+ /*error=*/nullptr);
301
311
  if (result != TSI_INCOMPLETE_DATA) {
302
312
  gpr_log(GPR_ERROR, "tsi_fake_frame_decode returned %s",
303
313
  tsi_result_to_string(result));
@@ -305,7 +315,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
305
315
  }
306
316
  }
307
317
  result =
308
- tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame);
318
+ tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame,
319
+ /*error=*/nullptr);
309
320
  if (result != TSI_OK) {
310
321
  if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
311
322
  return result;
@@ -315,7 +326,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
315
326
  if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
316
327
  if (frame->offset != 0) return TSI_INTERNAL_ERROR;
317
328
  drained_size = saved_output_size - *num_bytes_written;
318
- result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame);
329
+ result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame,
330
+ /*error=*/nullptr);
319
331
  *num_bytes_written += drained_size;
320
332
  if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
321
333
  return result;
@@ -337,7 +349,8 @@ static tsi_result fake_protector_protect_flush(
337
349
  frame->data); /* Overwrite header. */
338
350
  }
339
351
  result = tsi_fake_frame_encode(protected_output_frames,
340
- protected_output_frames_size, frame);
352
+ protected_output_frames_size, frame,
353
+ /*error=*/nullptr);
341
354
  if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
342
355
  *still_pending_size = frame->size - frame->offset;
343
356
  return result;
@@ -361,7 +374,8 @@ static tsi_result fake_protector_unprotect(
361
374
  /* Go past the header if needed. */
362
375
  if (frame->offset == 0) frame->offset = TSI_FAKE_FRAME_HEADER_SIZE;
363
376
  drained_size = saved_output_size - *num_bytes_written;
364
- result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame);
377
+ result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
378
+ /*error=*/nullptr);
365
379
  unprotected_bytes += drained_size;
366
380
  *num_bytes_written += drained_size;
367
381
  if (result != TSI_OK) {
@@ -376,7 +390,8 @@ static tsi_result fake_protector_unprotect(
376
390
  /* Now process the protected_bytes. */
377
391
  if (frame->needs_draining) return TSI_INTERNAL_ERROR;
378
392
  result = tsi_fake_frame_decode(protected_frames_bytes,
379
- protected_frames_bytes_size, frame);
393
+ protected_frames_bytes_size, frame,
394
+ /*error=*/nullptr);
380
395
  if (result != TSI_OK) {
381
396
  if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
382
397
  return result;
@@ -387,7 +402,8 @@ static tsi_result fake_protector_unprotect(
387
402
  if (frame->offset != 0) return TSI_INTERNAL_ERROR;
388
403
  frame->offset = TSI_FAKE_FRAME_HEADER_SIZE; /* Go past the header. */
389
404
  drained_size = saved_output_size - *num_bytes_written;
390
- result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame);
405
+ result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
406
+ /*error=*/nullptr);
391
407
  *num_bytes_written += drained_size;
392
408
  if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
393
409
  return result;
@@ -579,9 +595,10 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
579
595
 
580
596
  static tsi_result fake_handshaker_result_create(
581
597
  const unsigned char* unused_bytes, size_t unused_bytes_size,
582
- tsi_handshaker_result** handshaker_result) {
598
+ tsi_handshaker_result** handshaker_result, std::string* error) {
583
599
  if ((unused_bytes_size > 0 && unused_bytes == nullptr) ||
584
600
  handshaker_result == nullptr) {
601
+ if (error != nullptr) *error = "invalid argument";
585
602
  return TSI_INVALID_ARGUMENT;
586
603
  }
587
604
  fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
@@ -599,7 +616,8 @@ static tsi_result fake_handshaker_result_create(
599
616
  /* --- tsi_handshaker methods implementation. ---*/
600
617
 
601
618
  static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
602
- tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size) {
619
+ tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size,
620
+ std::string* error) {
603
621
  tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
604
622
  tsi_result result = TSI_OK;
605
623
  if (impl->needs_incoming_message || impl->result == TSI_OK) {
@@ -612,10 +630,9 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
612
630
  static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
613
631
  const char* msg_string =
614
632
  tsi_fake_handshake_message_to_string(impl->next_message_to_send);
615
- result = tsi_fake_frame_set_data(
633
+ tsi_fake_frame_set_data(
616
634
  reinterpret_cast<unsigned char*>(const_cast<char*>(msg_string)),
617
635
  strlen(msg_string), &impl->outgoing_frame);
618
- if (result != TSI_OK) return result;
619
636
  if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
620
637
  next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
621
638
  }
@@ -626,7 +643,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
626
643
  }
627
644
  impl->next_message_to_send = next_message_to_send;
628
645
  }
629
- result = tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame);
646
+ result =
647
+ tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame, error);
630
648
  if (result != TSI_OK) return result;
631
649
  if (!impl->is_client &&
632
650
  impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
@@ -642,7 +660,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
642
660
  }
643
661
 
644
662
  static tsi_result fake_handshaker_process_bytes_from_peer(
645
- tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size) {
663
+ tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size,
664
+ std::string* error) {
646
665
  tsi_result result = TSI_OK;
647
666
  tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
648
667
  tsi_fake_handshake_message expected_msg =
@@ -653,14 +672,15 @@ static tsi_result fake_handshaker_process_bytes_from_peer(
653
672
  *bytes_size = 0;
654
673
  return TSI_OK;
655
674
  }
656
- result = tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame);
675
+ result =
676
+ tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame, error);
657
677
  if (result != TSI_OK) return result;
658
678
 
659
679
  /* We now have a complete frame. */
660
680
  result = tsi_fake_handshake_message_from_string(
661
681
  reinterpret_cast<const char*>(impl->incoming_frame.data) +
662
682
  TSI_FAKE_FRAME_HEADER_SIZE,
663
- &received_msg);
683
+ &received_msg, error);
664
684
  if (result != TSI_OK) {
665
685
  impl->result = result;
666
686
  return result;
@@ -703,11 +723,13 @@ static tsi_result fake_handshaker_next(
703
723
  tsi_handshaker* self, const unsigned char* received_bytes,
704
724
  size_t received_bytes_size, const unsigned char** bytes_to_send,
705
725
  size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
706
- tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
726
+ tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/,
727
+ std::string* error) {
707
728
  /* Sanity check the arguments. */
708
729
  if ((received_bytes_size > 0 && received_bytes == nullptr) ||
709
730
  bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
710
731
  handshaker_result == nullptr) {
732
+ if (error != nullptr) *error = "invalid argument";
711
733
  return TSI_INVALID_ARGUMENT;
712
734
  }
713
735
  tsi_fake_handshaker* handshaker =
@@ -717,8 +739,8 @@ static tsi_result fake_handshaker_next(
717
739
  /* Decode and process a handshake frame from the peer. */
718
740
  size_t consumed_bytes_size = received_bytes_size;
719
741
  if (received_bytes_size > 0) {
720
- result = fake_handshaker_process_bytes_from_peer(self, received_bytes,
721
- &consumed_bytes_size);
742
+ result = fake_handshaker_process_bytes_from_peer(
743
+ self, received_bytes, &consumed_bytes_size, error);
722
744
  if (result != TSI_OK) return result;
723
745
  }
724
746
 
@@ -728,7 +750,8 @@ static tsi_result fake_handshaker_next(
728
750
  do {
729
751
  size_t sent_bytes_size = handshaker->outgoing_bytes_buffer_size - offset;
730
752
  result = fake_handshaker_get_bytes_to_send_to_peer(
731
- self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size);
753
+ self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size,
754
+ error);
732
755
  offset += sent_bytes_size;
733
756
  if (result == TSI_INCOMPLETE_DATA) {
734
757
  handshaker->outgoing_bytes_buffer_size *= 2;
@@ -754,7 +777,7 @@ static tsi_result fake_handshaker_next(
754
777
 
755
778
  /* Create a handshaker_result containing the unused bytes. */
756
779
  result = fake_handshaker_result_create(unused_bytes, unused_bytes_size,
757
- handshaker_result);
780
+ handshaker_result, error);
758
781
  if (result == TSI_OK) {
759
782
  /* Indicate that the handshake has completed and that a handshaker_result
760
783
  * has been created. */
@@ -119,13 +119,17 @@ tsi_result create_handshaker_result(const unsigned char* received_bytes,
119
119
 
120
120
  /* --- tsi_handshaker methods implementation. --- */
121
121
 
122
- tsi_result handshaker_next(
123
- tsi_handshaker* self, const unsigned char* received_bytes,
124
- size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
125
- size_t* bytes_to_send_size, tsi_handshaker_result** result,
126
- tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
122
+ tsi_result handshaker_next(tsi_handshaker* self,
123
+ const unsigned char* received_bytes,
124
+ size_t received_bytes_size,
125
+ const unsigned char** /*bytes_to_send*/,
126
+ size_t* bytes_to_send_size,
127
+ tsi_handshaker_result** result,
128
+ tsi_handshaker_on_next_done_cb /*cb*/,
129
+ void* /*user_data*/, std::string* error) {
127
130
  if (self == nullptr) {
128
131
  gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
132
+ if (error != nullptr) *error = "invalid argument";
129
133
  return TSI_INVALID_ARGUMENT;
130
134
  }
131
135
  /* Note that there is no interaction between TSI peers, and all operations are
@@ -25,9 +25,11 @@
25
25
 
26
26
  #include <openssl/ssl.h>
27
27
 
28
+ #include <grpc/impl/codegen/grpc_types.h>
28
29
  #include <grpc/slice.h>
29
30
  #include <grpc/support/sync.h>
30
31
 
32
+ #include "src/core/lib/gprpp/cpp_impl_of.h"
31
33
  #include "src/core/lib/gprpp/memory.h"
32
34
  #include "src/core/lib/gprpp/ref_counted.h"
33
35
  #include "src/core/lib/gprpp/sync.h"
@@ -44,7 +46,10 @@
44
46
 
45
47
  namespace tsi {
46
48
 
47
- class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
49
+ class SslSessionLRUCache
50
+ : public grpc_core::CppImplOf<SslSessionLRUCache,
51
+ struct tsi_ssl_session_cache>,
52
+ public grpc_core::RefCounted<SslSessionLRUCache> {
48
53
  public:
49
54
  /// Create new LRU cache with the given capacity.
50
55
  static grpc_core::RefCountedPtr<SslSessionLRUCache> Create(size_t capacity) {
@@ -59,6 +64,10 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
59
64
  SslSessionLRUCache(const SslSessionLRUCache&) = delete;
60
65
  SslSessionLRUCache& operator=(const SslSessionLRUCache&) = delete;
61
66
 
67
+ static absl::string_view ChannelArgName() {
68
+ return GRPC_SSL_SESSION_CACHE_ARG;
69
+ }
70
+
62
71
  /// Returns current number of sessions in the cache.
63
72
  size_t Size();
64
73
  /// Add \a session in the cache using \a key. This operation may discard older