grpc 1.56.0 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2616) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1296 -928
  3. data/include/grpc/event_engine/event_engine.h +84 -52
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +6 -0
  5. data/include/grpc/event_engine/internal/slice_cast.h +12 -0
  6. data/include/grpc/event_engine/memory_allocator.h +5 -3
  7. data/include/grpc/event_engine/slice.h +5 -0
  8. data/include/grpc/grpc_crl_provider.h +94 -0
  9. data/include/grpc/grpc_security.h +57 -1
  10. data/include/grpc/impl/call.h +29 -0
  11. data/include/grpc/impl/channel_arg_names.h +400 -0
  12. data/include/grpc/impl/grpc_types.h +1 -350
  13. data/include/grpc/impl/slice_type.h +1 -1
  14. data/include/grpc/module.modulemap +3 -0
  15. data/include/grpc/support/port_platform.h +103 -24
  16. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +55 -15
  17. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
  18. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +49 -46
  19. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
  20. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
  21. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
  22. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -2
  23. data/src/core/ext/filters/client_channel/client_channel.cc +514 -82
  24. data/src/core/ext/filters/client_channel/client_channel.h +55 -14
  25. data/src/core/ext/filters/client_channel/client_channel_internal.h +2 -0
  26. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +21 -8
  27. data/src/core/ext/filters/client_channel/connector.h +2 -3
  28. data/src/core/ext/filters/client_channel/dynamic_filters.cc +0 -1
  29. data/src/core/ext/filters/client_channel/dynamic_filters.h +5 -3
  30. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
  31. data/src/core/ext/filters/client_channel/http_proxy_mapper.cc +305 -0
  32. data/src/core/ext/filters/client_channel/http_proxy_mapper.h +53 -0
  33. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +60 -52
  34. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +27 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +32 -40
  36. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +187 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +220 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +246 -231
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +20 -19
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +4 -4
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
  44. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +90 -25
  45. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
  46. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +27 -9
  47. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +13 -6
  48. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +257 -210
  50. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +0 -21
  51. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +898 -213
  52. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +36 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +19 -37
  54. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +488 -492
  55. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +3 -5
  56. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +63 -101
  57. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +416 -37
  58. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +37 -58
  59. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +893 -76
  60. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +25 -51
  61. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +507 -523
  62. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
  63. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +255 -185
  64. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +16 -58
  65. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +807 -308
  66. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
  67. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +18 -81
  68. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +5 -6
  69. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +12 -15
  70. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
  71. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +105 -175
  72. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +46 -33
  73. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +11 -7
  74. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  75. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +6 -0
  76. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +112 -73
  77. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -4
  78. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +76 -189
  79. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +46 -27
  80. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -2
  81. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +17 -13
  82. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
  83. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +31 -19
  84. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
  85. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
  86. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +474 -560
  87. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_attributes.h +62 -0
  88. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
  89. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
  90. data/src/core/ext/filters/client_channel/retry_filter.cc +40 -2499
  91. data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
  92. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2051 -0
  93. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
  94. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  95. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +62 -70
  96. data/src/core/ext/filters/client_channel/subchannel.cc +47 -9
  97. data/src/core/ext/filters/client_channel/subchannel.h +20 -5
  98. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
  99. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +0 -1
  100. data/src/core/ext/filters/deadline/deadline_filter.cc +21 -24
  101. data/src/core/ext/filters/deadline/deadline_filter.h +0 -4
  102. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +18 -13
  103. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
  104. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -39
  105. data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
  106. data/src/core/ext/filters/http/client_authority_filter.cc +23 -25
  107. data/src/core/ext/filters/http/client_authority_filter.h +12 -4
  108. data/src/core/ext/filters/http/http_filters_plugin.cc +58 -38
  109. data/src/core/ext/filters/http/message_compress/compression_filter.cc +56 -84
  110. data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
  111. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
  112. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
  113. data/src/core/ext/filters/http/server/http_server_filter.cc +55 -53
  114. data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
  115. data/src/core/ext/filters/message_size/message_size_filter.cc +79 -108
  116. data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
  117. data/src/core/ext/filters/rbac/rbac_filter.cc +46 -113
  118. data/src/core/ext/filters/rbac/rbac_filter.h +18 -29
  119. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -7
  120. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +26 -13
  121. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +179 -108
  122. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +42 -14
  123. data/src/core/ext/gcp/metadata_query.cc +0 -1
  124. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -7
  126. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +36 -36
  127. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1118 -1059
  128. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +47 -4
  129. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +12 -2
  130. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
  131. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
  132. data/src/core/ext/transport/chttp2/transport/flow_control.cc +56 -88
  133. data/src/core/ext/transport/chttp2/transport/flow_control.h +85 -12
  134. data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
  135. data/src/core/ext/transport/chttp2/transport/frame.h +193 -22
  136. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -3
  137. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  138. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +0 -2
  139. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -1
  140. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +23 -20
  141. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
  142. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -3
  143. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  144. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -82
  145. data/src/core/ext/transport/chttp2/transport/frame_settings.h +5 -8
  146. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +1 -3
  147. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
  148. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +16 -22
  149. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +7 -3
  150. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -4
  151. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +184 -0
  152. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +351 -0
  153. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +640 -547
  154. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +160 -12
  155. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +47 -33
  156. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +19 -5
  157. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
  158. data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
  159. data/src/core/ext/transport/chttp2/transport/internal.h +227 -165
  160. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +43 -0
  161. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +44 -0
  162. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +67 -0
  163. data/src/core/ext/transport/chttp2/transport/parsing.cc +168 -60
  164. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +90 -0
  165. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +59 -0
  166. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +108 -0
  167. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +115 -0
  168. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +120 -0
  169. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +88 -0
  170. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  171. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +60 -0
  172. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +66 -0
  173. data/src/core/ext/transport/chttp2/transport/writing.cc +226 -178
  174. data/src/core/ext/transport/inproc/inproc_transport.cc +163 -1229
  175. data/src/core/ext/transport/inproc/inproc_transport.h +0 -4
  176. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1303 -0
  177. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +30 -0
  178. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +725 -0
  179. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +149 -0
  180. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +34 -0
  181. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +827 -0
  182. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +180 -0
  183. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +33 -0
  184. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +733 -0
  185. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +157 -0
  186. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +34 -0
  187. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +2772 -0
  188. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +532 -0
  189. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +48 -0
  190. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +248 -0
  191. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +66 -0
  192. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +31 -0
  193. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +280 -0
  194. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +74 -0
  195. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +31 -0
  196. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +162 -0
  197. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +56 -0
  198. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +30 -0
  199. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +122 -0
  200. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +49 -0
  201. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +30 -0
  202. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +117 -0
  203. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +49 -0
  204. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +30 -0
  205. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +928 -0
  206. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +150 -0
  207. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +31 -0
  208. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +117 -0
  209. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +54 -0
  210. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +30 -0
  211. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +122 -0
  212. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +58 -0
  213. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +33 -0
  214. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +109 -0
  215. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +55 -0
  216. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +31 -0
  217. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +1753 -0
  218. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +375 -0
  219. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +45 -0
  220. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +3420 -0
  221. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +612 -0
  222. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +49 -0
  223. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +526 -0
  224. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +125 -0
  225. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +32 -0
  226. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +3890 -0
  227. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +729 -0
  228. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +53 -0
  229. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +117 -0
  230. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +54 -0
  231. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +30 -0
  232. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +659 -0
  233. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +123 -0
  234. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +30 -0
  235. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +1830 -0
  236. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +395 -0
  237. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +44 -0
  238. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +1041 -0
  239. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +224 -0
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +37 -0
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +129 -0
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +55 -0
  243. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +30 -0
  244. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +2420 -0
  245. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +577 -0
  246. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +53 -0
  247. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +1130 -0
  248. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +225 -0
  249. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +36 -0
  250. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +110 -0
  251. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +51 -0
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +30 -0
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +116 -0
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +53 -0
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +30 -0
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +250 -0
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +68 -0
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +31 -0
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +1688 -0
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +378 -0
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +43 -0
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +1938 -0
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +315 -0
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +38 -0
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +144 -0
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +55 -0
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +30 -0
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +2245 -0
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +481 -0
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +45 -0
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +238 -0
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +70 -0
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +31 -0
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +232 -0
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +72 -0
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +31 -0
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +287 -0
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +76 -0
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +31 -0
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +255 -0
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +66 -0
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +30 -0
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +129 -0
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +54 -0
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +30 -0
  286. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +489 -0
  287. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +138 -0
  288. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +33 -0
  289. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +993 -0
  290. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +229 -0
  291. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +36 -0
  292. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +911 -0
  293. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +179 -0
  294. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +34 -0
  295. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +101 -0
  296. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +50 -0
  297. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +30 -0
  298. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +1613 -0
  299. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +268 -0
  300. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +39 -0
  301. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +1447 -0
  302. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +260 -0
  303. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +36 -0
  304. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +327 -0
  305. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +86 -0
  306. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +30 -0
  307. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +197 -0
  308. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +77 -0
  309. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +31 -0
  310. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +183 -0
  311. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +64 -0
  312. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +30 -0
  313. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +974 -0
  314. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +219 -0
  315. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +37 -0
  316. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +1183 -0
  317. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +250 -0
  318. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +39 -0
  319. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +1704 -0
  320. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +348 -0
  321. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +40 -0
  322. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +857 -0
  323. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +133 -0
  324. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +32 -0
  325. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +9666 -0
  326. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1667 -0
  327. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +87 -0
  328. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +341 -0
  329. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +97 -0
  330. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +32 -0
  331. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +1515 -0
  332. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +325 -0
  333. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +41 -0
  334. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +119 -0
  335. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +51 -0
  336. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +30 -0
  337. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +118 -0
  338. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +55 -0
  339. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +30 -0
  340. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +190 -0
  341. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +73 -0
  342. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +31 -0
  343. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +202 -0
  344. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +62 -0
  345. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +30 -0
  346. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +409 -0
  347. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +81 -0
  348. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +30 -0
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +115 -0
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +52 -0
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +30 -0
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +102 -0
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +51 -0
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +30 -0
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +254 -0
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +85 -0
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +31 -0
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +49 -0
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +33 -0
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +39 -0
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +256 -0
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +87 -0
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +31 -0
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +201 -0
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +65 -0
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +30 -0
  367. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +2691 -0
  368. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +555 -0
  369. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +45 -0
  370. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +134 -0
  371. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +46 -0
  372. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +30 -0
  373. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +428 -0
  374. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +116 -0
  375. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +34 -0
  376. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +656 -0
  377. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +141 -0
  378. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +32 -0
  379. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +266 -0
  380. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +87 -0
  381. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +31 -0
  382. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +462 -0
  383. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +101 -0
  384. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +31 -0
  385. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +194 -0
  386. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +72 -0
  387. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +31 -0
  388. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +3943 -0
  389. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +679 -0
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +50 -0
  391. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +101 -0
  392. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +50 -0
  393. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +30 -0
  394. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +239 -0
  395. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +67 -0
  396. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +30 -0
  397. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +488 -0
  398. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +135 -0
  399. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +34 -0
  400. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +86 -0
  401. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +44 -0
  402. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +30 -0
  403. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +250 -0
  404. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +68 -0
  405. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +30 -0
  406. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +101 -0
  407. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +50 -0
  408. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +30 -0
  409. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +39 -0
  410. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +28 -0
  411. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +34 -0
  412. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +1469 -0
  413. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +262 -0
  414. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +36 -0
  415. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +361 -0
  416. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +108 -0
  417. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +32 -0
  418. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1467 -0
  419. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +267 -0
  420. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +36 -0
  421. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +217 -0
  422. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +72 -0
  423. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +31 -0
  424. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
  425. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
  426. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
  427. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +73 -0
  428. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +38 -0
  429. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +30 -0
  430. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +2141 -0
  431. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +402 -0
  432. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +43 -0
  433. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +324 -0
  434. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +84 -0
  435. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +31 -0
  436. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +925 -0
  437. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +183 -0
  438. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +34 -0
  439. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +131 -0
  440. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +54 -0
  441. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +30 -0
  442. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +312 -0
  443. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +86 -0
  444. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +33 -0
  445. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +124 -0
  446. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +53 -0
  447. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +30 -0
  448. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +299 -0
  449. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +105 -0
  450. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +34 -0
  451. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +260 -0
  452. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +76 -0
  453. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +31 -0
  454. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +166 -0
  455. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +55 -0
  456. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +30 -0
  457. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +130 -0
  458. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +54 -0
  459. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +30 -0
  460. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +110 -0
  461. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +51 -0
  462. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +30 -0
  463. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +271 -0
  464. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +96 -0
  465. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +32 -0
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +109 -0
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +43 -0
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +31 -0
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +306 -0
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +81 -0
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +31 -0
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +230 -0
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +70 -0
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +31 -0
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +347 -0
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +92 -0
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +32 -0
  478. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +525 -0
  479. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +127 -0
  480. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +36 -0
  481. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +506 -0
  482. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +139 -0
  483. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +34 -0
  484. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +227 -0
  485. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +76 -0
  486. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +32 -0
  487. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +38 -0
  488. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +26 -0
  489. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +29 -0
  490. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +148 -0
  491. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +46 -0
  492. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +30 -0
  493. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +162 -0
  494. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +64 -0
  495. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +31 -0
  496. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +238 -0
  497. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +84 -0
  498. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +32 -0
  499. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +232 -0
  500. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +75 -0
  501. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +31 -0
  502. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +42 -0
  503. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +26 -0
  504. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +29 -0
  505. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +117 -0
  506. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +49 -0
  507. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +30 -0
  508. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +146 -0
  509. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +57 -0
  510. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +30 -0
  511. data/src/core/ext/upb-gen/google/api/annotations.upb.h +56 -0
  512. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +38 -0
  513. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +30 -0
  514. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +1743 -0
  515. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +369 -0
  516. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +42 -0
  517. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +1829 -0
  518. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +399 -0
  519. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +43 -0
  520. data/src/core/ext/upb-gen/google/api/http.upb.h +496 -0
  521. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +111 -0
  522. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +32 -0
  523. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +165 -0
  524. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +52 -0
  525. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +30 -0
  526. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +99 -0
  527. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +46 -0
  528. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +30 -0
  529. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +6397 -0
  530. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +1357 -0
  531. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +78 -0
  532. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +99 -0
  533. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +46 -0
  534. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +30 -0
  535. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +69 -0
  536. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +35 -0
  537. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +30 -0
  538. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +422 -0
  539. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +115 -0
  540. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +33 -0
  541. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +99 -0
  542. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +46 -0
  543. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +30 -0
  544. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +508 -0
  545. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +163 -0
  546. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +38 -0
  547. data/src/core/ext/upb-gen/google/rpc/status.upb.h +165 -0
  548. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +52 -0
  549. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +30 -0
  550. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +385 -0
  551. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +106 -0
  552. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +33 -0
  553. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +237 -0
  554. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +79 -0
  555. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +31 -0
  556. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +1658 -0
  557. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +342 -0
  558. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +41 -0
  559. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +197 -0
  560. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +69 -0
  561. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +31 -0
  562. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +144 -0
  563. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +58 -0
  564. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +31 -0
  565. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +877 -0
  566. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +221 -0
  567. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +38 -0
  568. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +297 -0
  569. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +92 -0
  570. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +32 -0
  571. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +1333 -0
  572. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +243 -0
  573. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +38 -0
  574. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +322 -0
  575. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +118 -0
  576. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +37 -0
  577. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +125 -0
  578. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +59 -0
  579. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +31 -0
  580. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +55 -0
  581. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +37 -0
  582. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +30 -0
  583. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +131 -0
  584. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +58 -0
  585. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +31 -0
  586. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +109 -0
  587. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +55 -0
  588. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +31 -0
  589. data/src/core/ext/upb-gen/validate/validate.upb.h +6507 -0
  590. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +943 -0
  591. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +57 -0
  592. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +322 -0
  593. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +118 -0
  594. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +37 -0
  595. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +125 -0
  596. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +59 -0
  597. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +31 -0
  598. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +55 -0
  599. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +37 -0
  600. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +30 -0
  601. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +336 -0
  602. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +117 -0
  603. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +36 -0
  604. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +109 -0
  605. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +55 -0
  606. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +31 -0
  607. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +87 -0
  608. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +45 -0
  609. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +30 -0
  610. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +116 -0
  611. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +53 -0
  612. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +30 -0
  613. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +234 -0
  614. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +78 -0
  615. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +31 -0
  616. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +134 -0
  617. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +62 -0
  618. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +31 -0
  619. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +115 -0
  620. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +52 -0
  621. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +30 -0
  622. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +144 -0
  623. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +55 -0
  624. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +30 -0
  625. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +331 -0
  626. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +84 -0
  627. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +31 -0
  628. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +146 -0
  629. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +59 -0
  630. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +30 -0
  631. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +350 -0
  632. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +126 -0
  633. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +33 -0
  634. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +161 -0
  635. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +52 -0
  636. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +30 -0
  637. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +101 -0
  638. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +50 -0
  639. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +30 -0
  640. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +263 -0
  641. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +72 -0
  642. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +31 -0
  643. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +71 -0
  644. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +36 -0
  645. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +30 -0
  646. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +282 -0
  647. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +75 -0
  648. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +31 -0
  649. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +1107 -0
  650. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +265 -0
  651. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +39 -0
  652. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +726 -0
  653. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +157 -0
  654. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +35 -0
  655. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +159 -0
  656. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +58 -0
  657. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +31 -0
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +304 -0
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +79 -0
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +31 -0
  661. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +233 -0
  662. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +79 -0
  663. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +31 -0
  664. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +235 -0
  665. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +82 -0
  666. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +32 -0
  667. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +114 -0
  668. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +51 -0
  669. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +30 -0
  670. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +83 -0
  671. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +55 -0
  672. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +127 -0
  673. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +50 -0
  674. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +101 -0
  675. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +55 -0
  676. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +276 -0
  677. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  678. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +42 -0
  679. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  680. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +55 -0
  681. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +48 -0
  683. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +35 -0
  684. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +45 -0
  685. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +35 -0
  686. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +45 -0
  687. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +141 -0
  689. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +40 -0
  690. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -0
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +35 -0
  692. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +47 -0
  693. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +30 -0
  694. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +37 -0
  695. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +35 -0
  696. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +233 -0
  697. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +110 -0
  698. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +422 -0
  699. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +130 -0
  700. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +97 -0
  701. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  702. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +566 -0
  703. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +150 -0
  704. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +50 -0
  705. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  706. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +137 -0
  707. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  708. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +205 -0
  709. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  710. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +131 -0
  711. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +70 -0
  712. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +53 -0
  713. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +270 -0
  715. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +150 -0
  716. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +167 -0
  717. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  718. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +52 -0
  719. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  720. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +46 -0
  721. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +35 -0
  722. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +52 -0
  723. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  724. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +236 -0
  725. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  726. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +244 -0
  727. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  728. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +52 -0
  729. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +310 -0
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +56 -0
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +40 -0
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +54 -0
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +60 -0
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +40 -0
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +69 -0
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +48 -0
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +98 -0
  743. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  744. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +139 -0
  745. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +65 -0
  746. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +135 -0
  747. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  748. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +47 -0
  749. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  750. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +231 -0
  751. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +80 -0
  752. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +189 -0
  753. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  754. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +100 -0
  755. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  756. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +70 -0
  757. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  758. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +75 -0
  759. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  760. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +124 -0
  761. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  762. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  763. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +80 -0
  764. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +222 -0
  765. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +85 -0
  766. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +122 -0
  767. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +45 -0
  768. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +979 -0
  769. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +320 -0
  770. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +76 -0
  771. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  772. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +198 -0
  773. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +90 -0
  774. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +55 -0
  775. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  776. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +56 -0
  777. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  778. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +56 -0
  779. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  780. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +71 -0
  781. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  782. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +98 -0
  783. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  784. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +44 -0
  785. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  786. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +51 -0
  787. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +35 -0
  788. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +70 -0
  789. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  790. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +60 -0
  791. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  792. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +74 -0
  793. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  794. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +78 -0
  795. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  796. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +401 -0
  797. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +110 -0
  798. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +49 -0
  799. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  800. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +91 -0
  801. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  802. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +122 -0
  803. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  804. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +79 -0
  805. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  806. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +104 -0
  807. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +40 -0
  808. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +59 -0
  809. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  810. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +601 -0
  811. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +135 -0
  812. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +49 -0
  813. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  814. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +47 -0
  815. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  816. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +214 -0
  817. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  818. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +90 -0
  819. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  820. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +257 -0
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +57 -0
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
  826. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +57 -0
  827. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  828. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +199 -0
  829. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +100 -0
  830. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +75 -0
  831. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  832. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +154 -0
  833. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +55 -0
  834. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +45 -0
  835. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  836. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +55 -0
  837. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  838. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +47 -0
  839. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  840. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +54 -0
  841. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +55 -0
  842. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +60 -0
  843. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  844. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +53 -0
  845. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  846. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +51 -0
  847. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  848. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +50 -0
  849. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  850. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +70 -0
  851. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  852. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +39 -0
  853. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  854. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +64 -0
  855. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  856. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +57 -0
  857. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  858. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +74 -0
  859. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  860. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +77 -0
  861. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  862. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +84 -0
  863. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  864. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +52 -0
  865. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  866. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +35 -0
  867. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +30 -0
  868. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +93 -0
  869. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +35 -0
  870. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +53 -0
  871. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +40 -0
  872. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +47 -0
  873. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +45 -0
  874. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +68 -0
  875. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  876. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  877. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  878. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +43 -0
  879. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  880. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +56 -0
  881. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  882. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +39 -0
  883. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +30 -0
  884. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +153 -0
  885. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  886. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +152 -0
  887. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  888. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +51 -0
  889. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +45 -0
  890. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +38 -0
  891. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +35 -0
  892. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +33 -0
  893. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +35 -0
  894. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +488 -0
  895. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +190 -0
  896. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +34 -0
  897. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +35 -0
  898. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +31 -0
  899. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +35 -0
  900. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +53 -0
  901. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +50 -0
  902. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +34 -0
  903. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +35 -0
  904. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +44 -0
  905. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +75 -0
  906. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +36 -0
  907. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +35 -0
  908. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +66 -0
  909. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  910. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +98 -0
  911. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  912. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +61 -0
  913. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +45 -0
  914. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +46 -0
  915. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +35 -0
  916. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +33 -0
  917. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +30 -0
  918. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +45 -0
  919. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +35 -0
  920. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +38 -0
  921. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +35 -0
  922. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +282 -0
  923. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +145 -0
  924. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +62 -0
  925. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +45 -0
  926. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +46 -0
  927. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +35 -0
  928. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +34 -0
  929. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  930. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +63 -0
  931. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +50 -0
  932. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +39 -0
  933. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +35 -0
  934. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +37 -0
  935. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +35 -0
  936. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +44 -0
  937. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +35 -0
  938. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +55 -0
  939. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +40 -0
  940. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +38 -0
  941. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +40 -0
  942. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +40 -0
  943. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +35 -0
  944. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +44 -0
  945. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +35 -0
  946. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +60 -0
  947. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +40 -0
  948. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -0
  949. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +35 -0
  950. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +42 -0
  951. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  952. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +50 -0
  953. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  954. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +35 -0
  955. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  956. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +54 -0
  957. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  958. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +125 -0
  959. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  960. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +70 -0
  961. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +60 -0
  962. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +39 -0
  963. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  964. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +51 -0
  965. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +40 -0
  966. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +59 -0
  967. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +40 -0
  968. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +35 -0
  969. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +45 -0
  970. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +36 -0
  971. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +35 -0
  972. data/src/core/ext/xds/certificate_provider_store.cc +2 -1
  973. data/src/core/ext/xds/certificate_provider_store.h +0 -5
  974. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +0 -1
  975. data/src/core/ext/xds/xds_api.cc +31 -19
  976. data/src/core/ext/xds/xds_api.h +2 -2
  977. data/src/core/ext/xds/xds_bootstrap.h +3 -0
  978. data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -31
  979. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
  980. data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
  981. data/src/core/ext/xds/xds_certificate_provider.h +44 -111
  982. data/src/core/ext/xds/xds_channel_stack_modifier.cc +17 -28
  983. data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -5
  984. data/src/core/ext/xds/xds_client.cc +425 -421
  985. data/src/core/ext/xds/xds_client.h +32 -23
  986. data/src/core/ext/xds/xds_client_grpc.cc +15 -7
  987. data/src/core/ext/xds/xds_client_grpc.h +16 -2
  988. data/src/core/ext/xds/xds_client_stats.h +10 -1
  989. data/src/core/ext/xds/xds_cluster.cc +159 -68
  990. data/src/core/ext/xds/xds_cluster.h +11 -5
  991. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +9 -5
  992. data/src/core/ext/xds/xds_common_types.cc +14 -11
  993. data/src/core/ext/xds/xds_endpoint.cc +106 -70
  994. data/src/core/ext/xds/xds_endpoint.h +7 -4
  995. data/src/core/ext/xds/xds_health_status.cc +13 -18
  996. data/src/core/ext/xds/xds_health_status.h +10 -28
  997. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -2
  998. data/src/core/ext/xds/xds_http_fault_filter.h +1 -2
  999. data/src/core/ext/xds/xds_http_filters.cc +1 -5
  1000. data/src/core/ext/xds/xds_http_filters.h +2 -4
  1001. data/src/core/ext/xds/xds_http_rbac_filter.cc +8 -11
  1002. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -2
  1003. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +2 -6
  1004. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -2
  1005. data/src/core/ext/xds/xds_lb_policy_registry.cc +36 -0
  1006. data/src/core/ext/xds/xds_listener.cc +29 -25
  1007. data/src/core/ext/xds/xds_listener.h +13 -3
  1008. data/src/core/ext/xds/xds_resource_type.h +1 -7
  1009. data/src/core/ext/xds/xds_resource_type_impl.h +11 -11
  1010. data/src/core/ext/xds/xds_route_config.cc +48 -34
  1011. data/src/core/ext/xds/xds_route_config.h +2 -1
  1012. data/src/core/ext/xds/xds_routing.cc +2 -2
  1013. data/src/core/ext/xds/xds_server_config_fetcher.cc +110 -81
  1014. data/src/core/ext/xds/xds_transport.h +3 -0
  1015. data/src/core/ext/xds/xds_transport_grpc.cc +61 -54
  1016. data/src/core/ext/xds/xds_transport_grpc.h +4 -0
  1017. data/src/core/lib/address_utils/parse_address.cc +63 -1
  1018. data/src/core/lib/address_utils/parse_address.h +8 -0
  1019. data/src/core/lib/address_utils/sockaddr_utils.cc +46 -2
  1020. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  1021. data/src/core/lib/avl/avl.h +11 -173
  1022. data/src/core/lib/backoff/random_early_detection.cc +4 -2
  1023. data/src/core/lib/backoff/random_early_detection.h +7 -4
  1024. data/src/core/lib/channel/call_tracer.cc +315 -1
  1025. data/src/core/lib/channel/call_tracer.h +63 -4
  1026. data/src/core/lib/channel/channel_args.cc +109 -84
  1027. data/src/core/lib/channel/channel_args.h +105 -29
  1028. data/src/core/lib/channel/channel_args_preconditioning.cc +0 -1
  1029. data/src/core/lib/channel/channel_stack.cc +36 -1
  1030. data/src/core/lib/channel/channel_stack.h +10 -10
  1031. data/src/core/lib/channel/channel_stack_builder.h +4 -15
  1032. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -19
  1033. data/src/core/lib/channel/channel_stack_trace.cc +19 -0
  1034. data/src/core/lib/channel/channel_stack_trace.h +24 -0
  1035. data/src/core/lib/channel/channel_trace.cc +1 -1
  1036. data/src/core/lib/channel/channelz_registry.h +4 -2
  1037. data/src/core/lib/channel/connected_channel.cc +144 -83
  1038. data/src/core/lib/channel/context.h +3 -0
  1039. data/src/core/lib/channel/promise_based_filter.cc +19 -7
  1040. data/src/core/lib/channel/promise_based_filter.h +1044 -3
  1041. data/src/core/lib/channel/server_call_tracer_filter.cc +43 -42
  1042. data/src/core/lib/channel/status_util.cc +0 -1
  1043. data/src/core/lib/channel/tcp_tracer.h +140 -0
  1044. data/src/core/lib/compression/compression_internal.cc +10 -7
  1045. data/src/core/lib/config/config_vars.cc +0 -1
  1046. data/src/core/lib/config/config_vars.h +1 -1
  1047. data/src/core/lib/config/config_vars_non_generated.cc +0 -2
  1048. data/src/core/lib/config/core_configuration.cc +2 -2
  1049. data/src/core/lib/config/core_configuration.h +5 -4
  1050. data/src/core/lib/debug/stats_data.cc +202 -35
  1051. data/src/core/lib/debug/stats_data.h +102 -0
  1052. data/src/core/lib/debug/trace.cc +1 -4
  1053. data/src/core/lib/event_engine/ares_resolver.cc +747 -0
  1054. data/src/core/lib/event_engine/ares_resolver.h +151 -0
  1055. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +13 -3
  1056. data/src/core/lib/event_engine/cf_engine/cf_engine.h +4 -1
  1057. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +5 -2
  1058. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +3 -0
  1059. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -0
  1060. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +249 -0
  1061. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +120 -0
  1062. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +2 -0
  1063. data/src/core/lib/event_engine/event_engine.cc +0 -14
  1064. data/src/core/lib/event_engine/forkable.cc +65 -65
  1065. data/src/core/lib/event_engine/forkable.h +46 -25
  1066. data/src/core/lib/event_engine/grpc_polled_fd.h +92 -0
  1067. data/src/core/lib/event_engine/handle_containers.h +0 -4
  1068. data/src/core/lib/event_engine/nameser.h +102 -0
  1069. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -14
  1070. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -3
  1071. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +39 -24
  1072. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +12 -10
  1073. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -1
  1074. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +23 -4
  1075. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -1
  1076. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +205 -0
  1077. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +0 -2
  1078. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
  1079. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
  1080. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +29 -16
  1081. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
  1082. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +113 -27
  1083. data/src/core/lib/event_engine/posix_engine/posix_engine.h +36 -29
  1084. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +66 -27
  1085. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +5 -0
  1086. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +15 -5
  1087. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +53 -7
  1088. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +13 -0
  1089. data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
  1090. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
  1091. data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -3
  1092. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
  1093. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +0 -1
  1094. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +0 -1
  1095. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
  1096. data/src/core/lib/event_engine/shim.cc +4 -2
  1097. data/src/core/lib/event_engine/slice_buffer.cc +0 -1
  1098. data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -8
  1099. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
  1100. data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
  1101. data/src/core/lib/event_engine/thread_pool/thread_count.h +176 -0
  1102. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +19 -10
  1103. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +138 -100
  1104. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +22 -48
  1105. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
  1106. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
  1107. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +823 -0
  1108. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +75 -0
  1109. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
  1110. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
  1111. data/src/core/lib/event_engine/windows/win_socket.cc +20 -13
  1112. data/src/core/lib/event_engine/windows/win_socket.h +19 -7
  1113. data/src/core/lib/event_engine/windows/windows_endpoint.cc +75 -76
  1114. data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
  1115. data/src/core/lib/event_engine/windows/windows_engine.cc +85 -39
  1116. data/src/core/lib/event_engine/windows/windows_engine.h +24 -14
  1117. data/src/core/lib/event_engine/windows/windows_listener.cc +2 -3
  1118. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -0
  1119. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +4 -1
  1120. data/src/core/lib/event_engine/work_queue/work_queue.h +4 -0
  1121. data/src/core/lib/experiments/config.cc +96 -23
  1122. data/src/core/lib/experiments/config.h +23 -8
  1123. data/src/core/lib/experiments/experiments.cc +712 -60
  1124. data/src/core/lib/experiments/experiments.h +335 -46
  1125. data/src/core/lib/gpr/alloc.cc +1 -0
  1126. data/src/core/lib/gprpp/debug_location.h +13 -0
  1127. data/src/core/lib/gprpp/directory_reader.h +48 -0
  1128. data/src/core/lib/gprpp/dual_ref_counted.h +45 -16
  1129. data/src/core/lib/gprpp/fork.cc +8 -9
  1130. data/src/core/lib/gprpp/fork.h +7 -6
  1131. data/src/core/lib/gprpp/host_port.cc +0 -2
  1132. data/src/core/lib/gprpp/if_list.h +4530 -0
  1133. data/src/core/lib/gprpp/manual_constructor.h +1 -2
  1134. data/src/core/lib/gprpp/match.h +1 -1
  1135. data/src/core/lib/gprpp/no_destruct.h +1 -1
  1136. data/src/core/lib/gprpp/orphanable.h +30 -3
  1137. data/src/core/lib/gprpp/per_cpu.cc +2 -0
  1138. data/src/core/lib/gprpp/per_cpu.h +36 -7
  1139. data/src/core/lib/gprpp/posix/directory_reader.cc +82 -0
  1140. data/src/core/lib/gprpp/posix/stat.cc +0 -1
  1141. data/src/core/lib/gprpp/ref_counted.h +72 -29
  1142. data/src/core/lib/gprpp/ref_counted_ptr.h +133 -27
  1143. data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
  1144. data/src/core/lib/gprpp/ref_counted_string.h +161 -0
  1145. data/src/core/lib/gprpp/sorted_pack.h +3 -12
  1146. data/src/core/lib/gprpp/status_helper.cc +1 -3
  1147. data/src/core/lib/gprpp/status_helper.h +16 -15
  1148. data/src/core/lib/gprpp/strerror.cc +0 -2
  1149. data/src/core/lib/gprpp/time.cc +0 -1
  1150. data/src/core/lib/gprpp/time.h +13 -1
  1151. data/src/core/lib/gprpp/type_list.h +32 -0
  1152. data/src/core/lib/gprpp/validation_errors.cc +0 -1
  1153. data/src/core/lib/gprpp/windows/directory_reader.cc +80 -0
  1154. data/src/core/lib/gprpp/work_serializer.cc +323 -12
  1155. data/src/core/lib/gprpp/work_serializer.h +30 -9
  1156. data/src/core/lib/gprpp/xxhash_inline.h +29 -0
  1157. data/src/core/lib/http/format_request.cc +0 -1
  1158. data/src/core/lib/http/httpcli.cc +0 -2
  1159. data/src/core/lib/http/httpcli.h +6 -9
  1160. data/src/core/lib/http/httpcli_security_connector.cc +1 -0
  1161. data/src/core/lib/iomgr/buffer_list.cc +2 -0
  1162. data/src/core/lib/iomgr/combiner.cc +24 -18
  1163. data/src/core/lib/iomgr/combiner.h +8 -3
  1164. data/src/core/lib/iomgr/error.cc +32 -2
  1165. data/src/core/lib/iomgr/error.h +9 -10
  1166. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
  1167. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  1168. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +42 -26
  1169. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
  1170. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +3 -2
  1171. data/src/core/lib/iomgr/exec_ctx.cc +12 -0
  1172. data/src/core/lib/iomgr/exec_ctx.h +66 -19
  1173. data/src/core/lib/iomgr/polling_entity.cc +10 -0
  1174. data/src/core/lib/iomgr/polling_entity.h +2 -0
  1175. data/src/core/lib/iomgr/pollset.h +4 -5
  1176. data/src/core/lib/iomgr/port.h +24 -0
  1177. data/src/core/lib/iomgr/resolve_address.cc +13 -1
  1178. data/src/core/lib/iomgr/resolve_address.h +17 -3
  1179. data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
  1180. data/src/core/lib/iomgr/socket_utils_common_posix.cc +42 -0
  1181. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
  1182. data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
  1183. data/src/core/lib/iomgr/tcp_client_posix.cc +8 -4
  1184. data/src/core/lib/iomgr/tcp_posix.cc +48 -22
  1185. data/src/core/lib/iomgr/tcp_server_posix.cc +37 -14
  1186. data/src/core/lib/iomgr/tcp_server_utils_posix.h +12 -0
  1187. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -2
  1188. data/src/core/lib/iomgr/tcp_windows.cc +1 -3
  1189. data/src/core/lib/iomgr/timer_manager.cc +7 -1
  1190. data/src/core/lib/iomgr/timer_manager.h +2 -0
  1191. data/src/core/lib/iomgr/vsock.cc +59 -0
  1192. data/src/core/lib/iomgr/vsock.h +38 -0
  1193. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
  1194. data/src/core/lib/json/json_object_loader.h +0 -1
  1195. data/src/core/lib/json/json_reader.cc +0 -1
  1196. data/src/core/lib/load_balancing/delegating_helper.h +116 -0
  1197. data/src/core/lib/load_balancing/lb_policy.h +38 -14
  1198. data/src/core/lib/load_balancing/lb_policy_registry.cc +0 -1
  1199. data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
  1200. data/src/core/lib/matchers/matchers.cc +0 -1
  1201. data/src/core/lib/promise/activity.cc +17 -3
  1202. data/src/core/lib/promise/activity.h +5 -4
  1203. data/src/core/lib/promise/all_ok.h +80 -0
  1204. data/src/core/lib/promise/arena_promise.h +5 -1
  1205. data/src/core/lib/promise/cancel_callback.h +0 -2
  1206. data/src/core/lib/promise/context.h +0 -1
  1207. data/src/core/lib/promise/detail/basic_seq.h +1 -372
  1208. data/src/core/lib/promise/detail/join_state.h +2077 -0
  1209. data/src/core/lib/promise/detail/promise_like.h +8 -1
  1210. data/src/core/lib/promise/detail/seq_state.h +5801 -0
  1211. data/src/core/lib/promise/detail/status.h +42 -5
  1212. data/src/core/lib/promise/for_each.h +13 -3
  1213. data/src/core/lib/promise/if.h +4 -1
  1214. data/src/core/lib/promise/interceptor_list.h +0 -1
  1215. data/src/core/lib/promise/latch.h +7 -5
  1216. data/src/core/lib/promise/loop.h +9 -6
  1217. data/src/core/lib/promise/map.h +0 -1
  1218. data/src/core/lib/promise/party.cc +33 -33
  1219. data/src/core/lib/promise/party.h +143 -8
  1220. data/src/core/lib/promise/pipe.h +28 -27
  1221. data/src/core/lib/promise/poll.h +43 -19
  1222. data/src/core/lib/promise/prioritized_race.h +0 -1
  1223. data/src/core/lib/promise/promise.h +4 -1
  1224. data/src/core/lib/promise/race.h +0 -1
  1225. data/src/core/lib/promise/seq.h +124 -8
  1226. data/src/core/lib/promise/sleep.h +5 -10
  1227. data/src/core/lib/promise/status_flag.h +196 -0
  1228. data/src/core/lib/promise/try_join.h +71 -21
  1229. data/src/core/lib/promise/try_seq.h +161 -7
  1230. data/src/core/lib/resolver/endpoint_addresses.cc +147 -0
  1231. data/src/core/lib/resolver/endpoint_addresses.h +164 -0
  1232. data/src/core/lib/resolver/resolver.h +4 -3
  1233. data/src/core/lib/resolver/resolver_factory.h +3 -2
  1234. data/src/core/lib/resolver/resolver_registry.cc +0 -2
  1235. data/src/core/lib/resolver/server_address.h +5 -109
  1236. data/src/core/lib/resource_quota/api.cc +1 -0
  1237. data/src/core/lib/resource_quota/arena.cc +2 -0
  1238. data/src/core/lib/resource_quota/arena.h +44 -10
  1239. data/src/core/lib/resource_quota/memory_quota.cc +128 -21
  1240. data/src/core/lib/resource_quota/memory_quota.h +13 -13
  1241. data/src/core/lib/resource_quota/resource_quota.h +1 -0
  1242. data/src/core/lib/security/authorization/audit_logging.cc +0 -1
  1243. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  1244. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -12
  1245. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
  1246. data/src/core/lib/security/authorization/matchers.cc +0 -1
  1247. data/src/core/lib/security/authorization/rbac_policy.cc +0 -2
  1248. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  1249. data/src/core/lib/security/authorization/stdout_logger.cc +0 -1
  1250. data/src/core/lib/security/credentials/alts/alts_credentials.cc +0 -2
  1251. data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
  1252. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
  1253. data/src/core/lib/security/credentials/composite/composite_credentials.cc +2 -2
  1254. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -2
  1255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -1
  1256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
  1257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -2
  1258. data/src/core/lib/security/credentials/external/external_account_credentials.cc +68 -23
  1259. data/src/core/lib/security/credentials/external/external_account_credentials.h +10 -0
  1260. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +4 -0
  1261. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
  1262. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +5 -3
  1263. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
  1264. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
  1265. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
  1266. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  1267. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  1268. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +0 -2
  1269. data/src/core/lib/security/credentials/jwt/json_token.cc +17 -0
  1270. data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
  1271. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +0 -1
  1272. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +43 -2
  1273. data/src/core/lib/security/credentials/local/local_credentials.cc +0 -2
  1274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +0 -1
  1275. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  1276. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +116 -10
  1277. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -0
  1278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -2
  1279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +86 -0
  1280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -55
  1281. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
  1282. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +2 -0
  1283. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +41 -0
  1284. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +28 -1
  1285. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +255 -0
  1286. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +129 -0
  1287. data/src/core/lib/security/credentials/tls/tls_credentials.cc +27 -2
  1288. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
  1289. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  1290. data/src/core/lib/security/credentials/xds/xds_credentials.cc +22 -29
  1291. data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
  1292. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -0
  1293. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  1294. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +7 -59
  1295. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -1
  1296. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -3
  1297. data/src/core/lib/security/security_connector/ssl_utils.h +5 -1
  1298. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +8 -19
  1299. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -2
  1300. data/src/core/lib/security/transport/auth_filters.h +71 -4
  1301. data/src/core/lib/security/transport/client_auth_filter.cc +9 -9
  1302. data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
  1303. data/src/core/lib/security/transport/secure_endpoint.cc +3 -6
  1304. data/src/core/lib/security/transport/security_handshaker.cc +2 -3
  1305. data/src/core/lib/security/transport/server_auth_filter.cc +70 -92
  1306. data/src/core/lib/service_config/service_config_call_data.h +5 -0
  1307. data/src/core/lib/slice/slice.h +27 -0
  1308. data/src/core/lib/slice/slice_buffer.cc +15 -0
  1309. data/src/core/lib/slice/slice_buffer.h +19 -4
  1310. data/src/core/lib/slice/slice_refcount.h +1 -1
  1311. data/src/core/lib/surface/builtins.cc +6 -25
  1312. data/src/core/lib/surface/call.cc +852 -247
  1313. data/src/core/lib/surface/call.h +30 -13
  1314. data/src/core/lib/surface/call_log_batch.cc +0 -2
  1315. data/src/core/lib/surface/call_trace.cc +42 -2
  1316. data/src/core/lib/surface/channel.cc +12 -10
  1317. data/src/core/lib/surface/channel.h +2 -8
  1318. data/src/core/lib/surface/channel_init.cc +367 -14
  1319. data/src/core/lib/surface/channel_init.h +177 -28
  1320. data/src/core/lib/surface/completion_queue.cc +4 -1
  1321. data/src/core/lib/surface/event_string.cc +0 -1
  1322. data/src/core/lib/surface/init.cc +21 -47
  1323. data/src/core/lib/surface/lame_client.cc +8 -1
  1324. data/src/core/lib/surface/server.cc +519 -300
  1325. data/src/core/lib/surface/server.h +68 -44
  1326. data/src/core/lib/surface/validate_metadata.cc +37 -22
  1327. data/src/core/lib/surface/validate_metadata.h +13 -3
  1328. data/src/core/lib/surface/version.cc +2 -2
  1329. data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
  1330. data/src/core/lib/transport/batch_builder.cc +7 -9
  1331. data/src/core/lib/transport/batch_builder.h +1 -3
  1332. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  1333. data/src/core/lib/transport/bdp_estimator.h +2 -2
  1334. data/src/core/lib/transport/call_final_info.cc +38 -0
  1335. data/src/core/lib/transport/call_final_info.h +54 -0
  1336. data/src/core/lib/transport/connectivity_state.cc +3 -4
  1337. data/src/core/lib/transport/connectivity_state.h +4 -0
  1338. data/src/core/lib/transport/error_utils.cc +0 -2
  1339. data/src/core/lib/transport/handshaker.cc +0 -2
  1340. data/src/core/lib/transport/metadata_batch.cc +12 -7
  1341. data/src/core/lib/transport/metadata_batch.h +122 -50
  1342. data/src/core/lib/transport/parsed_metadata.h +32 -20
  1343. data/src/core/lib/transport/simple_slice_based_metadata.h +8 -2
  1344. data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
  1345. data/src/core/lib/transport/timeout_encoding.h +2 -2
  1346. data/src/core/lib/transport/transport.cc +80 -67
  1347. data/src/core/lib/transport/transport.h +504 -91
  1348. data/src/core/lib/transport/transport_fwd.h +3 -1
  1349. data/src/core/lib/transport/transport_op_string.cc +0 -2
  1350. data/src/core/lib/uri/uri_parser.cc +0 -1
  1351. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -0
  1352. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -3
  1353. data/src/core/tsi/alts/crypt/aes_gcm.cc +142 -89
  1354. data/src/core/tsi/alts/crypt/gsec.h +387 -319
  1355. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +11 -7
  1356. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  1357. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -7
  1358. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  1359. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
  1360. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -13
  1361. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +26 -25
  1362. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -1
  1363. data/src/core/tsi/ssl_transport_security.cc +233 -69
  1364. data/src/core/tsi/ssl_transport_security.h +36 -2
  1365. data/src/ruby/bin/math_pb.rb +24 -18
  1366. data/src/ruby/ext/grpc/extconf.rb +73 -10
  1367. data/src/ruby/ext/grpc/rb_call.c +62 -39
  1368. data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
  1369. data/src/ruby/ext/grpc/rb_channel.c +109 -84
  1370. data/src/ruby/ext/grpc/rb_channel.h +1 -0
  1371. data/src/ruby/ext/grpc/rb_channel_args.c +21 -3
  1372. data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
  1373. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  1374. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  1375. data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
  1376. data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
  1377. data/src/ruby/ext/grpc/rb_grpc.c +192 -31
  1378. data/src/ruby/ext/grpc/rb_grpc.h +8 -4
  1379. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -0
  1380. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -0
  1381. data/src/ruby/ext/grpc/rb_server.c +62 -45
  1382. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  1383. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  1384. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  1385. data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
  1386. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1387. data/src/ruby/lib/grpc/version.rb +1 -1
  1388. data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
  1389. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
  1390. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +33 -111
  1391. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
  1392. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +22 -0
  1393. data/src/ruby/pb/test/client.rb +16 -0
  1394. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
  1395. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
  1396. data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
  1397. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  1398. data/third_party/abseil-cpp/absl/base/casts.h +8 -8
  1399. data/third_party/abseil-cpp/absl/base/config.h +89 -106
  1400. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
  1401. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
  1402. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
  1403. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
  1404. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
  1405. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
  1406. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
  1407. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
  1408. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
  1409. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
  1410. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
  1411. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
  1412. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1413. data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
  1414. data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
  1415. data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
  1416. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
  1417. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
  1418. data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
  1419. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  1420. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +3 -21
  1421. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
  1422. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
  1423. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
  1424. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
  1425. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
  1426. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
  1427. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
  1428. data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
  1429. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
  1430. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
  1431. data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
  1432. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
  1433. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
  1434. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
  1435. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
  1436. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
  1437. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
  1438. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
  1439. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
  1440. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
  1441. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
  1442. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
  1443. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
  1444. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
  1445. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
  1446. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
  1447. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
  1448. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
  1449. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
  1450. data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
  1451. data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
  1452. data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
  1453. data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
  1454. data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
  1455. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
  1456. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
  1457. data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
  1458. data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
  1459. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
  1460. data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
  1461. data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
  1462. data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
  1463. data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
  1464. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
  1465. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
  1466. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  1467. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
  1468. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  1469. data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
  1470. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
  1471. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
  1472. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
  1473. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
  1474. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
  1475. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
  1476. data/third_party/abseil-cpp/absl/status/status.cc +11 -7
  1477. data/third_party/abseil-cpp/absl/status/status.h +11 -2
  1478. data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
  1479. data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
  1480. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
  1481. data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
  1482. data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
  1483. data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
  1484. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
  1485. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
  1486. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
  1487. data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
  1488. data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
  1489. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
  1490. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
  1491. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
  1492. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
  1493. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
  1494. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
  1495. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
  1496. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
  1497. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
  1498. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
  1499. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
  1500. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
  1501. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
  1502. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
  1503. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
  1504. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
  1505. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
  1506. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
  1507. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
  1508. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
  1509. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
  1510. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
  1511. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
  1512. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
  1513. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
  1514. data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
  1515. data/third_party/abseil-cpp/absl/strings/match.h +19 -0
  1516. data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
  1517. data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
  1518. data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
  1519. data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
  1520. data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
  1521. data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
  1522. data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
  1523. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
  1524. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
  1525. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
  1526. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  1527. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
  1528. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
  1529. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
  1530. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
  1531. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
  1532. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
  1533. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  1534. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
  1535. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  1536. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
  1537. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  1538. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
  1539. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
  1540. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  1541. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
  1542. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
  1543. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
  1544. data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
  1545. data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
  1546. data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
  1547. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
  1548. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1549. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
  1550. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
  1551. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
  1552. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
  1553. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
  1554. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
  1555. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
  1556. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
  1557. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
  1558. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
  1559. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
  1560. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
  1561. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
  1562. data/third_party/abseil-cpp/absl/time/time.cc +9 -2
  1563. data/third_party/abseil-cpp/absl/time/time.h +115 -15
  1564. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
  1565. data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
  1566. data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
  1567. data/third_party/abseil-cpp/absl/types/optional.h +15 -13
  1568. data/third_party/abseil-cpp/absl/types/span.h +1 -2
  1569. data/third_party/boringssl-with-bazel/err_data.c +554 -553
  1570. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
  1571. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
  1572. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
  1573. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
  1574. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
  1575. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
  1576. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
  1577. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
  1578. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
  1579. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +5 -49
  1580. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +18 -13
  1581. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
  1582. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
  1583. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
  1584. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
  1585. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
  1586. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
  1587. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
  1588. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
  1589. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
  1590. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
  1591. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
  1592. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
  1593. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -1
  1594. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
  1595. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
  1596. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
  1597. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
  1598. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
  1599. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +18 -0
  1600. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
  1601. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
  1602. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
  1603. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
  1604. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
  1605. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
  1606. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
  1607. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +24 -28
  1608. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +4 -6
  1609. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
  1610. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
  1611. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
  1612. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
  1613. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
  1614. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
  1615. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
  1616. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
  1617. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
  1618. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
  1619. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
  1620. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
  1621. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
  1622. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
  1623. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
  1624. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
  1625. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +38 -19
  1626. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
  1627. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  1628. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
  1629. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
  1630. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
  1631. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
  1632. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
  1633. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
  1634. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
  1635. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
  1636. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
  1637. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
  1638. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
  1639. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
  1640. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
  1641. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
  1642. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
  1643. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
  1644. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
  1645. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
  1646. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
  1647. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
  1648. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
  1649. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +42 -24
  1650. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
  1651. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +7 -0
  1652. data/third_party/boringssl-with-bazel/src/crypto/internal.h +211 -100
  1653. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
  1654. data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
  1655. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
  1656. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
  1657. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
  1658. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
  1659. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
  1660. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  1661. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
  1662. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
  1663. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
  1664. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +34 -0
  1665. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +38 -0
  1666. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
  1667. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +59 -0
  1668. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
  1669. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
  1670. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
  1671. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
  1672. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
  1673. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
  1674. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +8 -19
  1675. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
  1676. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
  1677. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
  1678. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
  1679. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
  1680. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
  1681. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
  1682. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
  1683. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
  1684. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
  1685. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
  1686. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
  1687. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
  1688. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
  1689. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
  1690. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
  1691. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
  1692. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
  1693. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
  1694. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -116
  1695. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +11 -1
  1696. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
  1697. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
  1698. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
  1699. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
  1700. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
  1701. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
  1702. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
  1703. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
  1704. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +6 -2
  1705. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
  1706. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
  1707. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +22 -20
  1708. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +131 -81
  1709. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +236 -213
  1710. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
  1711. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
  1712. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -8
  1713. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
  1714. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
  1715. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
  1716. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  1717. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
  1718. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +26 -20
  1719. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +4 -4
  1720. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
  1721. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +127 -26
  1722. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
  1723. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
  1724. data/third_party/upb/upb/base/descriptor_constants.h +7 -27
  1725. data/third_party/upb/upb/base/internal/log2.h +38 -0
  1726. data/third_party/upb/upb/base/status.c +6 -26
  1727. data/third_party/upb/upb/base/status.h +6 -26
  1728. data/third_party/upb/upb/base/status.hpp +50 -0
  1729. data/third_party/upb/upb/base/string_view.h +11 -28
  1730. data/third_party/upb/upb/generated_code_support.h +33 -0
  1731. data/third_party/upb/upb/hash/common.c +12 -44
  1732. data/third_party/upb/upb/hash/common.h +16 -41
  1733. data/third_party/upb/upb/hash/int_table.h +6 -26
  1734. data/third_party/upb/upb/hash/str_table.h +7 -26
  1735. data/third_party/upb/upb/json/decode.c +31 -28
  1736. data/third_party/upb/upb/json/decode.h +32 -29
  1737. data/third_party/upb/upb/json/encode.c +31 -28
  1738. data/third_party/upb/upb/json/encode.h +35 -32
  1739. data/third_party/upb/upb/lex/atoi.c +6 -26
  1740. data/third_party/upb/upb/lex/atoi.h +8 -26
  1741. data/third_party/upb/upb/lex/round_trip.c +6 -26
  1742. data/third_party/upb/upb/lex/round_trip.h +6 -26
  1743. data/third_party/upb/upb/lex/strtod.c +6 -26
  1744. data/third_party/upb/upb/lex/strtod.h +6 -26
  1745. data/third_party/upb/upb/lex/unicode.c +6 -26
  1746. data/third_party/upb/upb/lex/unicode.h +8 -26
  1747. data/third_party/upb/upb/mem/alloc.c +6 -26
  1748. data/third_party/upb/upb/mem/alloc.h +6 -26
  1749. data/third_party/upb/upb/mem/arena.c +30 -29
  1750. data/third_party/upb/upb/mem/arena.h +16 -44
  1751. data/third_party/upb/upb/mem/arena.hpp +54 -0
  1752. data/third_party/upb/upb/mem/internal/arena.h +94 -0
  1753. data/third_party/upb/upb/message/accessors.c +34 -31
  1754. data/third_party/upb/upb/message/accessors.h +58 -57
  1755. data/third_party/upb/upb/message/array.c +154 -0
  1756. data/third_party/upb/upb/message/array.h +98 -0
  1757. data/third_party/upb/upb/message/internal/accessors.h +367 -0
  1758. data/third_party/upb/upb/message/internal/array.h +138 -0
  1759. data/third_party/upb/upb/message/internal/extension.h +63 -0
  1760. data/third_party/upb/upb/message/internal/map.h +173 -0
  1761. data/third_party/upb/upb/message/internal/map_entry.h +66 -0
  1762. data/third_party/upb/upb/message/internal/map_sorter.h +112 -0
  1763. data/third_party/upb/upb/message/internal/message.h +106 -0
  1764. data/third_party/upb/upb/message/internal/types.h +23 -0
  1765. data/third_party/upb/upb/message/map.c +145 -0
  1766. data/third_party/upb/upb/message/map.h +147 -0
  1767. data/third_party/upb/upb/message/map_gencode_util.h +81 -0
  1768. data/third_party/upb/upb/message/map_sorter.c +170 -0
  1769. data/third_party/upb/upb/message/message.c +8 -34
  1770. data/third_party/upb/upb/message/message.h +10 -27
  1771. data/third_party/upb/upb/message/tagged_ptr.h +69 -0
  1772. data/third_party/upb/upb/message/types.h +15 -0
  1773. data/third_party/upb/upb/message/value.h +46 -0
  1774. data/third_party/upb/upb/mini_descriptor/build_enum.c +130 -0
  1775. data/third_party/upb/upb/mini_descriptor/build_enum.h +42 -0
  1776. data/third_party/upb/upb/mini_descriptor/decode.c +870 -0
  1777. data/third_party/upb/upb/mini_descriptor/decode.h +120 -0
  1778. data/third_party/upb/upb/mini_descriptor/internal/base92.c +26 -0
  1779. data/third_party/upb/upb/mini_descriptor/internal/base92.h +63 -0
  1780. data/third_party/upb/upb/mini_descriptor/internal/decoder.h +53 -0
  1781. data/third_party/upb/upb/mini_descriptor/internal/encode.c +323 -0
  1782. data/third_party/upb/upb/mini_descriptor/internal/encode.h +92 -0
  1783. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +118 -0
  1784. data/third_party/upb/upb/mini_descriptor/internal/modifiers.h +32 -0
  1785. data/third_party/upb/upb/mini_descriptor/internal/wire_constants.h +72 -0
  1786. data/third_party/upb/upb/mini_descriptor/link.c +122 -0
  1787. data/third_party/upb/upb/mini_descriptor/link.h +84 -0
  1788. data/third_party/upb/upb/mini_table/enum.h +38 -0
  1789. data/third_party/upb/upb/mini_table/extension.h +15 -0
  1790. data/third_party/upb/upb/mini_table/extension_registry.c +7 -27
  1791. data/third_party/upb/upb/mini_table/extension_registry.h +9 -28
  1792. data/third_party/upb/upb/mini_table/field.h +98 -0
  1793. data/third_party/upb/upb/mini_table/file.h +15 -0
  1794. data/third_party/upb/upb/mini_table/internal/enum.h +58 -0
  1795. data/third_party/upb/upb/mini_table/internal/extension.h +27 -0
  1796. data/third_party/upb/upb/mini_table/internal/field.h +114 -0
  1797. data/third_party/upb/upb/mini_table/internal/file.h +29 -0
  1798. data/third_party/upb/upb/mini_table/internal/message.c +19 -0
  1799. data/third_party/upb/upb/mini_table/internal/message.h +88 -0
  1800. data/third_party/upb/upb/mini_table/internal/sub.h +18 -0
  1801. data/third_party/upb/upb/mini_table/message.c +77 -0
  1802. data/third_party/upb/upb/mini_table/message.h +85 -0
  1803. data/third_party/upb/upb/mini_table/sub.h +15 -0
  1804. data/third_party/upb/upb/port/atomic.h +8 -26
  1805. data/third_party/upb/upb/port/def.inc +28 -29
  1806. data/third_party/upb/upb/port/undef.inc +8 -26
  1807. data/third_party/upb/upb/port/vsnprintf_compat.h +6 -26
  1808. data/third_party/upb/upb/reflection/common.h +11 -27
  1809. data/third_party/upb/upb/reflection/def.h +8 -26
  1810. data/third_party/upb/upb/reflection/def.hpp +26 -31
  1811. data/third_party/upb/upb/reflection/def_pool.c +16 -35
  1812. data/third_party/upb/upb/reflection/def_pool.h +17 -38
  1813. data/third_party/upb/upb/reflection/def_type.c +6 -26
  1814. data/third_party/upb/upb/reflection/def_type.h +6 -27
  1815. data/third_party/upb/upb/reflection/desc_state.c +7 -27
  1816. data/third_party/upb/upb/reflection/enum_def.c +19 -37
  1817. data/third_party/upb/upb/reflection/enum_def.h +13 -33
  1818. data/third_party/upb/upb/reflection/enum_reserved_range.c +9 -30
  1819. data/third_party/upb/upb/reflection/enum_reserved_range.h +6 -26
  1820. data/third_party/upb/upb/reflection/enum_value_def.c +13 -32
  1821. data/third_party/upb/upb/reflection/enum_value_def.h +8 -28
  1822. data/third_party/upb/upb/reflection/extension_range.c +9 -28
  1823. data/third_party/upb/upb/reflection/extension_range.h +6 -26
  1824. data/third_party/upb/upb/reflection/field_def.c +70 -52
  1825. data/third_party/upb/upb/reflection/field_def.h +25 -42
  1826. data/third_party/upb/upb/reflection/file_def.c +23 -48
  1827. data/third_party/upb/upb/reflection/file_def.h +10 -30
  1828. data/third_party/upb/upb/reflection/internal/def_builder.c +339 -0
  1829. data/third_party/upb/upb/reflection/internal/def_builder.h +137 -0
  1830. data/third_party/upb/upb/reflection/internal/def_pool.h +57 -0
  1831. data/third_party/upb/upb/reflection/internal/desc_state.h +44 -0
  1832. data/third_party/upb/upb/reflection/internal/enum_def.h +36 -0
  1833. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +35 -0
  1834. data/third_party/upb/upb/reflection/internal/enum_value_def.h +37 -0
  1835. data/third_party/upb/upb/reflection/internal/extension_range.h +34 -0
  1836. data/third_party/upb/upb/reflection/internal/field_def.h +56 -0
  1837. data/third_party/upb/upb/reflection/internal/file_def.h +37 -0
  1838. data/third_party/upb/upb/reflection/internal/message_def.h +43 -0
  1839. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +35 -0
  1840. data/third_party/upb/upb/reflection/internal/method_def.h +33 -0
  1841. data/third_party/upb/upb/reflection/internal/oneof_def.h +37 -0
  1842. data/third_party/upb/upb/reflection/internal/service_def.h +33 -0
  1843. data/third_party/upb/upb/reflection/internal/strdup2.c +33 -0
  1844. data/third_party/upb/upb/reflection/internal/strdup2.h +32 -0
  1845. data/third_party/upb/upb/reflection/message.c +10 -30
  1846. data/third_party/upb/upb/reflection/message.h +27 -40
  1847. data/third_party/upb/upb/reflection/message.hpp +5 -23
  1848. data/third_party/upb/upb/reflection/message_def.c +73 -55
  1849. data/third_party/upb/upb/reflection/message_def.h +25 -43
  1850. data/third_party/upb/upb/reflection/message_reserved_range.c +8 -28
  1851. data/third_party/upb/upb/reflection/message_reserved_range.h +6 -26
  1852. data/third_party/upb/upb/reflection/method_def.c +10 -29
  1853. data/third_party/upb/upb/reflection/method_def.h +6 -26
  1854. data/third_party/upb/upb/reflection/oneof_def.c +15 -33
  1855. data/third_party/upb/upb/reflection/oneof_def.h +11 -30
  1856. data/third_party/upb/upb/reflection/service_def.c +12 -31
  1857. data/third_party/upb/upb/reflection/service_def.h +6 -26
  1858. data/third_party/upb/upb/text/encode.c +8 -28
  1859. data/third_party/upb/upb/text/encode.h +6 -26
  1860. data/third_party/upb/upb/wire/decode.c +106 -68
  1861. data/third_party/upb/upb/wire/decode.h +50 -26
  1862. data/third_party/upb/upb/wire/decode_fast.c +10 -28
  1863. data/third_party/upb/upb/wire/decode_fast.h +6 -26
  1864. data/third_party/upb/upb/wire/encode.c +52 -46
  1865. data/third_party/upb/upb/wire/encode.h +14 -30
  1866. data/third_party/upb/upb/wire/eps_copy_input_stream.c +6 -26
  1867. data/third_party/upb/upb/wire/eps_copy_input_stream.h +6 -26
  1868. data/third_party/upb/upb/wire/internal/constants.h +27 -0
  1869. data/third_party/upb/upb/wire/internal/decode.h +143 -0
  1870. data/third_party/upb/upb/wire/internal/swap.h +45 -0
  1871. data/third_party/upb/upb/wire/reader.c +6 -26
  1872. data/third_party/upb/upb/wire/reader.h +8 -28
  1873. data/third_party/upb/upb/wire/types.h +6 -26
  1874. data/third_party/zlib/adler32.c +5 -27
  1875. data/third_party/zlib/compress.c +5 -16
  1876. data/third_party/zlib/crc32.c +86 -162
  1877. data/third_party/zlib/deflate.c +233 -336
  1878. data/third_party/zlib/deflate.h +8 -8
  1879. data/third_party/zlib/gzguts.h +11 -12
  1880. data/third_party/zlib/infback.c +7 -23
  1881. data/third_party/zlib/inffast.c +1 -4
  1882. data/third_party/zlib/inffast.h +1 -1
  1883. data/third_party/zlib/inflate.c +30 -99
  1884. data/third_party/zlib/inftrees.c +6 -11
  1885. data/third_party/zlib/inftrees.h +3 -3
  1886. data/third_party/zlib/trees.c +224 -302
  1887. data/third_party/zlib/uncompr.c +4 -12
  1888. data/third_party/zlib/zconf.h +6 -2
  1889. data/third_party/zlib/zlib.h +191 -188
  1890. data/third_party/zlib/zutil.c +16 -44
  1891. data/third_party/zlib/zutil.h +10 -10
  1892. metadata +979 -741
  1893. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -233
  1894. data/src/core/ext/filters/client_channel/http_proxy.h +0 -52
  1895. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
  1896. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
  1897. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1226
  1898. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +0 -45
  1899. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  1900. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  1901. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +0 -152
  1902. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +0 -735
  1903. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +0 -183
  1904. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +0 -835
  1905. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +0 -160
  1906. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +0 -743
  1907. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +0 -535
  1908. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +0 -2796
  1909. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +0 -69
  1910. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +0 -256
  1911. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +0 -77
  1912. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +0 -287
  1913. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +0 -59
  1914. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +0 -168
  1915. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +0 -52
  1916. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +0 -128
  1917. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +0 -52
  1918. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +0 -123
  1919. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +0 -153
  1920. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +0 -935
  1921. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +0 -57
  1922. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +0 -122
  1923. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +0 -63
  1924. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -134
  1925. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +0 -60
  1926. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +0 -118
  1927. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -357
  1928. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +0 -1629
  1929. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +0 -572
  1930. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +0 -3257
  1931. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +0 -128
  1932. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +0 -532
  1933. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +0 -732
  1934. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +0 -3926
  1935. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +0 -57
  1936. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +0 -122
  1937. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +0 -126
  1938. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +0 -664
  1939. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +0 -398
  1940. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +0 -1849
  1941. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +0 -227
  1942. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +0 -1054
  1943. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +0 -58
  1944. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +0 -134
  1945. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +0 -580
  1946. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +0 -2448
  1947. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +0 -235
  1948. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -1180
  1949. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +0 -54
  1950. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +0 -115
  1951. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +0 -56
  1952. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +0 -122
  1953. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +0 -71
  1954. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +0 -256
  1955. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +0 -376
  1956. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +0 -1678
  1957. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +0 -314
  1958. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +0 -1886
  1959. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +0 -58
  1960. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +0 -149
  1961. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +0 -465
  1962. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +0 -2222
  1963. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -73
  1964. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +0 -245
  1965. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +0 -75
  1966. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +0 -239
  1967. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +0 -79
  1968. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +0 -293
  1969. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +0 -69
  1970. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +0 -260
  1971. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +0 -57
  1972. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +0 -136
  1973. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -141
  1974. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +0 -498
  1975. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -207
  1976. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +0 -875
  1977. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +0 -182
  1978. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +0 -920
  1979. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +0 -53
  1980. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +0 -107
  1981. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +0 -269
  1982. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +0 -1600
  1983. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +0 -263
  1984. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +0 -1459
  1985. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +0 -89
  1986. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +0 -331
  1987. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -80
  1988. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +0 -204
  1989. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +0 -66
  1990. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +0 -166
  1991. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +0 -222
  1992. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +0 -988
  1993. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +0 -229
  1994. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +0 -1017
  1995. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +0 -351
  1996. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +0 -1717
  1997. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +0 -136
  1998. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +0 -867
  1999. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +0 -1646
  2000. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +0 -9598
  2001. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +0 -100
  2002. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +0 -347
  2003. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +0 -328
  2004. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +0 -1530
  2005. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +0 -54
  2006. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +0 -123
  2007. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +0 -58
  2008. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +0 -122
  2009. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -76
  2010. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +0 -196
  2011. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +0 -65
  2012. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +0 -205
  2013. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +0 -84
  2014. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +0 -413
  2015. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -55
  2016. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +0 -122
  2017. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +0 -54
  2018. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +0 -107
  2019. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +0 -88
  2020. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +0 -259
  2021. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +0 -36
  2022. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +0 -48
  2023. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +0 -90
  2024. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +0 -261
  2025. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +0 -68
  2026. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +0 -204
  2027. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +0 -49
  2028. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +0 -139
  2029. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +0 -119
  2030. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +0 -437
  2031. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +0 -125
  2032. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +0 -635
  2033. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +0 -90
  2034. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -271
  2035. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +0 -79
  2036. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +0 -358
  2037. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +0 -75
  2038. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +0 -201
  2039. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +0 -656
  2040. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +0 -3850
  2041. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +0 -53
  2042. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +0 -107
  2043. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +0 -69
  2044. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +0 -246
  2045. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +0 -138
  2046. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +0 -499
  2047. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +0 -71
  2048. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +0 -257
  2049. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +0 -53
  2050. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +0 -107
  2051. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -31
  2052. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +0 -43
  2053. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +0 -265
  2054. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +0 -1479
  2055. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +0 -111
  2056. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -369
  2057. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -270
  2058. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +0 -1482
  2059. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +0 -75
  2060. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +0 -224
  2061. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +0 -41
  2062. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +0 -78
  2063. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +0 -405
  2064. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +0 -2161
  2065. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -87
  2066. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +0 -331
  2067. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +0 -185
  2068. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +0 -923
  2069. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +0 -57
  2070. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +0 -137
  2071. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +0 -89
  2072. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +0 -321
  2073. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +0 -56
  2074. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +0 -130
  2075. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +0 -108
  2076. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +0 -309
  2077. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +0 -79
  2078. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +0 -266
  2079. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +0 -58
  2080. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +0 -172
  2081. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +0 -57
  2082. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +0 -135
  2083. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +0 -54
  2084. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +0 -115
  2085. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +0 -99
  2086. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +0 -277
  2087. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +0 -46
  2088. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +0 -117
  2089. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -84
  2090. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +0 -312
  2091. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +0 -73
  2092. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +0 -236
  2093. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +0 -95
  2094. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +0 -354
  2095. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +0 -130
  2096. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +0 -536
  2097. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +0 -142
  2098. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +0 -516
  2099. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +0 -79
  2100. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +0 -234
  2101. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +0 -29
  2102. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +0 -44
  2103. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +0 -49
  2104. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +0 -153
  2105. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +0 -67
  2106. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +0 -168
  2107. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +0 -87
  2108. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +0 -246
  2109. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +0 -78
  2110. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +0 -237
  2111. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +0 -29
  2112. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +0 -48
  2113. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +0 -52
  2114. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +0 -123
  2115. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +0 -60
  2116. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +0 -151
  2117. data/src/core/ext/upb-generated/google/api/annotations.upb.c +0 -43
  2118. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -63
  2119. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +0 -372
  2120. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +0 -1764
  2121. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +0 -402
  2122. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +0 -1849
  2123. data/src/core/ext/upb-generated/google/api/http.upb.c +0 -114
  2124. data/src/core/ext/upb-generated/google/api/http.upb.h +0 -507
  2125. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +0 -55
  2126. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +0 -173
  2127. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +0 -49
  2128. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +0 -108
  2129. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +0 -1172
  2130. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +0 -5656
  2131. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +0 -49
  2132. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +0 -108
  2133. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +0 -38
  2134. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +0 -78
  2135. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +0 -118
  2136. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +0 -434
  2137. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +0 -49
  2138. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +0 -108
  2139. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +0 -166
  2140. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +0 -525
  2141. data/src/core/ext/upb-generated/google/rpc/status.upb.c +0 -55
  2142. data/src/core/ext/upb-generated/google/rpc/status.upb.h +0 -173
  2143. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +0 -109
  2144. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +0 -397
  2145. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +0 -82
  2146. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +0 -246
  2147. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +0 -345
  2148. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +0 -1677
  2149. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +0 -72
  2150. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +0 -207
  2151. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +0 -61
  2152. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +0 -154
  2153. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +0 -224
  2154. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +0 -893
  2155. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +0 -95
  2156. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +0 -308
  2157. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +0 -246
  2158. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +0 -1349
  2159. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +0 -129
  2160. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +0 -341
  2161. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -64
  2162. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +0 -133
  2163. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +0 -41
  2164. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -63
  2165. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +0 -63
  2166. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +0 -140
  2167. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +0 -60
  2168. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +0 -118
  2169. data/src/core/ext/upb-generated/validate/validate.upb.c +0 -950
  2170. data/src/core/ext/upb-generated/validate/validate.upb.h +0 -6544
  2171. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +0 -129
  2172. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +0 -341
  2173. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +0 -64
  2174. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +0 -133
  2175. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +0 -41
  2176. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +0 -63
  2177. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +0 -126
  2178. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +0 -352
  2179. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +0 -60
  2180. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +0 -118
  2181. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +0 -48
  2182. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +0 -93
  2183. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +0 -56
  2184. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +0 -122
  2185. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +0 -81
  2186. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +0 -241
  2187. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +0 -65
  2188. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +0 -142
  2189. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +0 -55
  2190. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +0 -122
  2191. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +0 -58
  2192. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +0 -151
  2193. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +0 -87
  2194. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +0 -338
  2195. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +0 -62
  2196. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +0 -152
  2197. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +0 -129
  2198. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +0 -360
  2199. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -55
  2200. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +0 -168
  2201. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +0 -53
  2202. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +0 -107
  2203. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +0 -75
  2204. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +0 -270
  2205. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +0 -39
  2206. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +0 -78
  2207. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +0 -78
  2208. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +0 -289
  2209. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +0 -268
  2210. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +0 -1122
  2211. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +0 -160
  2212. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +0 -740
  2213. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +0 -61
  2214. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +0 -167
  2215. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +0 -82
  2216. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +0 -312
  2217. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +0 -82
  2218. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +0 -240
  2219. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +0 -85
  2220. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +0 -246
  2221. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -54
  2222. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +0 -122
  2223. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +0 -84
  2224. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +0 -56
  2225. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +0 -128
  2226. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +0 -51
  2227. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +0 -102
  2228. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -56
  2229. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +0 -277
  2230. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +0 -126
  2231. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +0 -43
  2232. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +0 -41
  2233. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +0 -56
  2234. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +0 -41
  2235. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +0 -49
  2236. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +0 -36
  2237. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +0 -46
  2238. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +0 -36
  2239. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +0 -46
  2240. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +0 -36
  2241. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +0 -142
  2242. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +0 -41
  2243. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +0 -51
  2244. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +0 -36
  2245. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +0 -48
  2246. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +0 -31
  2247. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +0 -38
  2248. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +0 -36
  2249. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +0 -222
  2250. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +0 -106
  2251. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +0 -408
  2252. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +0 -121
  2253. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +0 -98
  2254. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +0 -46
  2255. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +0 -567
  2256. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -151
  2257. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +0 -51
  2258. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +0 -36
  2259. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +0 -138
  2260. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +0 -36
  2261. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +0 -206
  2262. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +0 -106
  2263. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +0 -132
  2264. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +0 -71
  2265. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +0 -54
  2266. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +0 -36
  2267. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +0 -271
  2268. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +0 -151
  2269. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +0 -169
  2270. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -71
  2271. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +0 -53
  2272. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +0 -36
  2273. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +0 -47
  2274. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -36
  2275. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +0 -53
  2276. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +0 -41
  2277. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +0 -235
  2278. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +0 -101
  2279. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +0 -234
  2280. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +0 -76
  2281. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +0 -53
  2282. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +0 -36
  2283. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +0 -305
  2284. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +0 -111
  2285. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +0 -57
  2286. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +0 -41
  2287. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +0 -55
  2288. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +0 -41
  2289. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +0 -61
  2290. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +0 -41
  2291. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +0 -70
  2292. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +0 -36
  2293. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +0 -49
  2294. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +0 -36
  2295. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +0 -99
  2296. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +0 -51
  2297. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +0 -133
  2298. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +0 -61
  2299. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +0 -136
  2300. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +0 -56
  2301. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +0 -48
  2302. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +0 -36
  2303. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +0 -227
  2304. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +0 -81
  2305. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +0 -190
  2306. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +0 -66
  2307. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +0 -101
  2308. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +0 -36
  2309. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +0 -71
  2310. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +0 -41
  2311. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +0 -69
  2312. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +0 -36
  2313. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +0 -125
  2314. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +0 -71
  2315. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +0 -134
  2316. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +0 -76
  2317. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +0 -223
  2318. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +0 -86
  2319. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +0 -123
  2320. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -46
  2321. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +0 -972
  2322. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +0 -316
  2323. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +0 -77
  2324. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +0 -46
  2325. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +0 -199
  2326. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +0 -91
  2327. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +0 -56
  2328. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +0 -36
  2329. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +0 -57
  2330. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +0 -36
  2331. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +0 -57
  2332. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +0 -41
  2333. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +0 -72
  2334. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +0 -36
  2335. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +0 -99
  2336. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +0 -36
  2337. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +0 -45
  2338. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +0 -36
  2339. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +0 -52
  2340. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +0 -36
  2341. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +0 -71
  2342. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +0 -41
  2343. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +0 -61
  2344. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +0 -31
  2345. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +0 -75
  2346. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +0 -41
  2347. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +0 -79
  2348. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +0 -36
  2349. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +0 -50
  2350. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +0 -36
  2351. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +0 -92
  2352. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +0 -56
  2353. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +0 -117
  2354. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +0 -46
  2355. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +0 -80
  2356. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +0 -41
  2357. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +0 -89
  2358. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +0 -36
  2359. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +0 -60
  2360. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +0 -41
  2361. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +0 -580
  2362. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +0 -131
  2363. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +0 -50
  2364. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +0 -36
  2365. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +0 -48
  2366. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +0 -31
  2367. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +0 -215
  2368. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +0 -66
  2369. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +0 -91
  2370. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +0 -46
  2371. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +0 -258
  2372. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +0 -66
  2373. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +0 -58
  2374. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +0 -41
  2375. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +0 -58
  2376. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +0 -36
  2377. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +0 -200
  2378. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +0 -101
  2379. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +0 -76
  2380. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +0 -41
  2381. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +0 -152
  2382. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +0 -56
  2383. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +0 -46
  2384. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +0 -36
  2385. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +0 -56
  2386. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +0 -51
  2387. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +0 -48
  2388. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +0 -36
  2389. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +0 -55
  2390. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +0 -56
  2391. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +0 -61
  2392. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +0 -41
  2393. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +0 -54
  2394. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +0 -36
  2395. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +0 -52
  2396. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +0 -36
  2397. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +0 -51
  2398. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +0 -36
  2399. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +0 -71
  2400. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +0 -46
  2401. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +0 -40
  2402. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +0 -41
  2403. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +0 -65
  2404. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +0 -41
  2405. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +0 -58
  2406. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +0 -41
  2407. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +0 -75
  2408. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +0 -46
  2409. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +0 -78
  2410. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +0 -66
  2411. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +0 -85
  2412. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +0 -56
  2413. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +0 -53
  2414. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +0 -46
  2415. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +0 -36
  2416. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +0 -31
  2417. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +0 -94
  2418. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +0 -36
  2419. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +0 -54
  2420. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +0 -41
  2421. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +0 -48
  2422. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +0 -46
  2423. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +0 -69
  2424. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +0 -41
  2425. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +0 -39
  2426. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +0 -31
  2427. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +0 -44
  2428. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +0 -36
  2429. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +0 -57
  2430. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +0 -36
  2431. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +0 -40
  2432. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +0 -31
  2433. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +0 -154
  2434. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +0 -96
  2435. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +0 -153
  2436. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +0 -101
  2437. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +0 -52
  2438. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +0 -46
  2439. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +0 -39
  2440. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +0 -36
  2441. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +0 -34
  2442. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +0 -36
  2443. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +0 -387
  2444. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +0 -171
  2445. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +0 -35
  2446. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +0 -36
  2447. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +0 -32
  2448. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +0 -36
  2449. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +0 -54
  2450. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +0 -51
  2451. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +0 -35
  2452. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +0 -36
  2453. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +0 -45
  2454. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +0 -76
  2455. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +0 -37
  2456. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +0 -36
  2457. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  2458. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -51
  2459. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -99
  2460. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +0 -76
  2461. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +0 -62
  2462. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +0 -46
  2463. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +0 -47
  2464. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +0 -36
  2465. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +0 -34
  2466. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +0 -31
  2467. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +0 -46
  2468. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +0 -36
  2469. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +0 -39
  2470. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +0 -36
  2471. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +0 -283
  2472. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +0 -146
  2473. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +0 -63
  2474. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +0 -46
  2475. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +0 -47
  2476. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +0 -36
  2477. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +0 -35
  2478. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +0 -31
  2479. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +0 -64
  2480. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +0 -51
  2481. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +0 -40
  2482. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +0 -36
  2483. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +0 -38
  2484. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +0 -36
  2485. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +0 -45
  2486. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +0 -36
  2487. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +0 -56
  2488. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +0 -41
  2489. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +0 -39
  2490. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +0 -41
  2491. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +0 -41
  2492. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +0 -36
  2493. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +0 -45
  2494. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +0 -36
  2495. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +0 -61
  2496. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +0 -41
  2497. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +0 -46
  2498. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +0 -36
  2499. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +0 -43
  2500. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +0 -36
  2501. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +0 -51
  2502. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +0 -41
  2503. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +0 -36
  2504. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +0 -36
  2505. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +0 -55
  2506. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +0 -41
  2507. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +0 -126
  2508. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +0 -81
  2509. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +0 -71
  2510. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +0 -61
  2511. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +0 -40
  2512. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +0 -41
  2513. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +0 -52
  2514. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +0 -41
  2515. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +0 -60
  2516. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +0 -41
  2517. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +0 -36
  2518. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +0 -46
  2519. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +0 -37
  2520. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +0 -36
  2521. data/src/core/lib/event_engine/memory_allocator.cc +0 -74
  2522. data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +0 -256
  2523. data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +0 -137
  2524. data/src/core/lib/promise/detail/basic_join.h +0 -197
  2525. data/src/core/lib/promise/detail/switch.h +0 -1455
  2526. data/src/core/lib/resolver/server_address.cc +0 -174
  2527. data/src/core/lib/transport/pid_controller.cc +0 -51
  2528. data/src/core/lib/transport/pid_controller.h +0 -116
  2529. data/src/core/lib/transport/transport_impl.h +0 -102
  2530. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
  2531. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +0 -62
  2532. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm.c +0 -38
  2533. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +0 -31
  2534. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +0 -34
  2535. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -65
  2536. data/third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c +0 -42
  2537. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
  2538. data/third_party/re2/util/benchmark.h +0 -156
  2539. data/third_party/re2/util/flags.h +0 -26
  2540. data/third_party/re2/util/malloc_counter.h +0 -19
  2541. data/third_party/re2/util/pcre.cc +0 -1025
  2542. data/third_party/re2/util/pcre.h +0 -681
  2543. data/third_party/re2/util/test.h +0 -50
  2544. data/third_party/upb/upb/alloc.h +0 -36
  2545. data/third_party/upb/upb/arena.h +0 -36
  2546. data/third_party/upb/upb/array.h +0 -36
  2547. data/third_party/upb/upb/base/log2.h +0 -57
  2548. data/third_party/upb/upb/collections/array.c +0 -145
  2549. data/third_party/upb/upb/collections/array.h +0 -85
  2550. data/third_party/upb/upb/collections/array_internal.h +0 -135
  2551. data/third_party/upb/upb/collections/map.c +0 -135
  2552. data/third_party/upb/upb/collections/map.h +0 -135
  2553. data/third_party/upb/upb/collections/map_gencode_util.h +0 -78
  2554. data/third_party/upb/upb/collections/map_internal.h +0 -170
  2555. data/third_party/upb/upb/collections/map_sorter.c +0 -166
  2556. data/third_party/upb/upb/collections/map_sorter_internal.h +0 -109
  2557. data/third_party/upb/upb/collections/message_value.h +0 -65
  2558. data/third_party/upb/upb/decode.h +0 -36
  2559. data/third_party/upb/upb/def.h +0 -36
  2560. data/third_party/upb/upb/def.hpp +0 -33
  2561. data/third_party/upb/upb/encode.h +0 -36
  2562. data/third_party/upb/upb/extension_registry.h +0 -35
  2563. data/third_party/upb/upb/json_decode.h +0 -36
  2564. data/third_party/upb/upb/json_encode.h +0 -36
  2565. data/third_party/upb/upb/map.h +0 -36
  2566. data/third_party/upb/upb/mem/arena_internal.h +0 -114
  2567. data/third_party/upb/upb/message/accessors_internal.h +0 -325
  2568. data/third_party/upb/upb/message/extension_internal.h +0 -83
  2569. data/third_party/upb/upb/message/internal.h +0 -135
  2570. data/third_party/upb/upb/mini_table/common.c +0 -128
  2571. data/third_party/upb/upb/mini_table/common.h +0 -170
  2572. data/third_party/upb/upb/mini_table/common_internal.h +0 -111
  2573. data/third_party/upb/upb/mini_table/decode.c +0 -1127
  2574. data/third_party/upb/upb/mini_table/decode.h +0 -179
  2575. data/third_party/upb/upb/mini_table/encode.c +0 -300
  2576. data/third_party/upb/upb/mini_table/encode_internal.h +0 -111
  2577. data/third_party/upb/upb/mini_table/encode_internal.hpp +0 -136
  2578. data/third_party/upb/upb/mini_table/enum_internal.h +0 -88
  2579. data/third_party/upb/upb/mini_table/extension_internal.h +0 -47
  2580. data/third_party/upb/upb/mini_table/field_internal.h +0 -192
  2581. data/third_party/upb/upb/mini_table/file_internal.h +0 -47
  2582. data/third_party/upb/upb/mini_table/message_internal.h +0 -136
  2583. data/third_party/upb/upb/mini_table/sub_internal.h +0 -38
  2584. data/third_party/upb/upb/mini_table/types.h +0 -40
  2585. data/third_party/upb/upb/mini_table.h +0 -36
  2586. data/third_party/upb/upb/msg.h +0 -36
  2587. data/third_party/upb/upb/reflection/def_builder.c +0 -357
  2588. data/third_party/upb/upb/reflection/def_builder_internal.h +0 -157
  2589. data/third_party/upb/upb/reflection/def_pool_internal.h +0 -77
  2590. data/third_party/upb/upb/reflection/desc_state_internal.h +0 -64
  2591. data/third_party/upb/upb/reflection/enum_def_internal.h +0 -56
  2592. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +0 -55
  2593. data/third_party/upb/upb/reflection/enum_value_def_internal.h +0 -57
  2594. data/third_party/upb/upb/reflection/extension_range_internal.h +0 -54
  2595. data/third_party/upb/upb/reflection/field_def_internal.h +0 -76
  2596. data/third_party/upb/upb/reflection/file_def_internal.h +0 -57
  2597. data/third_party/upb/upb/reflection/message_def_internal.h +0 -63
  2598. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +0 -55
  2599. data/third_party/upb/upb/reflection/method_def_internal.h +0 -53
  2600. data/third_party/upb/upb/reflection/oneof_def_internal.h +0 -57
  2601. data/third_party/upb/upb/reflection/service_def_internal.h +0 -53
  2602. data/third_party/upb/upb/reflection.h +0 -36
  2603. data/third_party/upb/upb/reflection.hpp +0 -33
  2604. data/third_party/upb/upb/status.h +0 -36
  2605. data/third_party/upb/upb/string_view.h +0 -36
  2606. data/third_party/upb/upb/text_encode.h +0 -36
  2607. data/third_party/upb/upb/upb.h +0 -39
  2608. data/third_party/upb/upb/upb.hpp +0 -107
  2609. data/third_party/upb/upb/wire/common.h +0 -44
  2610. data/third_party/upb/upb/wire/common_internal.h +0 -50
  2611. data/third_party/upb/upb/wire/decode_internal.h +0 -163
  2612. data/third_party/upb/upb/wire/swap_internal.h +0 -63
  2613. data/third_party/zlib/gzclose.c +0 -25
  2614. data/third_party/zlib/gzlib.c +0 -639
  2615. data/third_party/zlib/gzread.c +0 -650
  2616. data/third_party/zlib/gzwrite.c +0 -677
@@ -20,27 +20,35 @@
20
20
 
21
21
  #include <inttypes.h>
22
22
  #include <limits.h>
23
- #include <stdio.h>
24
23
  #include <string.h>
25
24
 
26
25
  #include <algorithm>
27
- #include <initializer_list>
26
+ #include <atomic>
27
+ #include <cstddef>
28
+ #include <limits>
28
29
  #include <memory>
29
30
  #include <new>
30
31
  #include <string>
32
+ #include <type_traits>
31
33
  #include <utility>
32
34
  #include <vector>
33
35
 
34
36
  #include "absl/base/attributes.h"
37
+ #include "absl/container/flat_hash_map.h"
38
+ #include "absl/hash/hash.h"
39
+ #include "absl/meta/type_traits.h"
40
+ #include "absl/random/random.h"
35
41
  #include "absl/status/status.h"
36
42
  #include "absl/strings/cord.h"
37
43
  #include "absl/strings/str_cat.h"
38
44
  #include "absl/strings/str_format.h"
39
45
  #include "absl/strings/string_view.h"
40
46
  #include "absl/types/optional.h"
47
+ #include "absl/types/variant.h"
41
48
 
42
49
  #include <grpc/event_engine/event_engine.h>
43
50
  #include <grpc/grpc.h>
51
+ #include <grpc/impl/channel_arg_names.h>
44
52
  #include <grpc/impl/connectivity_state.h>
45
53
  #include <grpc/slice_buffer.h>
46
54
  #include <grpc/status.h>
@@ -50,7 +58,6 @@
50
58
 
51
59
  #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
52
60
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
53
- #include "src/core/ext/transport/chttp2/transport/frame.h"
54
61
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
55
62
  #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
56
63
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
@@ -58,14 +65,21 @@
58
65
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
59
66
  #include "src/core/ext/transport/chttp2/transport/http_trace.h"
60
67
  #include "src/core/ext/transport/chttp2/transport/internal.h"
61
- #include "src/core/ext/transport/chttp2/transport/stream_map.h"
68
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
69
+ #include "src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h"
70
+ #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h"
71
+ #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
72
+ #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
62
73
  #include "src/core/ext/transport/chttp2/transport/varint.h"
74
+ #include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
63
75
  #include "src/core/lib/channel/call_tracer.h"
64
76
  #include "src/core/lib/channel/channel_args.h"
65
77
  #include "src/core/lib/channel/context.h"
78
+ #include "src/core/lib/channel/tcp_tracer.h"
66
79
  #include "src/core/lib/debug/stats.h"
67
80
  #include "src/core/lib/debug/stats_data.h"
68
81
  #include "src/core/lib/experiments/experiments.h"
82
+ #include "src/core/lib/gpr/string.h"
69
83
  #include "src/core/lib/gpr/useful.h"
70
84
  #include "src/core/lib/gprpp/bitset.h"
71
85
  #include "src/core/lib/gprpp/crash.h"
@@ -94,7 +108,6 @@
94
108
  #include "src/core/lib/transport/metadata_batch.h"
95
109
  #include "src/core/lib/transport/status_conversion.h"
96
110
  #include "src/core/lib/transport/transport.h"
97
- #include "src/core/lib/transport/transport_impl.h"
98
111
 
99
112
  #ifdef GRPC_POSIX_SOCKET_TCP
100
113
  #include "src/core/lib/iomgr/ev_posix.h"
@@ -106,36 +119,28 @@
106
119
  #define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
107
120
  #define DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT (8 * 1024)
108
121
 
109
- #define DEFAULT_CLIENT_KEEPALIVE_TIME_MS INT_MAX
110
- #define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
111
- #define DEFAULT_SERVER_KEEPALIVE_TIME_MS 7200000 // 2 hours
112
- #define DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
113
- #define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
114
122
  #define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
115
123
 
116
- #define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 // 5 minutes
117
- #define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
118
- #define DEFAULT_MAX_PING_STRIKES 2
119
-
120
124
  #define DEFAULT_MAX_PENDING_INDUCED_FRAMES 10000
121
125
 
122
- static int g_default_client_keepalive_time_ms =
123
- DEFAULT_CLIENT_KEEPALIVE_TIME_MS;
124
- static int g_default_client_keepalive_timeout_ms =
125
- DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS;
126
- static int g_default_server_keepalive_time_ms =
127
- DEFAULT_SERVER_KEEPALIVE_TIME_MS;
128
- static int g_default_server_keepalive_timeout_ms =
129
- DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS;
130
- static bool g_default_client_keepalive_permit_without_calls =
131
- DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
132
- static bool g_default_server_keepalive_permit_without_calls =
133
- DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
134
-
135
- static int g_default_min_recv_ping_interval_without_data_ms =
136
- DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
137
- static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
138
- static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
126
+ #define GRPC_ARG_HTTP2_PING_ON_RST_STREAM_PERCENT \
127
+ "grpc.http2.ping_on_rst_stream_percent"
128
+
129
+ static grpc_core::Duration g_default_client_keepalive_time =
130
+ grpc_core::Duration::Infinity();
131
+ static grpc_core::Duration g_default_client_keepalive_timeout =
132
+ grpc_core::Duration::Seconds(20);
133
+ static grpc_core::Duration g_default_server_keepalive_time =
134
+ grpc_core::Duration::Hours(2);
135
+ static grpc_core::Duration g_default_server_keepalive_timeout =
136
+ grpc_core::Duration::Seconds(20);
137
+ static bool g_default_client_keepalive_permit_without_calls = false;
138
+ static bool g_default_server_keepalive_permit_without_calls = false;
139
+
140
+ // EXPERIMENTAL: control tarpitting in chttp2
141
+ #define GRPC_ARG_HTTP_ALLOW_TARPIT "grpc.http.tarpit"
142
+ #define GRPC_ARG_HTTP_TARPIT_MIN_DURATION_MS "grpc.http.tarpit_min_duration_ms"
143
+ #define GRPC_ARG_HTTP_TARPIT_MAX_DURATION_MS "grpc.http.tarpit_max_duration_ms"
139
144
 
140
145
  #define MAX_CLIENT_STREAM_ID 0x7fffffffu
141
146
  grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
@@ -143,21 +148,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
143
148
  "chttp2_refcount");
144
149
 
145
150
  // forward declarations of various callbacks that we'll build closures around
146
- static void write_action_begin_locked(void* t, grpc_error_handle error);
147
- static void write_action(void* t, grpc_error_handle error);
148
- static void write_action_end(void* t, grpc_error_handle error);
149
- static void write_action_end_locked(void* t, grpc_error_handle error);
150
-
151
- static void read_action(void* t, grpc_error_handle error);
152
- static void read_action_locked(void* t, grpc_error_handle error);
153
- static void continue_read_action_locked(grpc_chttp2_transport* t);
154
-
155
- // Set a transport level setting, and push it to our peer
156
- static void queue_setting_update(grpc_chttp2_transport* t,
157
- grpc_chttp2_setting_id id, uint32_t value);
151
+ static void write_action_begin_locked(
152
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
153
+ static void write_action(grpc_chttp2_transport* t);
154
+ static void write_action_end(grpc_core::RefCountedPtr<grpc_chttp2_transport>,
155
+ grpc_error_handle error);
156
+ static void write_action_end_locked(
157
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
158
+
159
+ static void read_action(grpc_core::RefCountedPtr<grpc_chttp2_transport>,
160
+ grpc_error_handle error);
161
+ static void read_action_locked(grpc_core::RefCountedPtr<grpc_chttp2_transport>,
162
+ grpc_error_handle error);
163
+ static void continue_read_action_locked(
164
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t);
158
165
 
159
166
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
160
- grpc_error_handle error);
167
+ grpc_error_handle error, bool tarpit);
161
168
 
162
169
  // Start new streams that have been created if we can
163
170
  static void maybe_start_some_streams(grpc_chttp2_transport* t);
@@ -167,8 +174,10 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
167
174
  const absl::Status& status,
168
175
  const char* reason);
169
176
 
170
- static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
171
- static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
177
+ static void benign_reclaimer_locked(
178
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
179
+ static void destructive_reclaimer_locked(
180
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
172
181
 
173
182
  static void post_benign_reclaimer(grpc_chttp2_transport* t);
174
183
  static void post_destructive_reclaimer(grpc_chttp2_transport* t);
@@ -178,42 +187,75 @@ static void close_transport_locked(grpc_chttp2_transport* t,
178
187
  static void end_all_the_calls(grpc_chttp2_transport* t,
179
188
  grpc_error_handle error);
180
189
 
181
- static void start_bdp_ping(void* tp, grpc_error_handle error);
182
- static void finish_bdp_ping(void* tp, grpc_error_handle error);
183
- static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
184
- static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
190
+ static void start_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport>,
191
+ grpc_error_handle error);
192
+ static void finish_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport>,
193
+ grpc_error_handle error);
194
+ static void start_bdp_ping_locked(
195
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
196
+ static void finish_bdp_ping_locked(
197
+ grpc_core::RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle error);
185
198
  static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t);
186
199
  static void next_bdp_ping_timer_expired_locked(
187
- void* tp, GRPC_UNUSED grpc_error_handle error);
200
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> tp,
201
+ GRPC_UNUSED grpc_error_handle error);
188
202
 
189
203
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
190
204
  static void send_ping_locked(grpc_chttp2_transport* t,
191
205
  grpc_closure* on_initiate, grpc_closure* on_ack);
192
- static void retry_initiate_ping_locked(void* tp,
193
- GRPC_UNUSED grpc_error_handle error);
206
+ static void retry_initiate_ping_locked(
207
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
208
+ GRPC_UNUSED grpc_error_handle error);
194
209
 
195
210
  // keepalive-relevant functions
196
- static void init_keepalive_ping(grpc_chttp2_transport* t);
197
- static void init_keepalive_ping_locked(void* arg,
198
- GRPC_UNUSED grpc_error_handle error);
199
- static void start_keepalive_ping(void* arg, grpc_error_handle error);
200
- static void finish_keepalive_ping(void* arg, grpc_error_handle error);
201
- static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
202
- static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
203
- static void keepalive_watchdog_fired(grpc_chttp2_transport* t);
204
- static void keepalive_watchdog_fired_locked(
205
- void* arg, GRPC_UNUSED grpc_error_handle error);
211
+ static void init_keepalive_ping(
212
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t);
213
+ static void init_keepalive_ping_locked(
214
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
215
+ GRPC_UNUSED grpc_error_handle error);
216
+ static void finish_keepalive_ping(
217
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t, grpc_error_handle error);
218
+ static void finish_keepalive_ping_locked(
219
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t, grpc_error_handle error);
206
220
  static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t);
207
221
 
222
+ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
223
+ bool immediate_disconnect_hint);
224
+
225
+ // Timeout for getting an ack back on settings changes
226
+ #define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
227
+
208
228
  namespace {
209
- grpc_core::CallTracerInterface* CallTracerIfEnabled(grpc_chttp2_stream* s) {
229
+
230
+ using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
231
+
232
+ grpc_core::CallTracerInterface* CallTracerIfSampled(grpc_chttp2_stream* s) {
210
233
  if (s->context == nullptr || !grpc_core::IsTraceRecordCallopsEnabled()) {
211
234
  return nullptr;
212
235
  }
213
- return static_cast<grpc_core::CallTracerInterface*>(
236
+ auto* call_tracer = static_cast<grpc_core::CallTracerInterface*>(
214
237
  static_cast<grpc_call_context_element*>(
215
238
  s->context)[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE]
216
239
  .value);
240
+ if (call_tracer == nullptr || !call_tracer->IsSampled()) {
241
+ return nullptr;
242
+ }
243
+ return call_tracer;
244
+ }
245
+
246
+ std::shared_ptr<grpc_core::TcpTracerInterface> TcpTracerIfSampled(
247
+ grpc_chttp2_stream* s) {
248
+ if (s->context == nullptr || !grpc_core::IsTraceRecordCallopsEnabled()) {
249
+ return nullptr;
250
+ }
251
+ auto* call_attempt_tracer = static_cast<grpc_core::CallTracerInterface*>(
252
+ static_cast<grpc_call_context_element*>(
253
+ s->context)[GRPC_CONTEXT_CALL_TRACER]
254
+ .value);
255
+ if (call_attempt_tracer == nullptr || !call_attempt_tracer->IsSampled()) {
256
+ return nullptr;
257
+ }
258
+ return call_attempt_tracer->StartNewTcpTrace();
217
259
  }
218
260
 
219
261
  grpc_core::WriteTimestampsCallback g_write_timestamps_callback = nullptr;
@@ -222,6 +264,24 @@ grpc_core::CopyContextFn g_get_copied_context_fn = nullptr;
222
264
 
223
265
  namespace grpc_core {
224
266
 
267
+ namespace {
268
+ // Initialize a grpc_closure \a c to call \a Fn with \a t and \a error. Holds
269
+ // the passed in reference to \a t until it's moved into Fn.
270
+ template <void (*Fn)(RefCountedPtr<grpc_chttp2_transport>, grpc_error_handle)>
271
+ grpc_closure* InitTransportClosure(RefCountedPtr<grpc_chttp2_transport> t,
272
+ grpc_closure* c) {
273
+ GRPC_CLOSURE_INIT(
274
+ c,
275
+ [](void* tp, grpc_error_handle error) {
276
+ Fn(RefCountedPtr<grpc_chttp2_transport>(
277
+ static_cast<grpc_chttp2_transport*>(tp)),
278
+ std::move(error));
279
+ },
280
+ t.release(), nullptr);
281
+ return c;
282
+ }
283
+ } // namespace
284
+
225
285
  namespace {
226
286
  TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
227
287
  TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
@@ -278,6 +338,42 @@ void ForEachContextListEntryExecute(void* arg, Timestamps* ts,
278
338
  delete context_list;
279
339
  }
280
340
 
341
+ HttpAnnotation::HttpAnnotation(
342
+ Type type, gpr_timespec time,
343
+ absl::optional<chttp2::TransportFlowControl::Stats> transport_stats,
344
+ absl::optional<chttp2::StreamFlowControl::Stats> stream_stats)
345
+ : CallTracerAnnotationInterface::Annotation(
346
+ CallTracerAnnotationInterface::AnnotationType::kHttpTransport),
347
+ type_(type),
348
+ time_(time),
349
+ transport_stats_(transport_stats),
350
+ stream_stats_(stream_stats) {}
351
+
352
+ std::string HttpAnnotation::ToString() const {
353
+ std::string s = "HttpAnnotation type: ";
354
+ switch (type_) {
355
+ case Type::kStart:
356
+ absl::StrAppend(&s, "Start");
357
+ break;
358
+ case Type::kHeadWritten:
359
+ absl::StrAppend(&s, "HeadWritten");
360
+ break;
361
+ case Type::kEnd:
362
+ absl::StrAppend(&s, "End");
363
+ break;
364
+ default:
365
+ absl::StrAppend(&s, "Unknown");
366
+ }
367
+ absl::StrAppend(&s, " time: ", gpr_format_timespec(time_));
368
+ if (transport_stats_.has_value()) {
369
+ absl::StrAppend(&s, " transport:[", transport_stats_->ToString(), "]");
370
+ }
371
+ if (stream_stats_.has_value()) {
372
+ absl::StrAppend(&s, " stream:[", stream_stats_->ToString(), "]");
373
+ }
374
+ return s;
375
+ }
376
+
281
377
  } // namespace grpc_core
282
378
 
283
379
  //
@@ -287,6 +383,8 @@ void ForEachContextListEntryExecute(void* arg, Timestamps* ts,
287
383
  grpc_chttp2_transport::~grpc_chttp2_transport() {
288
384
  size_t i;
289
385
 
386
+ cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
387
+
290
388
  event_engine.reset();
291
389
 
292
390
  if (channelz_socket != nullptr) {
@@ -297,8 +395,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
297
395
 
298
396
  grpc_slice_buffer_destroy(&qbuf);
299
397
 
300
- grpc_slice_buffer_destroy(&outbuf);
301
-
302
398
  grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
303
399
  // ContextList::Execute follows semantics of a callback function and does not
304
400
  // take a ref on error
@@ -315,14 +411,9 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
315
411
  GPR_ASSERT(lists[i].tail == nullptr);
316
412
  }
317
413
 
318
- GPR_ASSERT(grpc_chttp2_stream_map_size(&stream_map) == 0);
319
-
320
- grpc_chttp2_stream_map_destroy(&stream_map);
321
-
414
+ GPR_ASSERT(stream_map.empty());
322
415
  GRPC_COMBINER_UNREF(combiner, "chttp2_transport");
323
416
 
324
- cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
325
-
326
417
  while (write_cb_pool) {
327
418
  grpc_chttp2_write_cb* next = write_cb_pool->next;
328
419
  gpr_free(write_cb_pool);
@@ -335,8 +426,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
335
426
  }
336
427
  }
337
428
 
338
- static const grpc_transport_vtable* get_vtable(void);
339
-
340
429
  static void read_channel_args(grpc_chttp2_transport* t,
341
430
  const grpc_core::ChannelArgs& channel_args,
342
431
  bool is_client) {
@@ -358,37 +447,46 @@ static void read_channel_args(grpc_chttp2_transport* t,
358
447
  t->hpack_compressor.SetMaxUsableSize(max_hpack_table_size);
359
448
  }
360
449
 
361
- t->ping_policy.max_pings_without_data =
362
- std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
363
- .value_or(g_default_max_pings_without_data));
364
- t->ping_policy.max_ping_strikes =
365
- std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PING_STRIKES)
366
- .value_or(g_default_max_ping_strikes));
367
- t->ping_policy.min_recv_ping_interval_without_data =
368
- std::max(grpc_core::Duration::Zero(),
369
- channel_args
370
- .GetDurationFromIntMillis(
371
- GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)
372
- .value_or(grpc_core::Duration::Milliseconds(
373
- g_default_min_recv_ping_interval_without_data_ms)));
374
450
  t->write_buffer_size =
375
451
  std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)
376
452
  .value_or(grpc_core::chttp2::kDefaultWindow));
377
453
  t->keepalive_time =
378
454
  std::max(grpc_core::Duration::Milliseconds(1),
379
455
  channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
380
- .value_or(grpc_core::Duration::Milliseconds(
381
- t->is_client ? g_default_client_keepalive_time_ms
382
- : g_default_server_keepalive_time_ms)));
456
+ .value_or(t->is_client ? g_default_client_keepalive_time
457
+ : g_default_server_keepalive_time));
383
458
  t->keepalive_timeout = std::max(
384
459
  grpc_core::Duration::Zero(),
385
460
  channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
386
- .value_or(grpc_core::Duration::Milliseconds(
387
- t->is_client ? g_default_client_keepalive_timeout_ms
388
- : g_default_server_keepalive_timeout_ms)));
389
- t->keepalive_permit_without_calls =
390
- channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
391
- .value_or(false);
461
+ .value_or(t->keepalive_time == grpc_core::Duration::Infinity()
462
+ ? grpc_core::Duration::Infinity()
463
+ : (t->is_client ? g_default_client_keepalive_timeout
464
+ : g_default_server_keepalive_timeout)));
465
+ t->ping_timeout = std::max(
466
+ grpc_core::Duration::Zero(),
467
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_PING_TIMEOUT_MS)
468
+ .value_or(t->keepalive_time == grpc_core::Duration::Infinity()
469
+ ? grpc_core::Duration::Infinity()
470
+ : grpc_core::Duration::Minutes(1)));
471
+ if (t->is_client) {
472
+ t->keepalive_permit_without_calls =
473
+ channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
474
+ .value_or(grpc_core::IsKeepaliveFixEnabled()
475
+ ? g_default_client_keepalive_permit_without_calls
476
+ : false);
477
+ } else {
478
+ t->keepalive_permit_without_calls =
479
+ channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
480
+ .value_or(grpc_core::IsKeepaliveServerFixEnabled()
481
+ ? g_default_server_keepalive_permit_without_calls
482
+ : false);
483
+ }
484
+
485
+ t->settings_timeout =
486
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_SETTINGS_TIMEOUT)
487
+ .value_or(std::max(t->keepalive_timeout * 2,
488
+ grpc_core::Duration::Minutes(1)));
489
+
392
490
  // Only send the prefered rx frame size http2 setting if we are instructed
393
491
  // to auto size the buffers allocated at tcp level and we also can adjust
394
492
  // sending frame size.
@@ -397,13 +495,22 @@ static void read_channel_args(grpc_chttp2_transport* t,
397
495
  .GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
398
496
  .value_or(false);
399
497
 
498
+ const auto max_requests_per_read =
499
+ channel_args.GetInt("grpc.http2.max_requests_per_read");
500
+ if (max_requests_per_read.has_value()) {
501
+ t->max_requests_per_read =
502
+ grpc_core::Clamp(*max_requests_per_read, 1, 10000);
503
+ } else {
504
+ t->max_requests_per_read = 32;
505
+ }
506
+
400
507
  if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
401
508
  .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
402
509
  t->channelz_socket =
403
510
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
404
511
  std::string(grpc_endpoint_get_local_address(t->ep)),
405
512
  std::string(t->peer_string.as_string_view()),
406
- absl::StrCat(get_vtable()->name, " ",
513
+ absl::StrCat(t->GetTransportName(), " ",
407
514
  t->peer_string.as_string_view()),
408
515
  channel_args
409
516
  .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
@@ -411,6 +518,19 @@ static void read_channel_args(grpc_chttp2_transport* t,
411
518
 
412
519
  t->ack_pings = channel_args.GetBool("grpc.http2.ack_pings").value_or(true);
413
520
 
521
+ t->allow_tarpit =
522
+ channel_args.GetBool(GRPC_ARG_HTTP_ALLOW_TARPIT).value_or(true);
523
+ t->min_tarpit_duration_ms =
524
+ channel_args
525
+ .GetDurationFromIntMillis(GRPC_ARG_HTTP_TARPIT_MIN_DURATION_MS)
526
+ .value_or(grpc_core::Duration::Milliseconds(100))
527
+ .millis();
528
+ t->max_tarpit_duration_ms =
529
+ channel_args
530
+ .GetDurationFromIntMillis(GRPC_ARG_HTTP_TARPIT_MAX_DURATION_MS)
531
+ .value_or(grpc_core::Duration::Seconds(1))
532
+ .millis();
533
+
414
534
  const int soft_limit =
415
535
  channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
416
536
  if (soft_limit < 0) {
@@ -426,138 +546,77 @@ static void read_channel_args(grpc_chttp2_transport* t,
426
546
  t->max_header_list_size_soft_limit = soft_limit;
427
547
  }
428
548
 
429
- static const struct {
430
- absl::string_view channel_arg_name;
431
- grpc_chttp2_setting_id setting_id;
432
- int default_value;
433
- int min;
434
- int max;
435
- bool availability[2] /* server, client */;
436
- } settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
437
- GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
438
- -1,
439
- 0,
440
- INT32_MAX,
441
- {true, false}},
442
- {GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
443
- GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
444
- -1,
445
- 0,
446
- INT32_MAX,
447
- {true, true}},
448
- {GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE,
449
- GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
450
- -1,
451
- 0,
452
- INT32_MAX,
453
- {true, true}},
454
- {GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
455
- GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
456
- -1,
457
- 16384,
458
- 16777215,
459
- {true, true}},
460
- {GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
461
- GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
462
- 1,
463
- 0,
464
- 1,
465
- {true, true}},
466
- {GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
467
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
468
- -1,
469
- 5,
470
- INT32_MAX,
471
- {true, true}}};
472
-
473
- for (size_t i = 0; i < GPR_ARRAY_SIZE(settings_map); i++) {
474
- const auto& setting = settings_map[i];
475
- if (setting.availability[is_client]) {
476
- const int value = channel_args.GetInt(setting.channel_arg_name)
477
- .value_or(setting.default_value);
478
- if (value >= 0) {
479
- queue_setting_update(t, setting.setting_id,
480
- grpc_core::Clamp(value, setting.min, setting.max));
481
- } else if (setting.setting_id ==
482
- GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE) {
483
- // Set value to 1.25 * soft limit if this is larger than
484
- // `DEFAULT_MAX_HEADER_LIST_SIZE` and
485
- // `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
486
- const int soft_limit = channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE)
487
- .value_or(setting.default_value);
488
- const int value = (soft_limit >= 0 && soft_limit < (INT_MAX / 1.25))
489
- ? static_cast<int>(soft_limit * 1.25)
490
- : soft_limit;
491
- if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
492
- queue_setting_update(
493
- t, setting.setting_id,
494
- grpc_core::Clamp(value, setting.min, setting.max));
495
- }
496
- }
497
- } else if (channel_args.Contains(setting.channel_arg_name)) {
498
- gpr_log(GPR_DEBUG, "%s is not available on %s",
499
- std::string(setting.channel_arg_name).c_str(),
500
- is_client ? "clients" : "servers");
549
+ int value;
550
+ if (!is_client) {
551
+ value = channel_args.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS).value_or(-1);
552
+ if (value >= 0) {
553
+ t->settings.mutable_local().SetMaxConcurrentStreams(value);
554
+ t->max_concurrent_streams_policy.SetTarget(value);
555
+ }
556
+ } else if (channel_args.Contains(GRPC_ARG_MAX_CONCURRENT_STREAMS)) {
557
+ gpr_log(GPR_DEBUG, "%s is not available on clients",
558
+ GRPC_ARG_MAX_CONCURRENT_STREAMS);
559
+ }
560
+ value =
561
+ channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER).value_or(-1);
562
+ if (value >= 0) {
563
+ t->settings.mutable_local().SetHeaderTableSize(value);
564
+ }
565
+ value = channel_args.GetInt(GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE).value_or(-1);
566
+ if (value >= 0) {
567
+ t->settings.mutable_local().SetMaxHeaderListSize(value);
568
+ } else {
569
+ // Set value to 1.25 * soft limit if this is larger than
570
+ // `DEFAULT_MAX_HEADER_LIST_SIZE` and
571
+ // `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
572
+ const int soft_limit =
573
+ channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
574
+ const int value = (soft_limit >= 0 && soft_limit < (INT_MAX / 1.25))
575
+ ? static_cast<int>(soft_limit * 1.25)
576
+ : soft_limit;
577
+ if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
578
+ t->settings.mutable_local().SetMaxHeaderListSize(value);
501
579
  }
502
580
  }
581
+ value = channel_args.GetInt(GRPC_ARG_HTTP2_MAX_FRAME_SIZE).value_or(-1);
582
+ if (value >= 0) {
583
+ t->settings.mutable_local().SetMaxFrameSize(value);
584
+ }
585
+ value =
586
+ channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES).value_or(-1);
587
+ if (value >= 0) {
588
+ t->settings.mutable_local().SetInitialWindowSize(value);
589
+ }
590
+ value = channel_args.GetInt(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY).value_or(-1);
591
+ if (value >= 0) {
592
+ t->settings.mutable_local().SetAllowTrueBinaryMetadata(value != 0);
593
+ }
503
594
 
504
595
  if (t->enable_preferred_rx_crypto_frame_advertisement) {
505
- const grpc_chttp2_setting_parameters* sp =
506
- &grpc_chttp2_settings_parameters
507
- [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
508
- queue_setting_update(
509
- t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
510
- grpc_core::Clamp(INT_MAX, static_cast<int>(sp->min_value),
511
- static_cast<int>(sp->max_value)));
596
+ t->settings.mutable_local().SetPreferredReceiveCryptoMessageSize(INT_MAX);
512
597
  }
513
- }
514
598
 
515
- static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
516
- if (t->is_client) {
517
- t->keepalive_time = g_default_client_keepalive_time_ms == INT_MAX
518
- ? grpc_core::Duration::Infinity()
519
- : grpc_core::Duration::Milliseconds(
520
- g_default_client_keepalive_time_ms);
521
- t->keepalive_timeout = g_default_client_keepalive_timeout_ms == INT_MAX
522
- ? grpc_core::Duration::Infinity()
523
- : grpc_core::Duration::Milliseconds(
524
- g_default_client_keepalive_timeout_ms);
525
- t->keepalive_permit_without_calls =
526
- g_default_client_keepalive_permit_without_calls;
527
- } else {
528
- t->keepalive_time = g_default_server_keepalive_time_ms == INT_MAX
529
- ? grpc_core::Duration::Infinity()
530
- : grpc_core::Duration::Milliseconds(
531
- g_default_server_keepalive_time_ms);
532
- t->keepalive_timeout = g_default_server_keepalive_timeout_ms == INT_MAX
533
- ? grpc_core::Duration::Infinity()
534
- : grpc_core::Duration::Milliseconds(
535
- g_default_server_keepalive_timeout_ms);
536
- t->keepalive_permit_without_calls =
537
- g_default_server_keepalive_permit_without_calls;
538
- }
539
- }
599
+ t->ping_on_rst_stream_percent = grpc_core::Clamp(
600
+ channel_args.GetInt(GRPC_ARG_HTTP2_PING_ON_RST_STREAM_PERCENT)
601
+ .value_or(1),
602
+ 0, 100);
540
603
 
541
- static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
542
- t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
543
- t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
544
- t->ping_policy.min_recv_ping_interval_without_data =
545
- grpc_core::Duration::Milliseconds(
546
- g_default_min_recv_ping_interval_without_data_ms);
604
+ t->max_concurrent_streams_overload_protection =
605
+ channel_args.GetBool(GRPC_ARG_MAX_CONCURRENT_STREAMS_OVERLOAD_PROTECTION)
606
+ .value_or(true);
547
607
  }
548
608
 
549
609
  static void init_keepalive_pings_if_enabled_locked(
550
- void* arg, GRPC_UNUSED grpc_error_handle error) {
610
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
611
+ GRPC_UNUSED grpc_error_handle error) {
551
612
  GPR_DEBUG_ASSERT(error.ok());
552
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
553
613
  if (t->keepalive_time != grpc_core::Duration::Infinity()) {
554
614
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
555
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
556
615
  t->keepalive_ping_timer_handle =
557
- t->event_engine->RunAfter(t->keepalive_time, [t] {
616
+ t->event_engine->RunAfter(t->keepalive_time, [t = t->Ref()]() mutable {
558
617
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
559
618
  grpc_core::ExecCtx exec_ctx;
560
- init_keepalive_ping(t);
619
+ init_keepalive_ping(std::move(t));
561
620
  });
562
621
  } else {
563
622
  // Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
@@ -569,85 +628,66 @@ static void init_keepalive_pings_if_enabled_locked(
569
628
  grpc_chttp2_transport::grpc_chttp2_transport(
570
629
  const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
571
630
  bool is_client)
572
- : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
573
- ? "chttp2_refcount"
574
- : nullptr),
631
+ : grpc_core::RefCounted<grpc_chttp2_transport,
632
+ grpc_core::NonPolymorphicRefCount>(
633
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
634
+ ? "chttp2_refcount"
635
+ : nullptr),
575
636
  ep(ep),
576
637
  peer_string(
577
638
  grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
578
639
  memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
579
640
  ->memory_quota()
580
- ->CreateMemoryOwner(absl::StrCat(
581
- grpc_endpoint_get_peer(ep), ":client_transport"))),
641
+ ->CreateMemoryOwner()),
582
642
  self_reservation(
583
643
  memory_owner.MakeReservation(sizeof(grpc_chttp2_transport))),
584
- combiner(grpc_combiner_create()),
644
+ event_engine(
645
+ channel_args
646
+ .GetObjectRef<grpc_event_engine::experimental::EventEngine>()),
647
+ combiner(grpc_combiner_create(event_engine)),
585
648
  state_tracker(is_client ? "client_transport" : "server_transport",
586
649
  GRPC_CHANNEL_READY),
587
- is_client(is_client),
588
650
  next_stream_id(is_client ? 1 : 2),
651
+ ping_abuse_policy(channel_args),
652
+ ping_rate_policy(channel_args, is_client),
589
653
  flow_control(
590
654
  peer_string.as_string_view(),
591
655
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
592
656
  &memory_owner),
593
657
  deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
594
- event_engine(
595
- channel_args
596
- .GetObjectRef<grpc_event_engine::experimental::EventEngine>()) {
658
+ is_client(is_client) {
597
659
  cl = new grpc_core::ContextList();
598
660
  GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
599
661
  GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
600
- base.vtable = get_vtable();
601
- // 8 is a random stab in the dark as to a good initial size: it's small enough
602
- // that it shouldn't waste memory for infrequently used connections, yet
603
- // large enough that the exponential growth should happen nicely when it's
604
- // needed.
605
- // TODO(ctiller): tune this
606
- grpc_chttp2_stream_map_init(&stream_map, 8);
607
662
 
608
663
  grpc_slice_buffer_init(&read_buffer);
609
- grpc_slice_buffer_init(&outbuf);
610
664
  if (is_client) {
611
- grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
612
- GRPC_CHTTP2_CLIENT_CONNECT_STRING));
665
+ grpc_slice_buffer_add(
666
+ outbuf.c_slice_buffer(),
667
+ grpc_slice_from_copied_string(GRPC_CHTTP2_CLIENT_CONNECT_STRING));
613
668
  }
614
669
  grpc_slice_buffer_init(&qbuf);
615
- // copy in initial settings to all setting sets
616
- size_t i;
617
- int j;
618
- for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
619
- for (j = 0; j < GRPC_NUM_SETTING_SETS; j++) {
620
- settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
621
- }
622
- }
623
670
  grpc_chttp2_goaway_parser_init(&goaway_parser);
624
671
 
625
672
  // configure http2 the way we like it
626
673
  if (is_client) {
627
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
628
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
674
+ settings.mutable_local().SetEnablePush(false);
675
+ settings.mutable_local().SetMaxConcurrentStreams(0);
629
676
  }
630
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
631
- DEFAULT_MAX_HEADER_LIST_SIZE);
632
- queue_setting_update(this,
633
- GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA, 1);
634
-
635
- configure_transport_ping_policy(this);
636
- init_transport_keepalive_settings(this);
677
+ settings.mutable_local().SetMaxHeaderListSize(DEFAULT_MAX_HEADER_LIST_SIZE);
678
+ settings.mutable_local().SetAllowTrueBinaryMetadata(true);
637
679
 
638
680
  read_channel_args(this, channel_args, is_client);
639
681
 
640
- // No pings allowed before receiving a header or data frame.
641
- ping_state.pings_before_data_required = 0;
642
- ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
643
-
644
- ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
645
- ping_recv_state.ping_strikes = 0;
682
+ // Initially allow *UP TO* MAX_CONCURRENT_STREAMS incoming before we start
683
+ // blanket cancelling them.
684
+ num_incoming_streams_before_settings_ack =
685
+ settings.local().max_concurrent_streams();
646
686
 
647
687
  grpc_core::ExecCtx exec_ctx;
648
688
  combiner->Run(
649
- GRPC_CLOSURE_INIT(&init_keepalive_ping_locked,
650
- init_keepalive_pings_if_enabled_locked, this, nullptr),
689
+ grpc_core::InitTransportClosure<init_keepalive_pings_if_enabled_locked>(
690
+ Ref(), &init_keepalive_ping_locked),
651
691
  absl::OkStatus());
652
692
 
653
693
  if (flow_control.bdp_probe()) {
@@ -672,21 +712,20 @@ grpc_chttp2_transport::grpc_chttp2_transport(
672
712
  }
673
713
 
674
714
  static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
675
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
715
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t(
716
+ static_cast<grpc_chttp2_transport*>(tp));
676
717
  t->destroying = 1;
677
718
  close_transport_locked(
678
- t, grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
679
- grpc_core::StatusIntProperty::kOccurredDuringWrite,
680
- t->write_state));
719
+ t.get(),
720
+ grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
721
+ grpc_core::StatusIntProperty::kOccurredDuringWrite,
722
+ t->write_state));
681
723
  t->memory_owner.Reset();
682
- // Must be the last line.
683
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
684
724
  }
685
725
 
686
- static void destroy_transport(grpc_transport* gt) {
687
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
688
- t->combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, nullptr),
689
- absl::OkStatus());
726
+ void grpc_chttp2_transport::Orphan() {
727
+ combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, this, nullptr),
728
+ absl::OkStatus());
690
729
  }
691
730
 
692
731
  static void close_transport_locked(grpc_chttp2_transport* t,
@@ -712,39 +751,33 @@ static void close_transport_locked(grpc_chttp2_transport* t,
712
751
  t->closed_with_error = error;
713
752
  connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
714
753
  "close_transport");
715
- if (t->ping_state.delayed_ping_timer_handle.has_value()) {
716
- if (t->event_engine->Cancel(*t->ping_state.delayed_ping_timer_handle)) {
717
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
718
- t->ping_state.delayed_ping_timer_handle.reset();
719
- }
754
+ if (t->keepalive_ping_timeout_handle != TaskHandle::kInvalid) {
755
+ t->event_engine->Cancel(std::exchange(t->keepalive_ping_timeout_handle,
756
+ TaskHandle::kInvalid));
720
757
  }
721
- if (t->next_bdp_ping_timer_handle.has_value()) {
722
- if (t->event_engine->Cancel(*t->next_bdp_ping_timer_handle)) {
723
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
724
- t->next_bdp_ping_timer_handle.reset();
725
- }
758
+ if (t->settings_ack_watchdog != TaskHandle::kInvalid) {
759
+ t->event_engine->Cancel(
760
+ std::exchange(t->settings_ack_watchdog, TaskHandle::kInvalid));
761
+ }
762
+ if (t->delayed_ping_timer_handle != TaskHandle::kInvalid &&
763
+ t->event_engine->Cancel(t->delayed_ping_timer_handle)) {
764
+ t->delayed_ping_timer_handle = TaskHandle::kInvalid;
765
+ }
766
+ if (t->next_bdp_ping_timer_handle != TaskHandle::kInvalid &&
767
+ t->event_engine->Cancel(t->next_bdp_ping_timer_handle)) {
768
+ t->next_bdp_ping_timer_handle = TaskHandle::kInvalid;
726
769
  }
727
770
  switch (t->keepalive_state) {
728
771
  case GRPC_CHTTP2_KEEPALIVE_STATE_WAITING:
729
- if (t->keepalive_ping_timer_handle.has_value()) {
730
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
731
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
732
- t->keepalive_ping_timer_handle.reset();
733
- }
772
+ if (t->keepalive_ping_timer_handle != TaskHandle::kInvalid &&
773
+ t->event_engine->Cancel(t->keepalive_ping_timer_handle)) {
774
+ t->keepalive_ping_timer_handle = TaskHandle::kInvalid;
734
775
  }
735
776
  break;
736
777
  case GRPC_CHTTP2_KEEPALIVE_STATE_PINGING:
737
- if (t->keepalive_ping_timer_handle.has_value()) {
738
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
739
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
740
- t->keepalive_ping_timer_handle.reset();
741
- }
742
- }
743
- if (t->keepalive_watchdog_timer_handle.has_value()) {
744
- if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
745
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
746
- t->keepalive_watchdog_timer_handle.reset();
747
- }
778
+ if (t->keepalive_ping_timer_handle != TaskHandle::kInvalid &&
779
+ t->event_engine->Cancel(t->keepalive_ping_timer_handle)) {
780
+ t->keepalive_ping_timer_handle = TaskHandle::kInvalid;
748
781
  }
749
782
  break;
750
783
  case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
@@ -788,24 +821,27 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
788
821
  }
789
822
  #endif
790
823
 
791
- grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
792
- // We reserve one 'active stream' that's dropped when the stream is
793
- // read-closed. The others are for Chttp2IncomingByteStreams that are
794
- // actively reading
795
- GRPC_CHTTP2_STREAM_REF(s, "chttp2");
796
- GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
797
- }
798
-
799
824
  grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
800
825
  grpc_stream_refcount* refcount,
801
826
  const void* server_data,
802
827
  grpc_core::Arena* arena)
803
- : t(t),
804
- refcount(refcount),
805
- reffer(this),
828
+ : t(t->Ref()),
829
+ refcount([refcount]() {
830
+ // We reserve one 'active stream' that's dropped when the stream is
831
+ // read-closed. The others are for Chttp2IncomingByteStreams that are
832
+ // actively reading
833
+ // We do this here to avoid cache misses.
834
+ #ifndef NDEBUG
835
+ grpc_stream_ref(refcount, "chttp2");
836
+ #else
837
+ grpc_stream_ref(refcount);
838
+ #endif
839
+ return refcount;
840
+ }()),
806
841
  initial_metadata_buffer(arena),
807
842
  trailing_metadata_buffer(arena),
808
843
  flow_control(&t->flow_control) {
844
+ t->streams_allocated.fetch_add(1, std::memory_order_relaxed);
809
845
  if (server_data) {
810
846
  id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
811
847
  if (grpc_http_trace.enabled()) {
@@ -813,7 +849,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
813
849
  this, id, server_data);
814
850
  }
815
851
  *t->accepting_stream = this;
816
- grpc_chttp2_stream_map_add(&t->stream_map, id, this);
852
+ t->stream_map.emplace(id, this);
817
853
  post_destructive_reclaimer(t);
818
854
  }
819
855
 
@@ -822,8 +858,9 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
822
858
  }
823
859
 
824
860
  grpc_chttp2_stream::~grpc_chttp2_stream() {
825
- grpc_chttp2_list_remove_stalled_by_stream(t, this);
826
- grpc_chttp2_list_remove_stalled_by_transport(t, this);
861
+ t->streams_allocated.fetch_sub(1, std::memory_order_relaxed);
862
+ grpc_chttp2_list_remove_stalled_by_stream(t.get(), this);
863
+ grpc_chttp2_list_remove_stalled_by_transport(t.get(), this);
827
864
 
828
865
  if (t->channelz_socket != nullptr) {
829
866
  if ((t->is_client && eos_received) || (!t->is_client && eos_sent)) {
@@ -835,7 +872,7 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
835
872
 
836
873
  GPR_ASSERT((write_closed && read_closed) || id == 0);
837
874
  if (id != 0) {
838
- GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
875
+ GPR_ASSERT(t->stream_map.count(id) == 0);
839
876
  }
840
877
 
841
878
  grpc_slice_buffer_destroy(&frame_storage);
@@ -854,16 +891,14 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
854
891
  GPR_ASSERT(recv_message_ready == nullptr);
855
892
  GPR_ASSERT(recv_trailing_metadata_finished == nullptr);
856
893
  grpc_slice_buffer_destroy(&flow_controlled_buffer);
857
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
858
894
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus());
859
895
  }
860
896
 
861
- static int init_stream(grpc_transport* gt, grpc_stream* gs,
862
- grpc_stream_refcount* refcount, const void* server_data,
863
- grpc_core::Arena* arena) {
864
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
865
- new (gs) grpc_chttp2_stream(t, refcount, server_data, arena);
866
- return 0;
897
+ void grpc_chttp2_transport::InitStream(grpc_stream* gs,
898
+ grpc_stream_refcount* refcount,
899
+ const void* server_data,
900
+ grpc_core::Arena* arena) {
901
+ new (gs) grpc_chttp2_stream(this, refcount, server_data, arena);
867
902
  }
868
903
 
869
904
  static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
@@ -871,13 +906,12 @@ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
871
906
  s->~grpc_chttp2_stream();
872
907
  }
873
908
 
874
- static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
875
- grpc_closure* then_schedule_closure) {
876
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
909
+ void grpc_chttp2_transport::DestroyStream(grpc_stream* gs,
910
+ grpc_closure* then_schedule_closure) {
877
911
  grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
878
912
 
879
913
  s->destroy_stream_arg = then_schedule_closure;
880
- t->combiner->Run(
914
+ combiner->Run(
881
915
  GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, nullptr),
882
916
  absl::OkStatus());
883
917
  }
@@ -890,7 +924,7 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
890
924
  grpc_chttp2_stream* accepting = nullptr;
891
925
  GPR_ASSERT(t->accepting_stream == nullptr);
892
926
  t->accepting_stream = &accepting;
893
- t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
927
+ t->accept_stream_cb(t->accept_stream_cb_user_data, t,
894
928
  reinterpret_cast<void*>(id));
895
929
  t->accepting_stream = nullptr;
896
930
  return accepting;
@@ -942,7 +976,6 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
942
976
  case GRPC_CHTTP2_WRITE_STATE_IDLE:
943
977
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
944
978
  grpc_chttp2_initiate_write_reason_string(reason));
945
- GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
946
979
  // Note that the 'write_action_begin_locked' closure is being scheduled
947
980
  // on the 'finally_scheduler' of t->combiner. This means that
948
981
  // 'write_action_begin_locked' is called only *after* all the other
@@ -960,8 +993,8 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
960
993
  // It does not call the endpoint to write the bytes. That is done by the
961
994
  // 'write_action' (which is scheduled by 'write_action_begin_locked')
962
995
  t->combiner->FinallyRun(
963
- GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
964
- write_action_begin_locked, t, nullptr),
996
+ grpc_core::InitTransportClosure<write_action_begin_locked>(
997
+ t->Ref(), &t->write_action_begin_locked),
965
998
  absl::OkStatus());
966
999
  break;
967
1000
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
@@ -988,22 +1021,22 @@ static const char* begin_writing_desc(bool partial) {
988
1021
  }
989
1022
  }
990
1023
 
991
- static void write_action_begin_locked(void* gt,
992
- grpc_error_handle /*error_ignored*/) {
993
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
1024
+ static void write_action_begin_locked(
1025
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
1026
+ grpc_error_handle /*error_ignored*/) {
994
1027
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
995
1028
  grpc_chttp2_begin_write_result r;
996
1029
  if (!t->closed_with_error.ok()) {
997
1030
  r.writing = false;
998
1031
  } else {
999
- r = grpc_chttp2_begin_write(t);
1032
+ r = grpc_chttp2_begin_write(t.get());
1000
1033
  }
1001
1034
  if (r.writing) {
1002
- set_write_state(t,
1035
+ set_write_state(t.get(),
1003
1036
  r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
1004
1037
  : GRPC_CHTTP2_WRITE_STATE_WRITING,
1005
1038
  begin_writing_desc(r.partial));
1006
- write_action(t, absl::OkStatus());
1039
+ write_action(t.get());
1007
1040
  if (t->reading_paused_on_pending_induced_frames) {
1008
1041
  GPR_ASSERT(t->num_pending_induced_frames == 0);
1009
1042
  // We had paused reading, because we had many induced frames (SETTINGS
@@ -1013,18 +1046,17 @@ static void write_action_begin_locked(void* gt,
1013
1046
  GPR_INFO,
1014
1047
  "transport %p : Resuming reading after being paused due to too "
1015
1048
  "many unwritten SETTINGS ACK, PINGS ACK and RST_STREAM frames",
1016
- t));
1049
+ t.get()));
1017
1050
  t->reading_paused_on_pending_induced_frames = false;
1018
- continue_read_action_locked(t);
1051
+ continue_read_action_locked(std::move(t));
1019
1052
  }
1020
1053
  } else {
1021
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "begin writing nothing");
1022
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
1054
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_IDLE,
1055
+ "begin writing nothing");
1023
1056
  }
1024
1057
  }
1025
1058
 
1026
- static void write_action(void* gt, grpc_error_handle /*error*/) {
1027
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
1059
+ static void write_action(grpc_chttp2_transport* t) {
1028
1060
  void* cl = t->cl;
1029
1061
  if (!t->cl->empty()) {
1030
1062
  // Transfer the ownership of the context list to the endpoint and create and
@@ -1040,44 +1072,53 @@ static void write_action(void* gt, grpc_error_handle /*error*/) {
1040
1072
  // Choose max_frame_size as the prefered rx crypto frame size indicated by the
1041
1073
  // peer.
1042
1074
  int max_frame_size =
1043
- t->settings
1044
- [GRPC_PEER_SETTINGS]
1045
- [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
1075
+ t->settings.peer().preferred_receive_crypto_message_size();
1046
1076
  // Note: max frame size is 0 if the remote peer does not support adjusting the
1047
1077
  // sending frame size.
1048
1078
  if (max_frame_size == 0) {
1049
1079
  max_frame_size = INT_MAX;
1050
1080
  }
1051
- grpc_endpoint_write(
1052
- t->ep, &t->outbuf,
1053
- GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
1054
- grpc_schedule_on_exec_ctx),
1055
- cl, max_frame_size);
1081
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) {
1082
+ gpr_log(GPR_INFO, "%s[%p]: Write %" PRIdPTR " bytes",
1083
+ t->is_client ? "CLIENT" : "SERVER", t, t->outbuf.Length());
1084
+ }
1085
+ t->write_size_policy.BeginWrite(t->outbuf.Length());
1086
+ grpc_endpoint_write(t->ep, t->outbuf.c_slice_buffer(),
1087
+ grpc_core::InitTransportClosure<write_action_end>(
1088
+ t->Ref(), &t->write_action_end_locked),
1089
+ cl, max_frame_size);
1056
1090
  }
1057
1091
 
1058
- static void write_action_end(void* tp, grpc_error_handle error) {
1059
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1060
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
1061
- write_action_end_locked, t, nullptr),
1062
- error);
1092
+ static void write_action_end(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
1093
+ grpc_error_handle error) {
1094
+ auto* tp = t.get();
1095
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) {
1096
+ gpr_log(GPR_INFO, "%s[%p]: Finish write",
1097
+ t->is_client ? "CLIENT" : "SERVER", t.get());
1098
+ }
1099
+ tp->combiner->Run(grpc_core::InitTransportClosure<write_action_end_locked>(
1100
+ std::move(t), &tp->write_action_end_locked),
1101
+ error);
1063
1102
  }
1064
1103
 
1065
1104
  // Callback from the grpc_endpoint after bytes have been written by calling
1066
1105
  // sendmsg
1067
- static void write_action_end_locked(void* tp, grpc_error_handle error) {
1068
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1106
+ static void write_action_end_locked(
1107
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
1108
+ grpc_error_handle error) {
1109
+ t->write_size_policy.EndWrite(error.ok());
1069
1110
 
1070
1111
  bool closed = false;
1071
1112
  if (!error.ok()) {
1072
- close_transport_locked(t, error);
1113
+ close_transport_locked(t.get(), error);
1073
1114
  closed = true;
1074
1115
  }
1075
1116
 
1076
1117
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED) {
1077
1118
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
1078
1119
  closed = true;
1079
- if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
1080
- close_transport_locked(t, GRPC_ERROR_CREATE("goaway sent"));
1120
+ if (t->stream_map.empty()) {
1121
+ close_transport_locked(t.get(), GRPC_ERROR_CREATE("goaway sent"));
1081
1122
  }
1082
1123
  }
1083
1124
 
@@ -1085,11 +1126,11 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
1085
1126
  case GRPC_CHTTP2_WRITE_STATE_IDLE:
1086
1127
  GPR_UNREACHABLE_CODE(break);
1087
1128
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
1088
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
1129
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
1089
1130
  break;
1090
1131
  case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE:
1091
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, "continue writing");
1092
- GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
1132
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_WRITING,
1133
+ "continue writing");
1093
1134
  // If the transport is closed, we will retry writing on the endpoint
1094
1135
  // and next write may contain part of the currently serialized frames.
1095
1136
  // So, we should only call the run_after_write callbacks when the next
@@ -1099,42 +1140,24 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
1099
1140
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
1100
1141
  }
1101
1142
  t->combiner->FinallyRun(
1102
- GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
1103
- write_action_begin_locked, t, nullptr),
1143
+ grpc_core::InitTransportClosure<write_action_begin_locked>(
1144
+ t, &t->write_action_begin_locked),
1104
1145
  absl::OkStatus());
1105
1146
  break;
1106
1147
  }
1107
1148
 
1108
- grpc_chttp2_end_write(t, error);
1109
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
1110
- }
1111
-
1112
- // Dirties an HTTP2 setting to be sent out next time a writing path occurs.
1113
- // If the change needs to occur immediately, manually initiate a write.
1114
- static void queue_setting_update(grpc_chttp2_transport* t,
1115
- grpc_chttp2_setting_id id, uint32_t value) {
1116
- const grpc_chttp2_setting_parameters* sp =
1117
- &grpc_chttp2_settings_parameters[id];
1118
- uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
1119
- if (use_value != value) {
1120
- gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
1121
- value, use_value);
1122
- }
1123
- if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
1124
- t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
1125
- t->dirtied_local_settings = true;
1126
- }
1149
+ grpc_chttp2_end_write(t.get(), error);
1127
1150
  }
1128
1151
 
1129
1152
  // Cancel out streams that haven't yet started if we have received a GOAWAY
1130
1153
  static void cancel_unstarted_streams(grpc_chttp2_transport* t,
1131
- grpc_error_handle error) {
1154
+ grpc_error_handle error, bool tarpit) {
1132
1155
  grpc_chttp2_stream* s;
1133
1156
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1134
1157
  s->trailing_metadata_buffer.Set(
1135
1158
  grpc_core::GrpcStreamNetworkState(),
1136
1159
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1137
- grpc_chttp2_cancel_stream(t, s, error);
1160
+ grpc_chttp2_cancel_stream(t, s, error, tarpit);
1138
1161
  }
1139
1162
  }
1140
1163
 
@@ -1167,21 +1190,20 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1167
1190
  grpc_core::StatusToString(t->goaway_error).c_str());
1168
1191
  }
1169
1192
  if (t->is_client) {
1170
- cancel_unstarted_streams(t, t->goaway_error);
1193
+ cancel_unstarted_streams(t, t->goaway_error, false);
1171
1194
  // Cancel all unseen streams
1172
- grpc_chttp2_stream_map_for_each(
1173
- &t->stream_map,
1174
- [](void* user_data, uint32_t /* key */, void* stream) {
1175
- uint32_t last_stream_id = *(static_cast<uint32_t*>(user_data));
1176
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
1177
- if (s->id > last_stream_id) {
1178
- s->trailing_metadata_buffer.Set(
1179
- grpc_core::GrpcStreamNetworkState(),
1180
- grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1181
- grpc_chttp2_cancel_stream(s->t, s, s->t->goaway_error);
1182
- }
1183
- },
1184
- &last_stream_id);
1195
+ std::vector<grpc_chttp2_stream*> to_cancel;
1196
+ for (auto id_stream : t->stream_map) {
1197
+ if (id_stream.first > last_stream_id) {
1198
+ to_cancel.push_back(id_stream.second);
1199
+ }
1200
+ }
1201
+ for (auto s : to_cancel) {
1202
+ s->trailing_metadata_buffer.Set(
1203
+ grpc_core::GrpcStreamNetworkState(),
1204
+ grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1205
+ grpc_chttp2_cancel_stream(s->t.get(), s, s->t->goaway_error, false);
1206
+ }
1185
1207
  }
1186
1208
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1187
1209
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1219,15 +1241,13 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1219
1241
  // maybe cancel out streams that haven't yet started if we have received a
1220
1242
  // GOAWAY
1221
1243
  if (!t->goaway_error.ok()) {
1222
- cancel_unstarted_streams(t, t->goaway_error);
1244
+ cancel_unstarted_streams(t, t->goaway_error, false);
1223
1245
  return;
1224
1246
  }
1225
1247
  // start streams where we have free grpc_chttp2_stream ids and free
1226
1248
  // * concurrency
1227
1249
  while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
1228
- grpc_chttp2_stream_map_size(&t->stream_map) <
1229
- t->settings[GRPC_PEER_SETTINGS]
1230
- [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
1250
+ t->stream_map.size() < t->settings.peer().max_concurrent_streams() &&
1231
1251
  grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1232
1252
  // safe since we can't (legally) be parsing this stream yet
1233
1253
  GRPC_CHTTP2_IF_TRACING(gpr_log(
@@ -1246,7 +1266,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1246
1266
  "no_more_stream_ids");
1247
1267
  }
1248
1268
 
1249
- grpc_chttp2_stream_map_add(&t->stream_map, s->id, s);
1269
+ t->stream_map.emplace(s->id, s);
1250
1270
  post_destructive_reclaimer(t);
1251
1271
  grpc_chttp2_mark_stream_writable(t, s);
1252
1272
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
@@ -1261,7 +1281,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1261
1281
  t, s,
1262
1282
  grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
1263
1283
  grpc_core::StatusIntProperty::kRpcStatus,
1264
- GRPC_STATUS_UNAVAILABLE));
1284
+ GRPC_STATUS_UNAVAILABLE),
1285
+ false);
1265
1286
  }
1266
1287
  }
1267
1288
  }
@@ -1309,9 +1330,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1309
1330
  write_state_name(t->write_state), whence.file(), whence.line());
1310
1331
  }
1311
1332
 
1312
- auto* tracer = CallTracerIfEnabled(s);
1313
- if (tracer != nullptr) {
1314
- tracer->RecordAnnotation(
1333
+ if (s->call_tracer) {
1334
+ s->call_tracer->RecordAnnotation(
1315
1335
  absl::StrFormat("on_complete: s=%p %p desc=%s err=%s", s, closure, desc,
1316
1336
  grpc_core::StatusToString(error).c_str()));
1317
1337
  }
@@ -1369,10 +1389,12 @@ static void perform_stream_op_locked(void* stream_op,
1369
1389
  grpc_chttp2_stream* s =
1370
1390
  static_cast<grpc_chttp2_stream*>(op->handler_private.extra_arg);
1371
1391
  grpc_transport_stream_op_batch_payload* op_payload = op->payload;
1372
- grpc_chttp2_transport* t = s->t;
1392
+ grpc_chttp2_transport* t = s->t.get();
1373
1393
 
1374
1394
  s->context = op->payload->context;
1375
1395
  s->traced = op->is_traced;
1396
+ s->call_tracer = CallTracerIfSampled(s);
1397
+ s->tcp_tracer = TcpTracerIfSampled(s);
1376
1398
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1377
1399
  gpr_log(GPR_INFO,
1378
1400
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
@@ -1388,9 +1410,8 @@ static void perform_stream_op_locked(void* stream_op,
1388
1410
  }
1389
1411
  }
1390
1412
 
1391
- auto* tracer = CallTracerIfEnabled(s);
1392
- if (tracer != nullptr) {
1393
- tracer->RecordAnnotation(absl::StrFormat(
1413
+ if (s->call_tracer) {
1414
+ s->call_tracer->RecordAnnotation(absl::StrFormat(
1394
1415
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s, op,
1395
1416
  grpc_transport_stream_op_batch_string(op, true).c_str(),
1396
1417
  op->on_complete));
@@ -1406,10 +1427,16 @@ static void perform_stream_op_locked(void* stream_op,
1406
1427
  }
1407
1428
 
1408
1429
  if (op->cancel_stream) {
1409
- grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error);
1430
+ grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error,
1431
+ op_payload->cancel_stream.tarpit);
1410
1432
  }
1411
1433
 
1412
1434
  if (op->send_initial_metadata) {
1435
+ if (s->call_tracer) {
1436
+ s->call_tracer->RecordAnnotation(grpc_core::HttpAnnotation(
1437
+ grpc_core::HttpAnnotation::Type::kStart, gpr_now(GPR_CLOCK_REALTIME),
1438
+ s->t->flow_control.stats(), s->flow_control.stats()));
1439
+ }
1413
1440
  if (t->is_client && t->channelz_socket != nullptr) {
1414
1441
  t->channelz_socket->RecordStreamStartedFromLocal();
1415
1442
  }
@@ -1444,7 +1471,8 @@ static void perform_stream_op_locked(void* stream_op,
1444
1471
  GRPC_ERROR_CREATE_REFERENCING("Transport closed",
1445
1472
  &t->closed_with_error, 1),
1446
1473
  grpc_core::StatusIntProperty::kRpcStatus,
1447
- GRPC_STATUS_UNAVAILABLE));
1474
+ GRPC_STATUS_UNAVAILABLE),
1475
+ false);
1448
1476
  }
1449
1477
  } else {
1450
1478
  GPR_ASSERT(s->id != 0);
@@ -1491,6 +1519,11 @@ static void perform_stream_op_locked(void* stream_op,
1491
1519
  frame_hdr[3] = static_cast<uint8_t>(len >> 8);
1492
1520
  frame_hdr[4] = static_cast<uint8_t>(len);
1493
1521
 
1522
+ if (grpc_core::IsHttp2StatsFixEnabled()) {
1523
+ s->stats.outgoing.framing_bytes += GRPC_HEADER_SIZE_IN_BYTES;
1524
+ s->stats.outgoing.data_bytes +=
1525
+ op_payload->send_message.send_message->Length();
1526
+ }
1494
1527
  s->next_message_end_offset =
1495
1528
  s->flow_controlled_bytes_written +
1496
1529
  static_cast<int64_t>(s->flow_controlled_buffer.length) +
@@ -1617,12 +1650,11 @@ static void perform_stream_op_locked(void* stream_op,
1617
1650
  GRPC_CHTTP2_STREAM_UNREF(s, "perform_stream_op");
1618
1651
  }
1619
1652
 
1620
- static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1621
- grpc_transport_stream_op_batch* op) {
1622
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
1653
+ void grpc_chttp2_transport::PerformStreamOp(
1654
+ grpc_stream* gs, grpc_transport_stream_op_batch* op) {
1623
1655
  grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
1624
1656
 
1625
- if (!t->is_client) {
1657
+ if (!is_client) {
1626
1658
  if (op->send_initial_metadata) {
1627
1659
  GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
1628
1660
  ->get(grpc_core::GrpcTimeoutMetadata())
@@ -1642,22 +1674,48 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1642
1674
 
1643
1675
  GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
1644
1676
  op->handler_private.extra_arg = gs;
1645
- t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1646
- perform_stream_op_locked, op, nullptr),
1647
- absl::OkStatus());
1677
+ combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1678
+ perform_stream_op_locked, op, nullptr),
1679
+ absl::OkStatus());
1648
1680
  }
1649
1681
 
1650
1682
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1683
+ GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "%p CANCEL PINGS: %s", t,
1684
+ grpc_core::StatusToString(error).c_str()));
1651
1685
  // callback remaining pings: they're not allowed to call into the transport,
1652
1686
  // and maybe they hold resources that need to be freed
1653
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1654
- GPR_ASSERT(!error.ok());
1655
- for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
1656
- grpc_closure_list_fail_all(&pq->lists[j], error);
1657
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
1658
- }
1687
+ t->ping_callbacks.CancelAll(t->event_engine.get());
1659
1688
  }
1660
1689
 
1690
+ namespace {
1691
+ class PingClosureWrapper {
1692
+ public:
1693
+ explicit PingClosureWrapper(grpc_closure* closure) : closure_(closure) {}
1694
+ PingClosureWrapper(const PingClosureWrapper&) = delete;
1695
+ PingClosureWrapper& operator=(const PingClosureWrapper&) = delete;
1696
+ PingClosureWrapper(PingClosureWrapper&& other) noexcept
1697
+ : closure_(other.Take()) {}
1698
+ PingClosureWrapper& operator=(PingClosureWrapper&& other) noexcept {
1699
+ std::swap(closure_, other.closure_);
1700
+ return *this;
1701
+ }
1702
+ ~PingClosureWrapper() {
1703
+ if (closure_ != nullptr) {
1704
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure_, absl::CancelledError());
1705
+ }
1706
+ }
1707
+
1708
+ void operator()() {
1709
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, Take(), absl::OkStatus());
1710
+ }
1711
+
1712
+ private:
1713
+ grpc_closure* Take() { return std::exchange(closure_, nullptr); }
1714
+
1715
+ grpc_closure* closure_ = nullptr;
1716
+ };
1717
+ } // namespace
1718
+
1661
1719
  static void send_ping_locked(grpc_chttp2_transport* t,
1662
1720
  grpc_closure* on_initiate, grpc_closure* on_ack) {
1663
1721
  if (!t->closed_with_error.ok()) {
@@ -1665,82 +1723,119 @@ static void send_ping_locked(grpc_chttp2_transport* t,
1665
1723
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack, t->closed_with_error);
1666
1724
  return;
1667
1725
  }
1668
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1669
- grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE], on_initiate,
1670
- absl::OkStatus());
1671
- grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT], on_ack,
1672
- absl::OkStatus());
1726
+ t->ping_callbacks.OnPing(PingClosureWrapper(on_initiate),
1727
+ PingClosureWrapper(on_ack));
1673
1728
  }
1674
1729
 
1675
1730
  // Specialized form of send_ping_locked for keepalive ping. If there is already
1676
1731
  // a ping in progress, the keepalive ping would piggyback onto that ping,
1677
1732
  // instead of waiting for that ping to complete and then starting a new ping.
1678
- static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1733
+ static void send_keepalive_ping_locked(
1734
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
1679
1735
  if (!t->closed_with_error.ok()) {
1680
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1681
- start_keepalive_ping_locked, t, nullptr),
1682
- t->closed_with_error);
1683
1736
  t->combiner->Run(
1684
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1685
- finish_keepalive_ping_locked, t, nullptr),
1737
+ grpc_core::InitTransportClosure<finish_keepalive_ping_locked>(
1738
+ t->Ref(), &t->finish_keepalive_ping_locked),
1686
1739
  t->closed_with_error);
1687
1740
  return;
1688
1741
  }
1689
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1690
- if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
1691
- // There is a ping in flight. Add yourself to the inflight closure list.
1692
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1693
- start_keepalive_ping_locked, t, nullptr),
1694
- t->closed_with_error);
1695
- grpc_closure_list_append(
1696
- &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
1697
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1698
- finish_keepalive_ping, t, grpc_schedule_on_exec_ctx),
1699
- absl::OkStatus());
1700
- return;
1701
- }
1702
- grpc_closure_list_append(
1703
- &pq->lists[GRPC_CHTTP2_PCL_INITIATE],
1704
- GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping,
1705
- t, grpc_schedule_on_exec_ctx),
1706
- absl::OkStatus());
1707
- grpc_closure_list_append(
1708
- &pq->lists[GRPC_CHTTP2_PCL_NEXT],
1709
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping,
1710
- t, grpc_schedule_on_exec_ctx),
1711
- absl::OkStatus());
1742
+ t->ping_callbacks.OnPingAck(
1743
+ PingClosureWrapper(grpc_core::InitTransportClosure<finish_keepalive_ping>(
1744
+ t->Ref(), &t->finish_keepalive_ping_locked)));
1712
1745
  }
1713
1746
 
1714
- void grpc_chttp2_retry_initiate_ping(grpc_chttp2_transport* t) {
1715
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1716
- retry_initiate_ping_locked, t, nullptr),
1717
- absl::OkStatus());
1747
+ void grpc_chttp2_retry_initiate_ping(
1748
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
1749
+ auto tp = t.get();
1750
+ tp->combiner->Run(grpc_core::InitTransportClosure<retry_initiate_ping_locked>(
1751
+ std::move(t), &tp->retry_initiate_ping_locked),
1752
+ absl::OkStatus());
1718
1753
  }
1719
1754
 
1720
- static void retry_initiate_ping_locked(void* tp,
1721
- GRPC_UNUSED grpc_error_handle error) {
1755
+ static void retry_initiate_ping_locked(
1756
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
1757
+ GRPC_UNUSED grpc_error_handle error) {
1722
1758
  GPR_DEBUG_ASSERT(error.ok());
1723
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1724
- GPR_ASSERT(t->ping_state.delayed_ping_timer_handle.has_value());
1725
- t->ping_state.delayed_ping_timer_handle.reset();
1726
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1727
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
1759
+ GPR_ASSERT(t->delayed_ping_timer_handle != TaskHandle::kInvalid);
1760
+ t->delayed_ping_timer_handle = TaskHandle::kInvalid;
1761
+ grpc_chttp2_initiate_write(t.get(),
1762
+ GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1728
1763
  }
1729
1764
 
1730
1765
  void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1731
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1732
- if (pq->inflight_id != id) {
1766
+ if (!t->ping_callbacks.AckPing(id, t->event_engine.get())) {
1733
1767
  gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1734
1768
  std::string(t->peer_string.as_string_view()).c_str(), id);
1735
1769
  return;
1736
1770
  }
1737
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
1738
- &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]);
1739
- if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_NEXT])) {
1771
+ if (t->ping_callbacks.ping_requested()) {
1740
1772
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS);
1741
1773
  }
1742
1774
  }
1743
1775
 
1776
+ void grpc_chttp2_keepalive_timeout(
1777
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
1778
+ t->combiner->Run(
1779
+ grpc_core::NewClosure([t](grpc_error_handle) {
1780
+ gpr_log(GPR_INFO, "%s: Keepalive timeout. Closing transport.",
1781
+ std::string(t->peer_string.as_string_view()).c_str());
1782
+ send_goaway(
1783
+ t.get(),
1784
+ grpc_error_set_int(GRPC_ERROR_CREATE("keepalive_timeout"),
1785
+ grpc_core::StatusIntProperty::kHttp2Error,
1786
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
1787
+ /*immediate_disconnect_hint=*/true);
1788
+ close_transport_locked(
1789
+ t.get(),
1790
+ grpc_error_set_int(GRPC_ERROR_CREATE("keepalive timeout"),
1791
+ grpc_core::StatusIntProperty::kRpcStatus,
1792
+ GRPC_STATUS_UNAVAILABLE));
1793
+ }),
1794
+ absl::OkStatus());
1795
+ }
1796
+
1797
+ void grpc_chttp2_ping_timeout(
1798
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
1799
+ t->combiner->Run(
1800
+ grpc_core::NewClosure([t](grpc_error_handle) {
1801
+ gpr_log(GPR_INFO, "%s: Ping timeout. Closing transport.",
1802
+ std::string(t->peer_string.as_string_view()).c_str());
1803
+ send_goaway(
1804
+ t.get(),
1805
+ grpc_error_set_int(GRPC_ERROR_CREATE("ping_timeout"),
1806
+ grpc_core::StatusIntProperty::kHttp2Error,
1807
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
1808
+ /*immediate_disconnect_hint=*/true);
1809
+ close_transport_locked(
1810
+ t.get(),
1811
+ grpc_error_set_int(GRPC_ERROR_CREATE("ping timeout"),
1812
+ grpc_core::StatusIntProperty::kRpcStatus,
1813
+ GRPC_STATUS_UNAVAILABLE));
1814
+ }),
1815
+ absl::OkStatus());
1816
+ }
1817
+
1818
+ void grpc_chttp2_settings_timeout(
1819
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
1820
+ t->combiner->Run(
1821
+ grpc_core::NewClosure([t](grpc_error_handle) {
1822
+ gpr_log(GPR_INFO, "%s: Settings timeout. Closing transport.",
1823
+ std::string(t->peer_string.as_string_view()).c_str());
1824
+ send_goaway(
1825
+ t.get(),
1826
+ grpc_error_set_int(GRPC_ERROR_CREATE("settings_timeout"),
1827
+ grpc_core::StatusIntProperty::kHttp2Error,
1828
+ GRPC_HTTP2_SETTINGS_TIMEOUT),
1829
+ /*immediate_disconnect_hint=*/true);
1830
+ close_transport_locked(
1831
+ t.get(),
1832
+ grpc_error_set_int(GRPC_ERROR_CREATE("settings timeout"),
1833
+ grpc_core::StatusIntProperty::kRpcStatus,
1834
+ GRPC_STATUS_UNAVAILABLE));
1835
+ }),
1836
+ absl::OkStatus());
1837
+ }
1838
+
1744
1839
  namespace {
1745
1840
 
1746
1841
  // Fire and forget (deletes itself on completion). Does a graceful shutdown by
@@ -1754,31 +1849,19 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1754
1849
  public:
1755
1850
  static void Start(grpc_chttp2_transport* t) { new GracefulGoaway(t); }
1756
1851
 
1757
- ~GracefulGoaway() override {
1758
- GRPC_CHTTP2_UNREF_TRANSPORT(t_, "graceful goaway");
1759
- }
1760
-
1761
1852
  private:
1762
1853
  using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
1763
1854
 
1764
- explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
1855
+ explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t->Ref()) {
1765
1856
  t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
1766
- GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
1767
1857
  grpc_chttp2_goaway_append((1u << 31) - 1, 0, grpc_empty_slice(), &t->qbuf);
1858
+ t->keepalive_timeout =
1859
+ std::min(t->keepalive_timeout, grpc_core::Duration::Seconds(20));
1860
+ t->ping_timeout =
1861
+ std::min(t->ping_timeout, grpc_core::Duration::Seconds(20));
1768
1862
  send_ping_locked(
1769
1863
  t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
1770
1864
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1771
- timer_handle_ = t_->event_engine->RunAfter(
1772
- grpc_core::Duration::Seconds(20),
1773
- [self = Ref(DEBUG_LOCATION, "GoawayTimer")]() mutable {
1774
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1775
- grpc_core::ExecCtx exec_ctx;
1776
- // The ref will be unreffed in the combiner.
1777
- auto* ptr = self.release();
1778
- ptr->t_->combiner->Run(
1779
- GRPC_CLOSURE_INIT(&ptr->on_timer_, OnTimerLocked, ptr, nullptr),
1780
- absl::OkStatus());
1781
- });
1782
1865
  }
1783
1866
 
1784
1867
  void MaybeSendFinalGoawayLocked() {
@@ -1791,7 +1874,7 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1791
1874
  gpr_log(GPR_INFO,
1792
1875
  "transport:%p %s peer:%s Transport already shutting down. "
1793
1876
  "Graceful GOAWAY abandoned.",
1794
- t_, t_->is_client ? "CLIENT" : "SERVER",
1877
+ t_.get(), t_->is_client ? "CLIENT" : "SERVER",
1795
1878
  std::string(t_->peer_string.as_string_view()).c_str()));
1796
1879
  return;
1797
1880
  }
@@ -1800,13 +1883,14 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1800
1883
  gpr_log(GPR_INFO,
1801
1884
  "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1802
1885
  "Sending final GOAWAY with stream_id:%d",
1803
- t_, t_->is_client ? "CLIENT" : "SERVER",
1886
+ t_.get(), t_->is_client ? "CLIENT" : "SERVER",
1804
1887
  std::string(t_->peer_string.as_string_view()).c_str(),
1805
1888
  t_->last_new_stream_id));
1806
1889
  t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1807
1890
  grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1808
1891
  &t_->qbuf);
1809
- grpc_chttp2_initiate_write(t_, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1892
+ grpc_chttp2_initiate_write(t_.get(),
1893
+ GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1810
1894
  }
1811
1895
 
1812
1896
  static void OnPingAck(void* arg, grpc_error_handle /* error */) {
@@ -1818,26 +1902,12 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1818
1902
 
1819
1903
  static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
1820
1904
  auto* self = static_cast<GracefulGoaway*>(arg);
1821
- if (self->timer_handle_ != TaskHandle::kInvalid) {
1822
- self->t_->event_engine->Cancel(
1823
- std::exchange(self->timer_handle_, TaskHandle::kInvalid));
1824
- }
1825
1905
  self->MaybeSendFinalGoawayLocked();
1826
1906
  self->Unref();
1827
1907
  }
1828
1908
 
1829
- static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
1830
- auto* self = static_cast<GracefulGoaway*>(arg);
1831
- // Clearing the handle since the timer has fired and the handle is invalid.
1832
- self->timer_handle_ = TaskHandle::kInvalid;
1833
- self->MaybeSendFinalGoawayLocked();
1834
- self->Unref();
1835
- }
1836
-
1837
- grpc_chttp2_transport* t_;
1909
+ const grpc_core::RefCountedPtr<grpc_chttp2_transport> t_;
1838
1910
  grpc_closure on_ping_ack_;
1839
- TaskHandle timer_handle_ = TaskHandle::kInvalid;
1840
- grpc_closure on_timer_;
1841
1911
  };
1842
1912
 
1843
1913
  } // namespace
@@ -1859,8 +1929,9 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1859
1929
  } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1860
1930
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1861
1931
  // We want to log this irrespective of whether http tracing is enabled
1862
- gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s",
1932
+ gpr_log(GPR_DEBUG, "%s %s: Sending goaway last_new_stream_id=%d err=%s",
1863
1933
  std::string(t->peer_string.as_string_view()).c_str(),
1934
+ t->is_client ? "CLIENT" : "SERVER", t->last_new_stream_id,
1864
1935
  grpc_core::StatusToString(error).c_str());
1865
1936
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1866
1937
  grpc_chttp2_goaway_append(
@@ -1872,44 +1943,40 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1872
1943
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1873
1944
  }
1874
1945
 
1875
- void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1876
- if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes &&
1877
- t->ping_policy.max_ping_strikes != 0) {
1878
- send_goaway(t,
1879
- grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
1880
- grpc_core::StatusIntProperty::kHttp2Error,
1881
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
1882
- /*immediate_disconnect_hint=*/true);
1883
- // The transport will be closed after the write is done
1884
- close_transport_locked(
1885
- t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
1886
- grpc_core::StatusIntProperty::kRpcStatus,
1887
- GRPC_STATUS_UNAVAILABLE));
1888
- }
1946
+ void grpc_chttp2_exceeded_ping_strikes(grpc_chttp2_transport* t) {
1947
+ send_goaway(t,
1948
+ grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
1949
+ grpc_core::StatusIntProperty::kHttp2Error,
1950
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
1951
+ /*immediate_disconnect_hint=*/true);
1952
+ // The transport will be closed after the write is done
1953
+ close_transport_locked(
1954
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
1955
+ grpc_core::StatusIntProperty::kRpcStatus,
1956
+ GRPC_STATUS_UNAVAILABLE));
1889
1957
  }
1890
1958
 
1891
1959
  void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1892
1960
  if (!t->is_client) {
1893
- t->ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
1894
- t->ping_recv_state.ping_strikes = 0;
1961
+ t->ping_abuse_policy.ResetPingStrikes();
1895
1962
  }
1896
- t->ping_state.pings_before_data_required =
1897
- t->ping_policy.max_pings_without_data;
1963
+ t->ping_rate_policy.ResetPingsBeforeDataRequired();
1898
1964
  }
1899
1965
 
1900
1966
  static void perform_transport_op_locked(void* stream_op,
1901
1967
  grpc_error_handle /*error_ignored*/) {
1902
1968
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1903
- grpc_chttp2_transport* t =
1904
- static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1969
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t(
1970
+ static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg));
1905
1971
 
1906
1972
  if (!op->goaway_error.ok()) {
1907
- send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
1973
+ send_goaway(t.get(), op->goaway_error, /*immediate_disconnect_hint=*/false);
1908
1974
  }
1909
1975
 
1910
1976
  if (op->set_accept_stream) {
1911
1977
  t->accept_stream_cb = op->set_accept_stream_fn;
1912
1978
  t->accept_stream_cb_user_data = op->set_accept_stream_user_data;
1979
+ t->registered_method_matcher_cb = op->set_registered_method_matcher_fn;
1913
1980
  }
1914
1981
 
1915
1982
  if (op->bind_pollset) {
@@ -1921,8 +1988,9 @@ static void perform_transport_op_locked(void* stream_op,
1921
1988
  }
1922
1989
 
1923
1990
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
1924
- send_ping_locked(t, op->send_ping.on_initiate, op->send_ping.on_ack);
1925
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING);
1991
+ send_ping_locked(t.get(), op->send_ping.on_initiate, op->send_ping.on_ack);
1992
+ grpc_chttp2_initiate_write(t.get(),
1993
+ GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING);
1926
1994
  }
1927
1995
 
1928
1996
  if (op->start_connectivity_watch != nullptr) {
@@ -1934,27 +2002,24 @@ static void perform_transport_op_locked(void* stream_op,
1934
2002
  }
1935
2003
 
1936
2004
  if (!op->disconnect_with_error.ok()) {
1937
- send_goaway(t, op->disconnect_with_error,
2005
+ send_goaway(t.get(), op->disconnect_with_error,
1938
2006
  /*immediate_disconnect_hint=*/true);
1939
- close_transport_locked(t, op->disconnect_with_error);
2007
+ close_transport_locked(t.get(), op->disconnect_with_error);
1940
2008
  }
1941
2009
 
1942
2010
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1943
-
1944
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op");
1945
2011
  }
1946
2012
 
1947
- static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1948
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2013
+ void grpc_chttp2_transport::PerformOp(grpc_transport_op* op) {
1949
2014
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1950
- gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", t,
2015
+ gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", this,
1951
2016
  grpc_transport_op_string(op).c_str());
1952
2017
  }
1953
- op->handler_private.extra_arg = gt;
1954
- GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
1955
- t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1956
- perform_transport_op_locked, op, nullptr),
1957
- absl::OkStatus());
2018
+ op->handler_private.extra_arg = this;
2019
+ Ref().release()->combiner->Run(
2020
+ GRPC_CLOSURE_INIT(&op->handler_private.closure,
2021
+ perform_transport_op_locked, op, nullptr),
2022
+ absl::OkStatus());
1958
2023
  }
1959
2024
 
1960
2025
  //
@@ -1980,6 +2045,10 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1980
2045
  *s->trailing_metadata_available = true;
1981
2046
  s->trailing_metadata_available = nullptr;
1982
2047
  }
2048
+ if (t->registered_method_matcher_cb != nullptr) {
2049
+ t->registered_method_matcher_cb(t->accept_stream_cb_user_data,
2050
+ s->recv_initial_metadata);
2051
+ }
1983
2052
  null_then_sched_closure(&s->recv_initial_metadata_ready);
1984
2053
  }
1985
2054
  }
@@ -2090,17 +2159,16 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
2090
2159
  }
2091
2160
  }
2092
2161
 
2093
- static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2094
- grpc_error_handle error) {
2095
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2096
- grpc_chttp2_stream_map_delete(&t->stream_map, id));
2162
+ static grpc_chttp2_transport::RemovedStreamHandle remove_stream(
2163
+ grpc_chttp2_transport* t, uint32_t id, grpc_error_handle error) {
2164
+ grpc_chttp2_stream* s = t->stream_map.extract(id).mapped();
2097
2165
  GPR_DEBUG_ASSERT(s);
2098
2166
  if (t->incoming_stream == s) {
2099
2167
  t->incoming_stream = nullptr;
2100
2168
  grpc_chttp2_parsing_become_skip_parser(t);
2101
2169
  }
2102
2170
 
2103
- if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2171
+ if (t->stream_map.empty()) {
2104
2172
  post_benign_reclaimer(t);
2105
2173
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
2106
2174
  close_transport_locked(
@@ -2115,29 +2183,74 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2115
2183
  grpc_chttp2_list_remove_stalled_by_transport(t, s);
2116
2184
 
2117
2185
  maybe_start_some_streams(t);
2186
+
2187
+ if (t->is_client) return grpc_chttp2_transport::RemovedStreamHandle();
2188
+ return grpc_chttp2_transport::RemovedStreamHandle(t->Ref());
2189
+ }
2190
+
2191
+ namespace grpc_core {
2192
+ namespace {
2193
+
2194
+ Duration TarpitDuration(grpc_chttp2_transport* t) {
2195
+ return Duration::Milliseconds(absl::LogUniform<int>(
2196
+ absl::BitGen(), t->min_tarpit_duration_ms, t->max_tarpit_duration_ms));
2197
+ }
2198
+
2199
+ template <typename F>
2200
+ void MaybeTarpit(grpc_chttp2_transport* t, bool tarpit, F fn) {
2201
+ if (!tarpit || !t->allow_tarpit || t->is_client) {
2202
+ fn(t);
2203
+ return;
2204
+ }
2205
+ const auto duration = TarpitDuration(t);
2206
+ t->event_engine->RunAfter(
2207
+ duration, [t = t->Ref(), fn = std::move(fn)]() mutable {
2208
+ ApplicationCallbackExecCtx app_exec_ctx;
2209
+ ExecCtx exec_ctx;
2210
+ t->combiner->Run(
2211
+ NewClosure([t, fn = std::move(fn)](grpc_error_handle) mutable {
2212
+ // TODO(ctiller): this can result in not sending RST_STREAMS if a
2213
+ // request gets tarpit behind a transport close.
2214
+ if (!t->closed_with_error.ok()) return;
2215
+ fn(t.get());
2216
+ }),
2217
+ absl::OkStatus());
2218
+ });
2118
2219
  }
2119
2220
 
2221
+ } // namespace
2222
+ } // namespace grpc_core
2223
+
2120
2224
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2121
- grpc_error_handle due_to_error) {
2225
+ grpc_error_handle due_to_error, bool tarpit) {
2122
2226
  if (!t->is_client && !s->sent_trailing_metadata &&
2123
- grpc_error_has_clear_grpc_status(due_to_error)) {
2124
- close_from_api(t, s, due_to_error);
2227
+ grpc_error_has_clear_grpc_status(due_to_error) &&
2228
+ !(s->read_closed && s->write_closed)) {
2229
+ close_from_api(t, s, due_to_error, tarpit);
2125
2230
  return;
2126
2231
  }
2127
2232
 
2233
+ if (!due_to_error.ok() && !s->seen_error) {
2234
+ s->seen_error = true;
2235
+ }
2128
2236
  if (!s->read_closed || !s->write_closed) {
2129
2237
  if (s->id != 0) {
2130
2238
  grpc_http2_error_code http_error;
2131
2239
  grpc_error_get_status(due_to_error, s->deadline, nullptr, nullptr,
2132
2240
  &http_error, nullptr);
2133
- grpc_chttp2_add_rst_stream_to_next_write(
2134
- t, s->id, static_cast<uint32_t>(http_error), &s->stats.outgoing);
2135
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
2241
+ grpc_core::MaybeTarpit(
2242
+ t, tarpit,
2243
+ [id = s->id, http_error,
2244
+ remove_stream_handle = grpc_chttp2_mark_stream_closed(
2245
+ t, s, 1, 1, due_to_error)](grpc_chttp2_transport* t) {
2246
+ grpc_chttp2_add_rst_stream_to_next_write(
2247
+ t, id, static_cast<uint32_t>(http_error), nullptr);
2248
+ grpc_chttp2_initiate_write(t,
2249
+ GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
2250
+ });
2251
+ return;
2136
2252
  }
2137
2253
  }
2138
- if (!due_to_error.ok() && !s->seen_error) {
2139
- s->seen_error = true;
2140
- }
2141
2254
  grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
2142
2255
  }
2143
2256
 
@@ -2230,16 +2343,17 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2230
2343
  flush_write_list(t, s, &s->on_flow_controlled_cbs, error);
2231
2344
  }
2232
2345
 
2233
- void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2234
- grpc_chttp2_stream* s, int close_reads,
2235
- int close_writes, grpc_error_handle error) {
2346
+ grpc_chttp2_transport::RemovedStreamHandle grpc_chttp2_mark_stream_closed(
2347
+ grpc_chttp2_transport* t, grpc_chttp2_stream* s, int close_reads,
2348
+ int close_writes, grpc_error_handle error) {
2349
+ grpc_chttp2_transport::RemovedStreamHandle rsh;
2236
2350
  if (grpc_http_trace.enabled()) {
2237
2351
  gpr_log(
2238
2352
  GPR_DEBUG, "MARK_STREAM_CLOSED: t=%p s=%p(id=%d) %s [%s]", t, s, s->id,
2239
2353
  (close_reads && close_writes)
2240
2354
  ? "read+write"
2241
2355
  : (close_reads ? "read" : (close_writes ? "write" : "nothing??")),
2242
- error.ToString().c_str());
2356
+ grpc_core::StatusToString(error).c_str());
2243
2357
  }
2244
2358
  if (s->read_closed && s->write_closed) {
2245
2359
  // already closed, but we should still fake the status if needed.
@@ -2248,7 +2362,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2248
2362
  grpc_chttp2_fake_status(t, s, overall_error);
2249
2363
  }
2250
2364
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2251
- return;
2365
+ return rsh;
2252
2366
  }
2253
2367
  bool closed_read = false;
2254
2368
  bool became_closed = false;
@@ -2266,7 +2380,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2266
2380
  became_closed = true;
2267
2381
  grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2268
2382
  if (s->id != 0) {
2269
- remove_stream(t, s->id, overall_error);
2383
+ rsh = remove_stream(t, s->id, overall_error);
2270
2384
  } else {
2271
2385
  // Purge streams waiting on concurrency still waiting for id assignment
2272
2386
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
@@ -2290,17 +2404,11 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2290
2404
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2291
2405
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2");
2292
2406
  }
2407
+ return rsh;
2293
2408
  }
2294
2409
 
2295
2410
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2296
- grpc_error_handle error) {
2297
- grpc_slice hdr;
2298
- grpc_slice status_hdr;
2299
- grpc_slice http_status_hdr;
2300
- grpc_slice content_type_hdr;
2301
- grpc_slice message_pfx;
2302
- uint8_t* p;
2303
- uint32_t len = 0;
2411
+ grpc_error_handle error, bool tarpit) {
2304
2412
  grpc_status_code grpc_status;
2305
2413
  std::string message;
2306
2414
  grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
@@ -2308,158 +2416,167 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2308
2416
 
2309
2417
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
2310
2418
 
2311
- // Hand roll a header block.
2312
- // This is unnecessarily ugly - at some point we should find a more
2313
- // elegant solution.
2314
- // It's complicated by the fact that our send machinery would be dead by
2315
- // the time we got around to sending this, so instead we ignore HPACK
2316
- // compression and just write the uncompressed bytes onto the wire.
2317
- if (!s->sent_initial_metadata) {
2318
- http_status_hdr = GRPC_SLICE_MALLOC(13);
2319
- p = GRPC_SLICE_START_PTR(http_status_hdr);
2320
- *p++ = 0x00;
2321
- *p++ = 7;
2322
- *p++ = ':';
2323
- *p++ = 's';
2324
- *p++ = 't';
2325
- *p++ = 'a';
2326
- *p++ = 't';
2327
- *p++ = 'u';
2328
- *p++ = 's';
2329
- *p++ = 3;
2330
- *p++ = '2';
2331
- *p++ = '0';
2332
- *p++ = '0';
2333
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(http_status_hdr));
2334
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(http_status_hdr);
2335
-
2336
- content_type_hdr = GRPC_SLICE_MALLOC(31);
2337
- p = GRPC_SLICE_START_PTR(content_type_hdr);
2338
- *p++ = 0x00;
2339
- *p++ = 12;
2340
- *p++ = 'c';
2341
- *p++ = 'o';
2342
- *p++ = 'n';
2343
- *p++ = 't';
2344
- *p++ = 'e';
2345
- *p++ = 'n';
2346
- *p++ = 't';
2347
- *p++ = '-';
2348
- *p++ = 't';
2349
- *p++ = 'y';
2350
- *p++ = 'p';
2351
- *p++ = 'e';
2352
- *p++ = 16;
2353
- *p++ = 'a';
2354
- *p++ = 'p';
2355
- *p++ = 'p';
2356
- *p++ = 'l';
2357
- *p++ = 'i';
2358
- *p++ = 'c';
2359
- *p++ = 'a';
2360
- *p++ = 't';
2361
- *p++ = 'i';
2362
- *p++ = 'o';
2363
- *p++ = 'n';
2364
- *p++ = '/';
2365
- *p++ = 'g';
2366
- *p++ = 'r';
2367
- *p++ = 'p';
2368
- *p++ = 'c';
2369
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(content_type_hdr));
2370
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(content_type_hdr);
2371
- }
2372
-
2373
- status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10));
2374
- p = GRPC_SLICE_START_PTR(status_hdr);
2375
- *p++ = 0x00; // literal header, not indexed
2376
- *p++ = 11; // len(grpc-status)
2377
- *p++ = 'g';
2378
- *p++ = 'r';
2379
- *p++ = 'p';
2380
- *p++ = 'c';
2381
- *p++ = '-';
2382
- *p++ = 's';
2383
- *p++ = 't';
2384
- *p++ = 'a';
2385
- *p++ = 't';
2386
- *p++ = 'u';
2387
- *p++ = 's';
2388
- if (grpc_status < 10) {
2389
- *p++ = 1;
2390
- *p++ = static_cast<uint8_t>('0' + grpc_status);
2391
- } else {
2392
- *p++ = 2;
2393
- *p++ = static_cast<uint8_t>('0' + (grpc_status / 10));
2394
- *p++ = static_cast<uint8_t>('0' + (grpc_status % 10));
2395
- }
2396
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
2397
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
2398
-
2399
- size_t msg_len = message.length();
2400
- GPR_ASSERT(msg_len <= UINT32_MAX);
2401
- grpc_core::VarintWriter<1> msg_len_writer(static_cast<uint32_t>(msg_len));
2402
- message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2403
- p = GRPC_SLICE_START_PTR(message_pfx);
2404
- *p++ = 0x00; // literal header, not indexed
2405
- *p++ = 12; // len(grpc-message)
2406
- *p++ = 'g';
2407
- *p++ = 'r';
2408
- *p++ = 'p';
2409
- *p++ = 'c';
2410
- *p++ = '-';
2411
- *p++ = 'm';
2412
- *p++ = 'e';
2413
- *p++ = 's';
2414
- *p++ = 's';
2415
- *p++ = 'a';
2416
- *p++ = 'g';
2417
- *p++ = 'e';
2418
- msg_len_writer.Write(0, p);
2419
- p += msg_len_writer.length();
2420
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
2421
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
2422
- len += static_cast<uint32_t>(msg_len);
2423
-
2424
- hdr = GRPC_SLICE_MALLOC(9);
2425
- p = GRPC_SLICE_START_PTR(hdr);
2426
- *p++ = static_cast<uint8_t>(len >> 16);
2427
- *p++ = static_cast<uint8_t>(len >> 8);
2428
- *p++ = static_cast<uint8_t>(len);
2429
- *p++ = GRPC_CHTTP2_FRAME_HEADER;
2430
- *p++ = GRPC_CHTTP2_DATA_FLAG_END_STREAM | GRPC_CHTTP2_DATA_FLAG_END_HEADERS;
2431
- *p++ = static_cast<uint8_t>(s->id >> 24);
2432
- *p++ = static_cast<uint8_t>(s->id >> 16);
2433
- *p++ = static_cast<uint8_t>(s->id >> 8);
2434
- *p++ = static_cast<uint8_t>(s->id);
2435
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(hdr));
2436
-
2437
- grpc_slice_buffer_add(&t->qbuf, hdr);
2438
- if (!s->sent_initial_metadata) {
2439
- grpc_slice_buffer_add(&t->qbuf, http_status_hdr);
2440
- grpc_slice_buffer_add(&t->qbuf, content_type_hdr);
2441
- }
2442
- grpc_slice_buffer_add(&t->qbuf, status_hdr);
2443
- grpc_slice_buffer_add(&t->qbuf, message_pfx);
2444
- grpc_slice_buffer_add(&t->qbuf,
2445
- grpc_slice_from_cpp_string(std::move(message)));
2446
- grpc_chttp2_reset_ping_clock(t);
2447
- grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2448
- &s->stats.outgoing);
2449
-
2450
- grpc_chttp2_mark_stream_closed(t, s, 1, 1, error);
2451
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
2452
- }
2453
-
2454
- struct cancel_stream_cb_args {
2455
- grpc_error_handle error;
2456
- grpc_chttp2_transport* t;
2457
- };
2419
+ auto remove_stream_handle = grpc_chttp2_mark_stream_closed(t, s, 1, 1, error);
2420
+ grpc_core::MaybeTarpit(
2421
+ t, tarpit,
2422
+ [error = std::move(error),
2423
+ sent_initial_metadata = s->sent_initial_metadata, id = s->id,
2424
+ grpc_status, message = std::move(message),
2425
+ remove_stream_handle =
2426
+ std::move(remove_stream_handle)](grpc_chttp2_transport* t) mutable {
2427
+ grpc_slice hdr;
2428
+ grpc_slice status_hdr;
2429
+ grpc_slice http_status_hdr;
2430
+ grpc_slice content_type_hdr;
2431
+ grpc_slice message_pfx;
2432
+ uint8_t* p;
2433
+ uint32_t len = 0;
2434
+
2435
+ // Hand roll a header block.
2436
+ // This is unnecessarily ugly - at some point we should find a more
2437
+ // elegant solution.
2438
+ // It's complicated by the fact that our send machinery would be dead
2439
+ // by the time we got around to sending this, so instead we ignore
2440
+ // HPACK compression and just write the uncompressed bytes onto the
2441
+ // wire.
2442
+ if (!sent_initial_metadata) {
2443
+ http_status_hdr = GRPC_SLICE_MALLOC(13);
2444
+ p = GRPC_SLICE_START_PTR(http_status_hdr);
2445
+ *p++ = 0x00;
2446
+ *p++ = 7;
2447
+ *p++ = ':';
2448
+ *p++ = 's';
2449
+ *p++ = 't';
2450
+ *p++ = 'a';
2451
+ *p++ = 't';
2452
+ *p++ = 'u';
2453
+ *p++ = 's';
2454
+ *p++ = 3;
2455
+ *p++ = '2';
2456
+ *p++ = '0';
2457
+ *p++ = '0';
2458
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(http_status_hdr));
2459
+ len += static_cast<uint32_t> GRPC_SLICE_LENGTH(http_status_hdr);
2460
+
2461
+ content_type_hdr = GRPC_SLICE_MALLOC(31);
2462
+ p = GRPC_SLICE_START_PTR(content_type_hdr);
2463
+ *p++ = 0x00;
2464
+ *p++ = 12;
2465
+ *p++ = 'c';
2466
+ *p++ = 'o';
2467
+ *p++ = 'n';
2468
+ *p++ = 't';
2469
+ *p++ = 'e';
2470
+ *p++ = 'n';
2471
+ *p++ = 't';
2472
+ *p++ = '-';
2473
+ *p++ = 't';
2474
+ *p++ = 'y';
2475
+ *p++ = 'p';
2476
+ *p++ = 'e';
2477
+ *p++ = 16;
2478
+ *p++ = 'a';
2479
+ *p++ = 'p';
2480
+ *p++ = 'p';
2481
+ *p++ = 'l';
2482
+ *p++ = 'i';
2483
+ *p++ = 'c';
2484
+ *p++ = 'a';
2485
+ *p++ = 't';
2486
+ *p++ = 'i';
2487
+ *p++ = 'o';
2488
+ *p++ = 'n';
2489
+ *p++ = '/';
2490
+ *p++ = 'g';
2491
+ *p++ = 'r';
2492
+ *p++ = 'p';
2493
+ *p++ = 'c';
2494
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(content_type_hdr));
2495
+ len += static_cast<uint32_t> GRPC_SLICE_LENGTH(content_type_hdr);
2496
+ }
2458
2497
 
2459
- static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2460
- cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
2461
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
2462
- grpc_chttp2_cancel_stream(args->t, s, args->error);
2498
+ status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10));
2499
+ p = GRPC_SLICE_START_PTR(status_hdr);
2500
+ *p++ = 0x00; // literal header, not indexed
2501
+ *p++ = 11; // len(grpc-status)
2502
+ *p++ = 'g';
2503
+ *p++ = 'r';
2504
+ *p++ = 'p';
2505
+ *p++ = 'c';
2506
+ *p++ = '-';
2507
+ *p++ = 's';
2508
+ *p++ = 't';
2509
+ *p++ = 'a';
2510
+ *p++ = 't';
2511
+ *p++ = 'u';
2512
+ *p++ = 's';
2513
+ if (grpc_status < 10) {
2514
+ *p++ = 1;
2515
+ *p++ = static_cast<uint8_t>('0' + grpc_status);
2516
+ } else {
2517
+ *p++ = 2;
2518
+ *p++ = static_cast<uint8_t>('0' + (grpc_status / 10));
2519
+ *p++ = static_cast<uint8_t>('0' + (grpc_status % 10));
2520
+ }
2521
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
2522
+ len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
2523
+
2524
+ size_t msg_len = message.length();
2525
+ GPR_ASSERT(msg_len <= UINT32_MAX);
2526
+ grpc_core::VarintWriter<1> msg_len_writer(
2527
+ static_cast<uint32_t>(msg_len));
2528
+ message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2529
+ p = GRPC_SLICE_START_PTR(message_pfx);
2530
+ *p++ = 0x00; // literal header, not indexed
2531
+ *p++ = 12; // len(grpc-message)
2532
+ *p++ = 'g';
2533
+ *p++ = 'r';
2534
+ *p++ = 'p';
2535
+ *p++ = 'c';
2536
+ *p++ = '-';
2537
+ *p++ = 'm';
2538
+ *p++ = 'e';
2539
+ *p++ = 's';
2540
+ *p++ = 's';
2541
+ *p++ = 'a';
2542
+ *p++ = 'g';
2543
+ *p++ = 'e';
2544
+ msg_len_writer.Write(0, p);
2545
+ p += msg_len_writer.length();
2546
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
2547
+ len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
2548
+ len += static_cast<uint32_t>(msg_len);
2549
+
2550
+ hdr = GRPC_SLICE_MALLOC(9);
2551
+ p = GRPC_SLICE_START_PTR(hdr);
2552
+ *p++ = static_cast<uint8_t>(len >> 16);
2553
+ *p++ = static_cast<uint8_t>(len >> 8);
2554
+ *p++ = static_cast<uint8_t>(len);
2555
+ *p++ = GRPC_CHTTP2_FRAME_HEADER;
2556
+ *p++ = GRPC_CHTTP2_DATA_FLAG_END_STREAM |
2557
+ GRPC_CHTTP2_DATA_FLAG_END_HEADERS;
2558
+ *p++ = static_cast<uint8_t>(id >> 24);
2559
+ *p++ = static_cast<uint8_t>(id >> 16);
2560
+ *p++ = static_cast<uint8_t>(id >> 8);
2561
+ *p++ = static_cast<uint8_t>(id);
2562
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(hdr));
2563
+
2564
+ grpc_slice_buffer_add(&t->qbuf, hdr);
2565
+ if (!sent_initial_metadata) {
2566
+ grpc_slice_buffer_add(&t->qbuf, http_status_hdr);
2567
+ grpc_slice_buffer_add(&t->qbuf, content_type_hdr);
2568
+ }
2569
+ grpc_slice_buffer_add(&t->qbuf, status_hdr);
2570
+ grpc_slice_buffer_add(&t->qbuf, message_pfx);
2571
+ grpc_slice_buffer_add(&t->qbuf,
2572
+ grpc_slice_from_cpp_string(std::move(message)));
2573
+ grpc_chttp2_reset_ping_clock(t);
2574
+ grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_NO_ERROR,
2575
+ nullptr);
2576
+
2577
+ grpc_chttp2_initiate_write(t,
2578
+ GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
2579
+ });
2463
2580
  }
2464
2581
 
2465
2582
  static void end_all_the_calls(grpc_chttp2_transport* t,
@@ -2472,9 +2589,14 @@ static void end_all_the_calls(grpc_chttp2_transport* t,
2472
2589
  error = grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
2473
2590
  GRPC_STATUS_UNAVAILABLE);
2474
2591
  }
2475
- cancel_unstarted_streams(t, error);
2476
- cancel_stream_cb_args args = {error, t};
2477
- grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
2592
+ cancel_unstarted_streams(t, error, false);
2593
+ std::vector<grpc_chttp2_stream*> to_cancel;
2594
+ for (auto id_stream : t->stream_map) {
2595
+ to_cancel.push_back(id_stream.second);
2596
+ }
2597
+ for (auto s : to_cancel) {
2598
+ grpc_chttp2_cancel_stream(t, s, error, false);
2599
+ }
2478
2600
  }
2479
2601
 
2480
2602
  //
@@ -2510,21 +2632,19 @@ void grpc_chttp2_act_on_flowctl_action(
2510
2632
  GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL, []() {});
2511
2633
  WithUrgency(t, action.send_initial_window_update(),
2512
2634
  GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2513
- queue_setting_update(t,
2514
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
2515
- action.initial_window_size());
2516
- });
2517
- WithUrgency(t, action.send_max_frame_size_update(),
2518
- GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2519
- queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
2520
- action.max_frame_size());
2635
+ t->settings.mutable_local().SetInitialWindowSize(
2636
+ action.initial_window_size());
2521
2637
  });
2638
+ WithUrgency(
2639
+ t, action.send_max_frame_size_update(),
2640
+ GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2641
+ t->settings.mutable_local().SetMaxFrameSize(action.max_frame_size());
2642
+ });
2522
2643
  if (t->enable_preferred_rx_crypto_frame_advertisement) {
2523
2644
  WithUrgency(
2524
2645
  t, action.preferred_rx_crypto_frame_size_update(),
2525
2646
  GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2526
- queue_setting_update(
2527
- t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
2647
+ t->settings.mutable_local().SetPreferredReceiveCryptoMessageSize(
2528
2648
  action.preferred_rx_crypto_frame_size());
2529
2649
  });
2530
2650
  }
@@ -2558,31 +2678,45 @@ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2558
2678
  return error;
2559
2679
  }
2560
2680
 
2561
- static void read_action(void* tp, grpc_error_handle error) {
2562
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2563
- t->combiner->Run(
2564
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2565
- error);
2681
+ static void read_action(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2682
+ grpc_error_handle error) {
2683
+ auto* tp = t.get();
2684
+ tp->combiner->Run(grpc_core::InitTransportClosure<read_action_locked>(
2685
+ std::move(t), &tp->read_action_locked),
2686
+ error);
2566
2687
  }
2567
2688
 
2568
- static void read_action_locked(void* tp, grpc_error_handle error) {
2569
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2570
-
2571
- grpc_error_handle err = error;
2572
- if (!err.ok()) {
2573
- err = grpc_error_set_int(
2574
- GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2575
- grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2576
- }
2577
- std::swap(err, error);
2689
+ static void read_action_parse_loop_locked(
2690
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2691
+ grpc_error_handle error) {
2578
2692
  if (t->closed_with_error.ok()) {
2579
- size_t i = 0;
2580
2693
  grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
2581
- for (; i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
2582
- errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2694
+ size_t requests_started = 0;
2695
+ for (size_t i = 0;
2696
+ i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
2697
+ auto r = grpc_chttp2_perform_read(t.get(), t->read_buffer.slices[i],
2698
+ requests_started);
2699
+ if (auto* partial_read_size = absl::get_if<size_t>(&r)) {
2700
+ for (size_t j = 0; j < i; j++) {
2701
+ grpc_core::CSliceUnref(grpc_slice_buffer_take_first(&t->read_buffer));
2702
+ }
2703
+ grpc_slice_buffer_sub_first(
2704
+ &t->read_buffer, *partial_read_size,
2705
+ GRPC_SLICE_LENGTH(t->read_buffer.slices[0]));
2706
+ t->combiner->ForceOffload();
2707
+ auto* tp = t.get();
2708
+ tp->combiner->Run(
2709
+ grpc_core::InitTransportClosure<read_action_parse_loop_locked>(
2710
+ std::move(t), &tp->read_action_locked),
2711
+ std::move(errors[0]));
2712
+ // Early return: we queued to retry later.
2713
+ return;
2714
+ } else {
2715
+ errors[1] = std::move(absl::get<absl::Status>(r));
2716
+ }
2583
2717
  }
2584
2718
  if (errors[1] != absl::OkStatus()) {
2585
- errors[2] = try_http_parsing(t);
2719
+ errors[2] = try_http_parsing(t.get());
2586
2720
  error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
2587
2721
  GPR_ARRAY_SIZE(errors));
2588
2722
  }
@@ -2590,10 +2724,11 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2590
2724
  if (t->initial_window_update != 0) {
2591
2725
  if (t->initial_window_update > 0) {
2592
2726
  grpc_chttp2_stream* s;
2593
- while (grpc_chttp2_list_pop_stalled_by_stream(t, &s)) {
2594
- grpc_chttp2_mark_stream_writable(t, s);
2727
+ while (grpc_chttp2_list_pop_stalled_by_stream(t.get(), &s)) {
2728
+ grpc_chttp2_mark_stream_writable(t.get(), s);
2595
2729
  grpc_chttp2_initiate_write(
2596
- t, GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING);
2730
+ t.get(),
2731
+ GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING);
2597
2732
  }
2598
2733
  }
2599
2734
  t->initial_window_update = 0;
@@ -2612,13 +2747,12 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2612
2747
  error = grpc_error_add_child(error, t->goaway_error);
2613
2748
  }
2614
2749
 
2615
- close_transport_locked(t, error);
2616
- t->endpoint_reading = 0;
2750
+ close_transport_locked(t.get(), error);
2617
2751
  } else if (t->closed_with_error.ok()) {
2618
2752
  keep_reading = true;
2619
2753
  // Since we have read a byte, reset the keepalive timer
2620
2754
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2621
- maybe_reset_keepalive_ping_timer_locked(t);
2755
+ maybe_reset_keepalive_ping_timer_locked(t.get());
2622
2756
  }
2623
2757
  }
2624
2758
  grpc_slice_buffer_reset_and_unref(&t->read_buffer);
@@ -2630,45 +2764,73 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2630
2764
  gpr_log(GPR_INFO,
2631
2765
  "transport %p : Pausing reading due to too "
2632
2766
  "many unwritten SETTINGS ACK and RST_STREAM frames",
2633
- t));
2767
+ t.get()));
2634
2768
  } else {
2635
- continue_read_action_locked(t);
2769
+ continue_read_action_locked(std::move(t));
2636
2770
  }
2637
- } else {
2638
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
2639
2771
  }
2640
2772
  }
2641
2773
 
2642
- static void continue_read_action_locked(grpc_chttp2_transport* t) {
2774
+ static void read_action_locked(
2775
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2776
+ grpc_error_handle error) {
2777
+ // got an incoming read, cancel any pending keepalive timers
2778
+ t->keepalive_incoming_data_wanted = false;
2779
+ if (t->keepalive_ping_timeout_handle != TaskHandle::kInvalid) {
2780
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace) ||
2781
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2782
+ gpr_log(GPR_INFO,
2783
+ "%s[%p]: Clear keepalive timer because data was received",
2784
+ t->is_client ? "CLIENT" : "SERVER", t.get());
2785
+ }
2786
+ t->event_engine->Cancel(
2787
+ std::exchange(t->keepalive_ping_timeout_handle, TaskHandle::kInvalid));
2788
+ }
2789
+ grpc_error_handle err = error;
2790
+ if (!err.ok()) {
2791
+ err = grpc_error_set_int(
2792
+ GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2793
+ grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2794
+ }
2795
+ std::swap(err, error);
2796
+ read_action_parse_loop_locked(std::move(t), std::move(err));
2797
+ }
2798
+
2799
+ static void continue_read_action_locked(
2800
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
2643
2801
  const bool urgent = !t->goaway_error.ok();
2644
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
2645
- grpc_schedule_on_exec_ctx);
2646
- grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
2647
- grpc_chttp2_min_read_progress_size(t));
2802
+ auto* tp = t.get();
2803
+ grpc_endpoint_read(tp->ep, &tp->read_buffer,
2804
+ grpc_core::InitTransportClosure<read_action>(
2805
+ std::move(t), &tp->read_action_locked),
2806
+ urgent, grpc_chttp2_min_read_progress_size(tp));
2648
2807
  }
2649
2808
 
2650
2809
  // t is reffed prior to calling the first time, and once the callback chain
2651
2810
  // that kicks off finishes, it's unreffed
2652
- void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2653
- t->flow_control.bdp_estimator()->SchedulePing();
2654
- send_ping_locked(
2655
- t,
2656
- GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked, start_bdp_ping, t,
2657
- grpc_schedule_on_exec_ctx),
2658
- GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2659
- grpc_schedule_on_exec_ctx));
2660
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2661
- }
2662
-
2663
- static void start_bdp_ping(void* tp, grpc_error_handle error) {
2664
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2665
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2666
- start_bdp_ping_locked, t, nullptr),
2667
- error);
2668
- }
2669
-
2670
- static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2671
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2811
+ void schedule_bdp_ping_locked(
2812
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
2813
+ auto* tp = t.get();
2814
+ tp->flow_control.bdp_estimator()->SchedulePing();
2815
+ send_ping_locked(tp,
2816
+ grpc_core::InitTransportClosure<start_bdp_ping>(
2817
+ tp->Ref(), &tp->start_bdp_ping_locked),
2818
+ grpc_core::InitTransportClosure<finish_bdp_ping>(
2819
+ std::move(t), &tp->finish_bdp_ping_locked));
2820
+ grpc_chttp2_initiate_write(tp, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2821
+ }
2822
+
2823
+ static void start_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2824
+ grpc_error_handle error) {
2825
+ grpc_chttp2_transport* tp = t.get();
2826
+ tp->combiner->Run(grpc_core::InitTransportClosure<start_bdp_ping_locked>(
2827
+ std::move(t), &tp->start_bdp_ping_locked),
2828
+ error);
2829
+ }
2830
+
2831
+ static void start_bdp_ping_locked(
2832
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2833
+ grpc_error_handle error) {
2672
2834
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2673
2835
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
2674
2836
  std::string(t->peer_string.as_string_view()).c_str(),
@@ -2679,157 +2841,143 @@ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2679
2841
  }
2680
2842
  // Reset the keepalive ping timer
2681
2843
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2682
- maybe_reset_keepalive_ping_timer_locked(t);
2844
+ maybe_reset_keepalive_ping_timer_locked(t.get());
2683
2845
  }
2684
2846
  t->flow_control.bdp_estimator()->StartPing();
2685
2847
  t->bdp_ping_started = true;
2686
2848
  }
2687
2849
 
2688
- static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2689
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2690
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2691
- finish_bdp_ping_locked, t, nullptr),
2692
- error);
2850
+ static void finish_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2851
+ grpc_error_handle error) {
2852
+ grpc_chttp2_transport* tp = t.get();
2853
+ tp->combiner->Run(grpc_core::InitTransportClosure<finish_bdp_ping_locked>(
2854
+ std::move(t), &tp->finish_bdp_ping_locked),
2855
+ error);
2693
2856
  }
2694
2857
 
2695
- static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2696
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2858
+ static void finish_bdp_ping_locked(
2859
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2860
+ grpc_error_handle error) {
2697
2861
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2698
2862
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
2699
2863
  std::string(t->peer_string.as_string_view()).c_str(),
2700
2864
  grpc_core::StatusToString(error).c_str());
2701
2865
  }
2702
2866
  if (!error.ok() || !t->closed_with_error.ok()) {
2703
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2704
2867
  return;
2705
2868
  }
2706
2869
  if (!t->bdp_ping_started) {
2707
2870
  // start_bdp_ping_locked has not been run yet. Schedule
2708
2871
  // finish_bdp_ping_locked to be run later.
2709
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2710
- finish_bdp_ping_locked, t, nullptr),
2711
- error);
2872
+ finish_bdp_ping(std::move(t), std::move(error));
2712
2873
  return;
2713
2874
  }
2714
2875
  t->bdp_ping_started = false;
2715
2876
  grpc_core::Timestamp next_ping =
2716
2877
  t->flow_control.bdp_estimator()->CompletePing();
2717
- grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t,
2878
+ grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t.get(),
2718
2879
  nullptr);
2719
- GPR_ASSERT(!t->next_bdp_ping_timer_handle.has_value());
2880
+ GPR_ASSERT(t->next_bdp_ping_timer_handle == TaskHandle::kInvalid);
2720
2881
  t->next_bdp_ping_timer_handle =
2721
2882
  t->event_engine->RunAfter(next_ping - grpc_core::Timestamp::Now(), [t] {
2722
2883
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2723
2884
  grpc_core::ExecCtx exec_ctx;
2724
- next_bdp_ping_timer_expired(t);
2885
+ next_bdp_ping_timer_expired(t.get());
2725
2886
  });
2726
2887
  }
2727
2888
 
2728
2889
  static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t) {
2729
2890
  t->combiner->Run(
2730
- GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
2731
- next_bdp_ping_timer_expired_locked, t, nullptr),
2891
+ grpc_core::InitTransportClosure<next_bdp_ping_timer_expired_locked>(
2892
+ t->Ref(), &t->next_bdp_ping_timer_expired_locked),
2732
2893
  absl::OkStatus());
2733
2894
  }
2734
2895
 
2735
2896
  static void next_bdp_ping_timer_expired_locked(
2736
- void* tp, GRPC_UNUSED grpc_error_handle error) {
2897
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2898
+ GRPC_UNUSED grpc_error_handle error) {
2737
2899
  GPR_DEBUG_ASSERT(error.ok());
2738
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2739
- GPR_ASSERT(t->next_bdp_ping_timer_handle.has_value());
2740
- t->next_bdp_ping_timer_handle.reset();
2900
+ GPR_ASSERT(t->next_bdp_ping_timer_handle != TaskHandle::kInvalid);
2901
+ t->next_bdp_ping_timer_handle = TaskHandle::kInvalid;
2741
2902
  if (t->flow_control.bdp_estimator()->accumulator() == 0) {
2742
2903
  // Block the bdp ping till we receive more data.
2743
2904
  t->bdp_ping_blocked = true;
2744
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2745
2905
  } else {
2746
- schedule_bdp_ping_locked(t);
2906
+ schedule_bdp_ping_locked(std::move(t));
2747
2907
  }
2748
2908
  }
2749
2909
 
2750
2910
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2751
2911
  bool is_client) {
2752
- size_t i;
2753
- if (args) {
2754
- for (i = 0; i < args->num_args; i++) {
2755
- if (0 == strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
2756
- const int value = grpc_channel_arg_get_integer(
2757
- &args->args[i], {is_client ? g_default_client_keepalive_time_ms
2758
- : g_default_server_keepalive_time_ms,
2759
- 1, INT_MAX});
2760
- if (is_client) {
2761
- g_default_client_keepalive_time_ms = value;
2762
- } else {
2763
- g_default_server_keepalive_time_ms = value;
2764
- }
2765
- } else if (0 ==
2766
- strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
2767
- const int value = grpc_channel_arg_get_integer(
2768
- &args->args[i], {is_client ? g_default_client_keepalive_timeout_ms
2769
- : g_default_server_keepalive_timeout_ms,
2770
- 0, INT_MAX});
2771
- if (is_client) {
2772
- g_default_client_keepalive_timeout_ms = value;
2773
- } else {
2774
- g_default_server_keepalive_timeout_ms = value;
2775
- }
2776
- } else if (0 == strcmp(args->args[i].key,
2777
- GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
2778
- const bool value = static_cast<uint32_t>(grpc_channel_arg_get_integer(
2779
- &args->args[i],
2780
- {is_client ? g_default_client_keepalive_permit_without_calls
2781
- : g_default_server_keepalive_timeout_ms,
2782
- 0, 1}));
2783
- if (is_client) {
2784
- g_default_client_keepalive_permit_without_calls = value;
2785
- } else {
2786
- g_default_server_keepalive_permit_without_calls = value;
2787
- }
2788
- } else if (0 ==
2789
- strcmp(args->args[i].key, GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
2790
- g_default_max_ping_strikes = grpc_channel_arg_get_integer(
2791
- &args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
2792
- } else if (0 == strcmp(args->args[i].key,
2793
- GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
2794
- g_default_max_pings_without_data = grpc_channel_arg_get_integer(
2795
- &args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
2796
- } else if (0 ==
2797
- strcmp(
2798
- args->args[i].key,
2799
- GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
2800
- g_default_min_recv_ping_interval_without_data_ms =
2801
- grpc_channel_arg_get_integer(
2802
- &args->args[i],
2803
- {g_default_min_recv_ping_interval_without_data_ms, 0, INT_MAX});
2804
- }
2805
- }
2912
+ grpc_chttp2_config_default_keepalive_args(grpc_core::ChannelArgs::FromC(args),
2913
+ is_client);
2914
+ }
2915
+
2916
+ void grpc_chttp2_config_default_keepalive_args(
2917
+ const grpc_core::ChannelArgs& channel_args, bool is_client) {
2918
+ const auto keepalive_time =
2919
+ std::max(grpc_core::Duration::Milliseconds(1),
2920
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
2921
+ .value_or(is_client ? g_default_client_keepalive_time
2922
+ : g_default_server_keepalive_time));
2923
+ if (is_client) {
2924
+ g_default_client_keepalive_time = keepalive_time;
2925
+ } else {
2926
+ g_default_server_keepalive_time = keepalive_time;
2927
+ }
2928
+
2929
+ const auto keepalive_timeout = std::max(
2930
+ grpc_core::Duration::Zero(),
2931
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
2932
+ .value_or(is_client ? g_default_client_keepalive_timeout
2933
+ : g_default_server_keepalive_timeout));
2934
+ if (is_client) {
2935
+ g_default_client_keepalive_timeout = keepalive_timeout;
2936
+ } else {
2937
+ g_default_server_keepalive_timeout = keepalive_timeout;
2806
2938
  }
2939
+
2940
+ const bool keepalive_permit_without_calls =
2941
+ channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
2942
+ .value_or(is_client
2943
+ ? g_default_client_keepalive_permit_without_calls
2944
+ : g_default_server_keepalive_permit_without_calls);
2945
+ if (is_client) {
2946
+ g_default_client_keepalive_permit_without_calls =
2947
+ keepalive_permit_without_calls;
2948
+ } else {
2949
+ g_default_server_keepalive_permit_without_calls =
2950
+ keepalive_permit_without_calls;
2951
+ }
2952
+
2953
+ grpc_core::Chttp2PingAbusePolicy::SetDefaults(channel_args);
2954
+ grpc_core::Chttp2PingRatePolicy::SetDefaults(channel_args);
2807
2955
  }
2808
2956
 
2809
- static void init_keepalive_ping(grpc_chttp2_transport* t) {
2810
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2811
- init_keepalive_ping_locked, t, nullptr),
2812
- absl::OkStatus());
2957
+ static void init_keepalive_ping(
2958
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t) {
2959
+ auto* tp = t.get();
2960
+ tp->combiner->Run(grpc_core::InitTransportClosure<init_keepalive_ping_locked>(
2961
+ std::move(t), &tp->init_keepalive_ping_locked),
2962
+ absl::OkStatus());
2813
2963
  }
2814
2964
 
2815
- static void init_keepalive_ping_locked(void* arg,
2816
- GRPC_UNUSED grpc_error_handle error) {
2965
+ static void init_keepalive_ping_locked(
2966
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2967
+ GRPC_UNUSED grpc_error_handle error) {
2817
2968
  GPR_DEBUG_ASSERT(error.ok());
2818
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2819
2969
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2820
- GPR_ASSERT(t->keepalive_ping_timer_handle.has_value());
2821
- t->keepalive_ping_timer_handle.reset();
2970
+ GPR_ASSERT(t->keepalive_ping_timer_handle != TaskHandle::kInvalid);
2971
+ t->keepalive_ping_timer_handle = TaskHandle::kInvalid;
2822
2972
  if (t->destroying || !t->closed_with_error.ok()) {
2823
2973
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2824
2974
  } else {
2825
- if (t->keepalive_permit_without_calls ||
2826
- grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
2975
+ if (t->keepalive_permit_without_calls || !t->stream_map.empty()) {
2827
2976
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
2828
- GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end");
2829
2977
  send_keepalive_ping_locked(t);
2830
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING);
2978
+ grpc_chttp2_initiate_write(t.get(),
2979
+ GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING);
2831
2980
  } else {
2832
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2833
2981
  t->keepalive_ping_timer_handle =
2834
2982
  t->event_engine->RunAfter(t->keepalive_time, [t] {
2835
2983
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -2838,48 +2986,21 @@ static void init_keepalive_ping_locked(void* arg,
2838
2986
  });
2839
2987
  }
2840
2988
  }
2841
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2842
- }
2843
-
2844
- static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2845
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2846
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2847
- start_keepalive_ping_locked, t, nullptr),
2848
- error);
2849
- }
2850
-
2851
- static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2852
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2853
- if (!error.ok()) {
2854
- return;
2855
- }
2856
- if (t->channelz_socket != nullptr) {
2857
- t->channelz_socket->RecordKeepaliveSent();
2858
- }
2859
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2860
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2861
- gpr_log(GPR_INFO, "%s: Start keepalive ping",
2862
- std::string(t->peer_string.as_string_view()).c_str());
2863
- }
2864
- GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2865
- t->keepalive_watchdog_timer_handle =
2866
- t->event_engine->RunAfter(t->keepalive_timeout, [t] {
2867
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2868
- grpc_core::ExecCtx exec_ctx;
2869
- keepalive_watchdog_fired(t);
2870
- });
2871
- t->keepalive_ping_started = true;
2872
2989
  }
2873
2990
 
2874
- static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2875
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2876
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2877
- finish_keepalive_ping_locked, t, nullptr),
2878
- error);
2991
+ static void finish_keepalive_ping(
2992
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2993
+ grpc_error_handle error) {
2994
+ auto* tp = t.get();
2995
+ tp->combiner->Run(
2996
+ grpc_core::InitTransportClosure<finish_keepalive_ping_locked>(
2997
+ std::move(t), &tp->finish_keepalive_ping_locked),
2998
+ error);
2879
2999
  }
2880
3000
 
2881
- static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2882
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3001
+ static void finish_keepalive_ping_locked(
3002
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
3003
+ grpc_error_handle error) {
2883
3004
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2884
3005
  if (error.ok()) {
2885
3006
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
@@ -2887,25 +3008,8 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2887
3008
  gpr_log(GPR_INFO, "%s: Finish keepalive ping",
2888
3009
  std::string(t->peer_string.as_string_view()).c_str());
2889
3010
  }
2890
- if (!t->keepalive_ping_started) {
2891
- // start_keepalive_ping_locked has not run yet. Reschedule
2892
- // finish_keepalive_ping_locked for it to be run later.
2893
- t->combiner->Run(
2894
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2895
- finish_keepalive_ping_locked, t, nullptr),
2896
- error);
2897
- return;
2898
- }
2899
- t->keepalive_ping_started = false;
2900
3011
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
2901
- if (t->keepalive_watchdog_timer_handle.has_value()) {
2902
- if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
2903
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2904
- t->keepalive_watchdog_timer_handle.reset();
2905
- }
2906
- }
2907
- GPR_ASSERT(!t->keepalive_ping_timer_handle.has_value());
2908
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
3012
+ GPR_ASSERT(t->keepalive_ping_timer_handle == TaskHandle::kInvalid);
2909
3013
  t->keepalive_ping_timer_handle =
2910
3014
  t->event_engine->RunAfter(t->keepalive_time, [t] {
2911
3015
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -2914,57 +3018,24 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2914
3018
  });
2915
3019
  }
2916
3020
  }
2917
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2918
- }
2919
-
2920
- static void keepalive_watchdog_fired(grpc_chttp2_transport* t) {
2921
- t->combiner->Run(
2922
- GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
2923
- keepalive_watchdog_fired_locked, t, nullptr),
2924
- absl::OkStatus());
2925
- }
2926
-
2927
- static void keepalive_watchdog_fired_locked(
2928
- void* arg, GRPC_UNUSED grpc_error_handle error) {
2929
- GPR_DEBUG_ASSERT(error.ok());
2930
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2931
- GPR_ASSERT(t->keepalive_watchdog_timer_handle.has_value());
2932
- t->keepalive_watchdog_timer_handle.reset();
2933
- if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2934
- gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2935
- std::string(t->peer_string.as_string_view()).c_str());
2936
- t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2937
- close_transport_locked(
2938
- t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
2939
- grpc_core::StatusIntProperty::kRpcStatus,
2940
- GRPC_STATUS_UNAVAILABLE));
2941
- } else {
2942
- // If keepalive_state is not PINGING, we consider it as an error. Maybe the
2943
- // cancellation failed in finish_keepalive_ping_locked. Users have seen
2944
- // other states: https://github.com/grpc/grpc/issues/32085.
2945
- gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2946
- t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
2947
- }
2948
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2949
3021
  }
2950
3022
 
2951
3023
  static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
2952
- if (t->keepalive_ping_timer_handle.has_value()) {
2953
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
2954
- // Cancel succeeds, resets the keepalive ping timer. Note that we don't
2955
- // need to Ref or Unref here since we still hold the Ref.
2956
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2957
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2958
- gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2959
- std::string(t->peer_string.as_string_view()).c_str());
2960
- }
2961
- t->keepalive_ping_timer_handle =
2962
- t->event_engine->RunAfter(t->keepalive_time, [t] {
2963
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2964
- grpc_core::ExecCtx exec_ctx;
2965
- init_keepalive_ping(t);
2966
- });
3024
+ if (t->keepalive_ping_timer_handle != TaskHandle::kInvalid &&
3025
+ t->event_engine->Cancel(t->keepalive_ping_timer_handle)) {
3026
+ // Cancel succeeds, resets the keepalive ping timer. Note that we don't
3027
+ // need to Ref or Unref here since we still hold the Ref.
3028
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
3029
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
3030
+ gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
3031
+ std::string(t->peer_string.as_string_view()).c_str());
2967
3032
  }
3033
+ t->keepalive_ping_timer_handle =
3034
+ t->event_engine->RunAfter(t->keepalive_time, [t = t->Ref()]() mutable {
3035
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
3036
+ grpc_core::ExecCtx exec_ctx;
3037
+ init_keepalive_ping(std::move(t));
3038
+ });
2968
3039
  }
2969
3040
  }
2970
3041
 
@@ -2976,8 +3047,9 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
2976
3047
  grpc_connectivity_state state,
2977
3048
  const absl::Status& status,
2978
3049
  const char* reason) {
2979
- GRPC_CHTTP2_IF_TRACING(
2980
- gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
3050
+ GRPC_CHTTP2_IF_TRACING(gpr_log(
3051
+ GPR_INFO, "transport %p set connectivity_state=%d; status=%s; reason=%s",
3052
+ t, state, status.ToString().c_str(), reason));
2981
3053
  t->state_tracker.SetState(state, status, reason);
2982
3054
  }
2983
3055
 
@@ -2985,16 +3057,14 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
2985
3057
  // POLLSET STUFF
2986
3058
  //
2987
3059
 
2988
- static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
2989
- grpc_pollset* pollset) {
2990
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2991
- grpc_endpoint_add_to_pollset(t->ep, pollset);
3060
+ void grpc_chttp2_transport::SetPollset(grpc_stream* /*gs*/,
3061
+ grpc_pollset* pollset) {
3062
+ grpc_endpoint_add_to_pollset(ep, pollset);
2992
3063
  }
2993
3064
 
2994
- static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2995
- grpc_pollset_set* pollset_set) {
2996
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2997
- grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
3065
+ void grpc_chttp2_transport::SetPollsetSet(grpc_stream* /*gs*/,
3066
+ grpc_pollset_set* pollset_set) {
3067
+ grpc_endpoint_add_to_pollset_set(ep, pollset_set);
2998
3068
  }
2999
3069
 
3000
3070
  //
@@ -3004,18 +3074,17 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
3004
3074
  static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3005
3075
  if (!t->benign_reclaimer_registered) {
3006
3076
  t->benign_reclaimer_registered = true;
3007
- GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
3008
3077
  t->memory_owner.PostReclaimer(
3009
3078
  grpc_core::ReclamationPass::kBenign,
3010
- [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3079
+ [t = t->Ref()](
3080
+ absl::optional<grpc_core::ReclamationSweep> sweep) mutable {
3011
3081
  if (sweep.has_value()) {
3012
- GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
3013
- benign_reclaimer_locked, t,
3014
- grpc_schedule_on_exec_ctx);
3015
- t->active_reclamation = std::move(*sweep);
3016
- t->combiner->Run(&t->benign_reclaimer_locked, absl::OkStatus());
3017
- } else {
3018
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3082
+ auto* tp = t.get();
3083
+ tp->active_reclamation = std::move(*sweep);
3084
+ tp->combiner->Run(
3085
+ grpc_core::InitTransportClosure<benign_reclaimer_locked>(
3086
+ std::move(t), &tp->benign_reclaimer_locked),
3087
+ absl::OkStatus());
3019
3088
  }
3020
3089
  });
3021
3090
  }
@@ -3024,34 +3093,33 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
3024
3093
  static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
3025
3094
  if (!t->destructive_reclaimer_registered) {
3026
3095
  t->destructive_reclaimer_registered = true;
3027
- GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
3028
3096
  t->memory_owner.PostReclaimer(
3029
3097
  grpc_core::ReclamationPass::kDestructive,
3030
- [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3098
+ [t = t->Ref()](
3099
+ absl::optional<grpc_core::ReclamationSweep> sweep) mutable {
3031
3100
  if (sweep.has_value()) {
3032
- GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
3033
- destructive_reclaimer_locked, t,
3034
- grpc_schedule_on_exec_ctx);
3035
- t->active_reclamation = std::move(*sweep);
3036
- t->combiner->Run(&t->destructive_reclaimer_locked,
3037
- absl::OkStatus());
3038
- } else {
3039
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3101
+ auto* tp = t.get();
3102
+ tp->active_reclamation = std::move(*sweep);
3103
+ tp->combiner->Run(
3104
+ grpc_core::InitTransportClosure<destructive_reclaimer_locked>(
3105
+ std::move(t), &tp->destructive_reclaimer_locked),
3106
+ absl::OkStatus());
3040
3107
  }
3041
3108
  });
3042
3109
  }
3043
3110
  }
3044
3111
 
3045
- static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3046
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3047
- if (error.ok() && grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
3112
+ static void benign_reclaimer_locked(
3113
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
3114
+ grpc_error_handle error) {
3115
+ if (error.ok() && t->stream_map.empty()) {
3048
3116
  // Channel with no active streams: send a goaway to try and make it
3049
3117
  // disconnect cleanly
3050
3118
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3051
3119
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
3052
3120
  std::string(t->peer_string.as_string_view()).c_str());
3053
3121
  }
3054
- send_goaway(t,
3122
+ send_goaway(t.get(),
3055
3123
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3056
3124
  grpc_core::StatusIntProperty::kHttp2Error,
3057
3125
  GRPC_HTTP2_ENHANCE_YOUR_CALM),
@@ -3061,43 +3129,42 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3061
3129
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
3062
3130
  " streams",
3063
3131
  std::string(t->peer_string.as_string_view()).c_str(),
3064
- grpc_chttp2_stream_map_size(&t->stream_map));
3132
+ t->stream_map.size());
3065
3133
  }
3066
3134
  t->benign_reclaimer_registered = false;
3067
3135
  if (error != absl::CancelledError()) {
3068
3136
  t->active_reclamation.Finish();
3069
3137
  }
3070
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3071
3138
  }
3072
3139
 
3073
- static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3074
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3075
- size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
3140
+ static void destructive_reclaimer_locked(
3141
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
3142
+ grpc_error_handle error) {
3076
3143
  t->destructive_reclaimer_registered = false;
3077
- if (error.ok() && n > 0) {
3078
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
3079
- grpc_chttp2_stream_map_rand(&t->stream_map));
3144
+ if (error.ok() && !t->stream_map.empty()) {
3145
+ // As stream_map is a hash map, this selects effectively a random stream.
3146
+ grpc_chttp2_stream* s = t->stream_map.begin()->second;
3080
3147
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3081
3148
  gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
3082
3149
  std::string(t->peer_string.as_string_view()).c_str(), s->id);
3083
3150
  }
3084
3151
  grpc_chttp2_cancel_stream(
3085
- t, s,
3152
+ t.get(), s,
3086
3153
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3087
3154
  grpc_core::StatusIntProperty::kHttp2Error,
3088
- GRPC_HTTP2_ENHANCE_YOUR_CALM));
3089
- if (n > 1) {
3155
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
3156
+ false);
3157
+ if (!t->stream_map.empty()) {
3090
3158
  // Since we cancel one stream per destructive reclamation, if
3091
3159
  // there are more streams left, we can immediately post a new
3092
3160
  // reclaimer in case the resource quota needs to free more
3093
3161
  // memory
3094
- post_destructive_reclaimer(t);
3162
+ post_destructive_reclaimer(t.get());
3095
3163
  }
3096
3164
  }
3097
3165
  if (error != absl::CancelledError()) {
3098
3166
  t->active_reclamation.Finish();
3099
3167
  }
3100
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3101
3168
  }
3102
3169
 
3103
3170
  //
@@ -3155,53 +3222,46 @@ const char* grpc_chttp2_initiate_write_reason_string(
3155
3222
  GPR_UNREACHABLE_CODE(return "unknown");
3156
3223
  }
3157
3224
 
3158
- static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
3159
- return (reinterpret_cast<grpc_chttp2_transport*>(t))->ep;
3225
+ grpc_endpoint* grpc_chttp2_transport::GetEndpoint() { return ep; }
3226
+
3227
+ size_t grpc_chttp2_transport::SizeOfStream() const {
3228
+ return sizeof(grpc_chttp2_stream);
3160
3229
  }
3161
3230
 
3162
- static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3163
- false,
3164
- "chttp2",
3165
- init_stream,
3166
- nullptr,
3167
- set_pollset,
3168
- set_pollset_set,
3169
- perform_stream_op,
3170
- perform_transport_op,
3171
- destroy_stream,
3172
- destroy_transport,
3173
- chttp2_get_endpoint};
3231
+ bool grpc_chttp2_transport::
3232
+ HackyDisableStreamOpBatchCoalescingInConnectedChannel() const {
3233
+ return false;
3234
+ }
3174
3235
 
3175
- static const grpc_transport_vtable* get_vtable(void) { return &vtable; }
3236
+ absl::string_view grpc_chttp2_transport::GetTransportName() const {
3237
+ return "chttp2";
3238
+ }
3176
3239
 
3177
3240
  grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode>
3178
- grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
3241
+ grpc_chttp2_transport_get_socket_node(grpc_core::Transport* transport) {
3179
3242
  grpc_chttp2_transport* t =
3180
3243
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3181
3244
  return t->channelz_socket;
3182
3245
  }
3183
3246
 
3184
- grpc_transport* grpc_create_chttp2_transport(
3247
+ grpc_core::Transport* grpc_create_chttp2_transport(
3185
3248
  const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
3186
3249
  bool is_client) {
3187
- auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
3188
- return &t->base;
3250
+ return new grpc_chttp2_transport(channel_args, ep, is_client);
3189
3251
  }
3190
3252
 
3191
3253
  void grpc_chttp2_transport_start_reading(
3192
- grpc_transport* transport, grpc_slice_buffer* read_buffer,
3254
+ grpc_core::Transport* transport, grpc_slice_buffer* read_buffer,
3193
3255
  grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3194
- grpc_chttp2_transport* t =
3195
- reinterpret_cast<grpc_chttp2_transport*>(transport);
3196
- GRPC_CHTTP2_REF_TRANSPORT(
3197
- t, "reading_action"); // matches unref inside reading_action
3256
+ auto t = reinterpret_cast<grpc_chttp2_transport*>(transport)->Ref();
3198
3257
  if (read_buffer != nullptr) {
3199
3258
  grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
3200
3259
  gpr_free(read_buffer);
3201
3260
  }
3202
- t->combiner->Run(
3203
- grpc_core::NewClosure([t, notify_on_receive_settings,
3204
- notify_on_close](grpc_error_handle) {
3261
+ auto* tp = t.get();
3262
+ tp->combiner->Run(
3263
+ grpc_core::NewClosure([t = std::move(t), notify_on_receive_settings,
3264
+ notify_on_close](grpc_error_handle) mutable {
3205
3265
  if (!t->closed_with_error.ok()) {
3206
3266
  if (notify_on_receive_settings != nullptr) {
3207
3267
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
@@ -3211,12 +3271,11 @@ void grpc_chttp2_transport_start_reading(
3211
3271
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_close,
3212
3272
  t->closed_with_error);
3213
3273
  }
3214
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
3215
3274
  return;
3216
3275
  }
3217
3276
  t->notify_on_receive_settings = notify_on_receive_settings;
3218
3277
  t->notify_on_close = notify_on_close;
3219
- read_action_locked(t, absl::OkStatus());
3278
+ read_action_locked(std::move(t), absl::OkStatus());
3220
3279
  }),
3221
3280
  absl::OkStatus());
3222
3281
  }