grpc 1.54.2 → 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 (2782) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1384 -955
  3. data/include/grpc/event_engine/event_engine.h +88 -55
  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_audit_logging.h +96 -0
  9. data/include/grpc/grpc_crl_provider.h +94 -0
  10. data/include/grpc/grpc_security.h +57 -1
  11. data/include/grpc/impl/call.h +29 -0
  12. data/include/grpc/impl/channel_arg_names.h +400 -0
  13. data/include/grpc/impl/grpc_types.h +1 -348
  14. data/include/grpc/impl/slice_type.h +1 -1
  15. data/include/grpc/module.modulemap +5 -0
  16. data/include/grpc/support/json.h +218 -0
  17. data/include/grpc/support/port_platform.h +103 -24
  18. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +61 -16
  19. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
  20. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +49 -46
  21. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
  22. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
  23. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
  24. data/src/core/ext/filters/client_channel/backend_metric.cc +5 -2
  25. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  26. data/src/core/ext/filters/client_channel/client_channel.cc +610 -200
  27. data/src/core/ext/filters/client_channel/client_channel.h +80 -29
  28. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +20 -19
  29. data/src/core/ext/filters/client_channel/client_channel_internal.h +24 -59
  30. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +21 -8
  31. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +2 -2
  32. data/src/core/ext/filters/client_channel/config_selector.h +9 -36
  33. data/src/core/ext/filters/client_channel/connector.h +2 -3
  34. data/src/core/ext/filters/client_channel/dynamic_filters.cc +0 -1
  35. data/src/core/ext/filters/client_channel/dynamic_filters.h +5 -3
  36. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
  37. data/src/core/ext/filters/client_channel/http_proxy_mapper.cc +305 -0
  38. data/src/core/ext/filters/client_channel/http_proxy_mapper.h +53 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +60 -52
  40. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +27 -12
  41. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  42. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +32 -40
  43. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +187 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +220 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +253 -237
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +20 -19
  48. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +4 -4
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -4
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -2
  51. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +520 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +52 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +204 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +15 -13
  55. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
  56. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +270 -191
  57. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  58. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +901 -203
  59. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +36 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -48
  61. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +495 -490
  62. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +16 -1
  63. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +115 -151
  64. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +421 -40
  65. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +37 -35
  66. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +919 -110
  68. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +31 -63
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +535 -546
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +256 -194
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -76
  73. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +810 -316
  74. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
  75. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +34 -103
  76. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +5 -6
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +31 -133
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +105 -175
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +81 -66
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +11 -7
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  84. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +66 -0
  85. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
  86. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +588 -0
  87. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
  88. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
  89. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
  90. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +5 -17
  91. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
  92. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +76 -189
  93. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +46 -27
  94. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +32 -30
  95. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +17 -13
  96. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
  97. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +31 -19
  98. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
  99. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
  100. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +517 -513
  101. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_attributes.h +62 -0
  102. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
  103. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
  104. data/src/core/ext/filters/client_channel/retry_filter.cc +40 -2531
  105. data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
  106. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2051 -0
  107. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
  108. data/src/core/ext/filters/client_channel/retry_service_config.cc +10 -9
  109. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +64 -102
  110. data/src/core/ext/filters/client_channel/subchannel.cc +54 -202
  111. data/src/core/ext/filters/client_channel/subchannel.h +23 -48
  112. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
  113. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +0 -1
  114. data/src/core/ext/filters/deadline/deadline_filter.cc +21 -24
  115. data/src/core/ext/filters/deadline/deadline_filter.h +0 -4
  116. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +18 -13
  117. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
  118. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  119. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -39
  120. data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
  121. data/src/core/ext/filters/http/client_authority_filter.cc +23 -25
  122. data/src/core/ext/filters/http/client_authority_filter.h +12 -4
  123. data/src/core/ext/filters/http/http_filters_plugin.cc +58 -38
  124. data/src/core/ext/filters/http/message_compress/compression_filter.cc +59 -87
  125. data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
  126. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
  127. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
  128. data/src/core/ext/filters/http/server/http_server_filter.cc +55 -53
  129. data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
  130. data/src/core/ext/filters/message_size/message_size_filter.cc +79 -108
  131. data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
  132. data/src/core/ext/filters/rbac/rbac_filter.cc +46 -113
  133. data/src/core/ext/filters/rbac/rbac_filter.h +18 -29
  134. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +162 -72
  135. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +32 -21
  136. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +180 -109
  137. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +54 -11
  138. data/src/core/ext/gcp/metadata_query.cc +0 -1
  139. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  140. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -7
  141. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +36 -36
  142. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1177 -1063
  143. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +68 -4
  144. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +80 -0
  145. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
  146. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
  147. data/src/core/ext/transport/chttp2/transport/flow_control.cc +87 -168
  148. data/src/core/ext/transport/chttp2/transport/flow_control.h +85 -12
  149. data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
  150. data/src/core/ext/transport/chttp2/transport/frame.h +193 -22
  151. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -3
  152. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  153. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +0 -2
  154. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -1
  155. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +23 -26
  156. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -4
  157. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -3
  158. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  159. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -82
  160. data/src/core/ext/transport/chttp2/transport/frame_settings.h +5 -8
  161. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +1 -3
  162. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
  163. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +16 -22
  164. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -3
  165. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -4
  166. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +184 -0
  167. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +351 -0
  168. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +640 -547
  169. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +160 -12
  170. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +48 -33
  171. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +19 -5
  172. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
  173. data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
  174. data/src/core/ext/transport/chttp2/transport/internal.h +228 -181
  175. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +43 -0
  176. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +44 -0
  177. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +67 -0
  178. data/src/core/ext/transport/chttp2/transport/parsing.cc +168 -60
  179. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +90 -0
  180. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +59 -0
  181. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +108 -0
  182. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +115 -0
  183. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +120 -0
  184. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +88 -0
  185. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  186. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +60 -0
  187. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +66 -0
  188. data/src/core/ext/transport/chttp2/transport/writing.cc +238 -179
  189. data/src/core/ext/transport/inproc/inproc_transport.cc +163 -1229
  190. data/src/core/ext/transport/inproc/inproc_transport.h +0 -4
  191. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1303 -0
  192. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +30 -0
  193. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +725 -0
  194. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +149 -0
  195. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +34 -0
  196. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +827 -0
  197. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +180 -0
  198. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +33 -0
  199. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +733 -0
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +157 -0
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +34 -0
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +2772 -0
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +532 -0
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +48 -0
  205. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +248 -0
  206. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +66 -0
  207. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +31 -0
  208. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +280 -0
  209. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +74 -0
  210. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +31 -0
  211. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +162 -0
  212. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +56 -0
  213. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +30 -0
  214. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +122 -0
  215. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +49 -0
  216. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +30 -0
  217. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +117 -0
  218. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +49 -0
  219. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +30 -0
  220. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +928 -0
  221. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +150 -0
  222. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +31 -0
  223. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +117 -0
  224. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +54 -0
  225. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +30 -0
  226. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +122 -0
  227. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +58 -0
  228. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +33 -0
  229. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +109 -0
  230. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +55 -0
  231. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +31 -0
  232. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +1753 -0
  233. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +375 -0
  234. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +45 -0
  235. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +3420 -0
  236. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +612 -0
  237. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +49 -0
  238. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +526 -0
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +125 -0
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +32 -0
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +3890 -0
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +729 -0
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +53 -0
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +117 -0
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +54 -0
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +30 -0
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +659 -0
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +123 -0
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +30 -0
  250. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +1830 -0
  251. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +395 -0
  252. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +44 -0
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +1041 -0
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +224 -0
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +37 -0
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +129 -0
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +55 -0
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +30 -0
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +2420 -0
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +577 -0
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +53 -0
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +1130 -0
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +225 -0
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +36 -0
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +110 -0
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +51 -0
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +30 -0
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +116 -0
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +53 -0
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +30 -0
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +250 -0
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +68 -0
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +31 -0
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +1688 -0
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +378 -0
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +43 -0
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +1938 -0
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +315 -0
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +38 -0
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +144 -0
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +55 -0
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +30 -0
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +2245 -0
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +481 -0
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +45 -0
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +238 -0
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +70 -0
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +31 -0
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +232 -0
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +72 -0
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +31 -0
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +287 -0
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +76 -0
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +31 -0
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +255 -0
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +66 -0
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +30 -0
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +129 -0
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +54 -0
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +30 -0
  301. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +489 -0
  302. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +138 -0
  303. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +33 -0
  304. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +993 -0
  305. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +229 -0
  306. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +36 -0
  307. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +911 -0
  308. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +179 -0
  309. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +34 -0
  310. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +101 -0
  311. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +50 -0
  312. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +30 -0
  313. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +1613 -0
  314. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +268 -0
  315. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +39 -0
  316. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +1447 -0
  317. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +260 -0
  318. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +36 -0
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +327 -0
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +86 -0
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +30 -0
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +197 -0
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +77 -0
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +31 -0
  325. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +183 -0
  326. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +64 -0
  327. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +30 -0
  328. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +974 -0
  329. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +219 -0
  330. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +37 -0
  331. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +1183 -0
  332. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +250 -0
  333. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +39 -0
  334. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +1704 -0
  335. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +348 -0
  336. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +40 -0
  337. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +857 -0
  338. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +133 -0
  339. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +32 -0
  340. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +9666 -0
  341. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1667 -0
  342. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +87 -0
  343. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +341 -0
  344. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +97 -0
  345. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +32 -0
  346. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +1515 -0
  347. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +325 -0
  348. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +41 -0
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +119 -0
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +51 -0
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +30 -0
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +118 -0
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +55 -0
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +30 -0
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +190 -0
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +73 -0
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +31 -0
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +202 -0
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +62 -0
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +30 -0
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +409 -0
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +81 -0
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +30 -0
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +115 -0
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +52 -0
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +30 -0
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +102 -0
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +51 -0
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +30 -0
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +254 -0
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +85 -0
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +31 -0
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +49 -0
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +33 -0
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +39 -0
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +256 -0
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +87 -0
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +31 -0
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +201 -0
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +65 -0
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +30 -0
  382. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +2691 -0
  383. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +555 -0
  384. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +45 -0
  385. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +134 -0
  386. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +46 -0
  387. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +30 -0
  388. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +428 -0
  389. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +116 -0
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +34 -0
  391. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +656 -0
  392. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +141 -0
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +32 -0
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +266 -0
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +87 -0
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +31 -0
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +462 -0
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +101 -0
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +31 -0
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +194 -0
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +72 -0
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +31 -0
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +3943 -0
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +679 -0
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +50 -0
  406. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +101 -0
  407. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +50 -0
  408. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +30 -0
  409. 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
  410. 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
  411. 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
  412. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +488 -0
  413. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +135 -0
  414. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +34 -0
  415. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +86 -0
  416. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +44 -0
  417. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +30 -0
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +250 -0
  419. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +68 -0
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +30 -0
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +101 -0
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +50 -0
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +30 -0
  424. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +39 -0
  425. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +28 -0
  426. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +34 -0
  427. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +1469 -0
  428. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +262 -0
  429. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +36 -0
  430. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +361 -0
  431. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +108 -0
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +32 -0
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1467 -0
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +267 -0
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +36 -0
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +217 -0
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +72 -0
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +31 -0
  439. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
  440. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
  441. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
  442. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +73 -0
  443. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +38 -0
  444. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +30 -0
  445. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +2141 -0
  446. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +402 -0
  447. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +43 -0
  448. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +324 -0
  449. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +84 -0
  450. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +31 -0
  451. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +925 -0
  452. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +183 -0
  453. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +34 -0
  454. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +131 -0
  455. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +54 -0
  456. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +30 -0
  457. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +312 -0
  458. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +86 -0
  459. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +33 -0
  460. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +124 -0
  461. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +53 -0
  462. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +30 -0
  463. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +299 -0
  464. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +105 -0
  465. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +34 -0
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +260 -0
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +76 -0
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +31 -0
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +166 -0
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +55 -0
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +30 -0
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +130 -0
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +54 -0
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +30 -0
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +110 -0
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +51 -0
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +30 -0
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +271 -0
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +96 -0
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +32 -0
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +109 -0
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +43 -0
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +31 -0
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +306 -0
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +81 -0
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +31 -0
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +230 -0
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +70 -0
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +31 -0
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +347 -0
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +92 -0
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +32 -0
  493. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +525 -0
  494. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +127 -0
  495. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +36 -0
  496. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +506 -0
  497. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +139 -0
  498. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +34 -0
  499. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +227 -0
  500. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +76 -0
  501. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +32 -0
  502. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +38 -0
  503. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +26 -0
  504. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +29 -0
  505. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +148 -0
  506. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +46 -0
  507. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +30 -0
  508. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +162 -0
  509. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +64 -0
  510. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +31 -0
  511. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +238 -0
  512. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +84 -0
  513. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +32 -0
  514. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +232 -0
  515. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +75 -0
  516. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +31 -0
  517. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +42 -0
  518. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +26 -0
  519. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +29 -0
  520. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +117 -0
  521. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +49 -0
  522. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +30 -0
  523. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +146 -0
  524. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +57 -0
  525. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +30 -0
  526. data/src/core/ext/upb-gen/google/api/annotations.upb.h +56 -0
  527. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +38 -0
  528. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +30 -0
  529. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +1743 -0
  530. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +369 -0
  531. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +42 -0
  532. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +1829 -0
  533. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +399 -0
  534. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +43 -0
  535. data/src/core/ext/upb-gen/google/api/http.upb.h +496 -0
  536. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +111 -0
  537. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +32 -0
  538. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +165 -0
  539. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +52 -0
  540. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +30 -0
  541. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +99 -0
  542. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +46 -0
  543. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +30 -0
  544. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +6397 -0
  545. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +1357 -0
  546. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +78 -0
  547. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +99 -0
  548. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +46 -0
  549. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +30 -0
  550. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +69 -0
  551. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +35 -0
  552. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +30 -0
  553. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +422 -0
  554. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +115 -0
  555. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +33 -0
  556. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +99 -0
  557. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +46 -0
  558. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +30 -0
  559. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +508 -0
  560. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +163 -0
  561. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +38 -0
  562. data/src/core/ext/upb-gen/google/rpc/status.upb.h +165 -0
  563. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +52 -0
  564. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +30 -0
  565. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +385 -0
  566. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +106 -0
  567. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +33 -0
  568. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +237 -0
  569. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +79 -0
  570. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +31 -0
  571. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +1658 -0
  572. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +342 -0
  573. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +41 -0
  574. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +197 -0
  575. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +69 -0
  576. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +31 -0
  577. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +144 -0
  578. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +58 -0
  579. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +31 -0
  580. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +877 -0
  581. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +221 -0
  582. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +38 -0
  583. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +297 -0
  584. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +92 -0
  585. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +32 -0
  586. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +1333 -0
  587. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +243 -0
  588. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +38 -0
  589. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +322 -0
  590. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +118 -0
  591. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +37 -0
  592. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +125 -0
  593. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +59 -0
  594. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +31 -0
  595. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +55 -0
  596. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +37 -0
  597. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +30 -0
  598. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +131 -0
  599. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +58 -0
  600. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +31 -0
  601. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +109 -0
  602. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +55 -0
  603. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +31 -0
  604. data/src/core/ext/upb-gen/validate/validate.upb.h +6507 -0
  605. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +943 -0
  606. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +57 -0
  607. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +322 -0
  608. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +118 -0
  609. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +37 -0
  610. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +125 -0
  611. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +59 -0
  612. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +31 -0
  613. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +55 -0
  614. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +37 -0
  615. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +30 -0
  616. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +336 -0
  617. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +117 -0
  618. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +36 -0
  619. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +109 -0
  620. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +55 -0
  621. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +31 -0
  622. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +87 -0
  623. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +45 -0
  624. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +30 -0
  625. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +116 -0
  626. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +53 -0
  627. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +30 -0
  628. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +234 -0
  629. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +78 -0
  630. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +31 -0
  631. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +134 -0
  632. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +62 -0
  633. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +31 -0
  634. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +115 -0
  635. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +52 -0
  636. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +30 -0
  637. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +144 -0
  638. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +55 -0
  639. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +30 -0
  640. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +331 -0
  641. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +84 -0
  642. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +31 -0
  643. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +146 -0
  644. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +59 -0
  645. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +30 -0
  646. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +350 -0
  647. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +126 -0
  648. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +33 -0
  649. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +161 -0
  650. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +52 -0
  651. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +30 -0
  652. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +101 -0
  653. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +50 -0
  654. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +30 -0
  655. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +263 -0
  656. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +72 -0
  657. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +31 -0
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +71 -0
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +36 -0
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +30 -0
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +282 -0
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +75 -0
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +31 -0
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +1107 -0
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +265 -0
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +39 -0
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +726 -0
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +157 -0
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +35 -0
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +159 -0
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +58 -0
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +31 -0
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +304 -0
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +79 -0
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +31 -0
  676. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +233 -0
  677. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +79 -0
  678. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +31 -0
  679. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +235 -0
  680. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +82 -0
  681. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +32 -0
  682. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +114 -0
  683. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +51 -0
  684. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +30 -0
  685. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +83 -0
  686. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +55 -0
  687. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +127 -0
  688. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +50 -0
  689. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +101 -0
  690. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +55 -0
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +276 -0
  692. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +42 -0
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +55 -0
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +40 -0
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +48 -0
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +35 -0
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +45 -0
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +35 -0
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +45 -0
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +141 -0
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +40 -0
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -0
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +35 -0
  707. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +47 -0
  708. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +30 -0
  709. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +37 -0
  710. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +35 -0
  711. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +233 -0
  712. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +110 -0
  713. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +422 -0
  714. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +130 -0
  715. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +97 -0
  716. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  717. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +566 -0
  718. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +150 -0
  719. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +50 -0
  720. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  721. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +137 -0
  722. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  723. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +205 -0
  724. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  725. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +131 -0
  726. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +70 -0
  727. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +53 -0
  728. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  729. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +270 -0
  730. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +150 -0
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +167 -0
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +52 -0
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +46 -0
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +35 -0
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +52 -0
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +236 -0
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +244 -0
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +52 -0
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +310 -0
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +56 -0
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +40 -0
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +54 -0
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +60 -0
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +40 -0
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +69 -0
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +48 -0
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  757. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +98 -0
  758. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  759. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +139 -0
  760. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +65 -0
  761. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +135 -0
  762. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  763. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +47 -0
  764. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  765. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +231 -0
  766. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +80 -0
  767. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +189 -0
  768. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  769. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +100 -0
  770. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  771. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +70 -0
  772. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  773. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +75 -0
  774. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  775. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +124 -0
  776. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  777. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  778. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +80 -0
  779. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +222 -0
  780. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +85 -0
  781. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +122 -0
  782. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +45 -0
  783. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +979 -0
  784. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +320 -0
  785. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +76 -0
  786. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  787. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +198 -0
  788. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +90 -0
  789. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +55 -0
  790. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  791. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +56 -0
  792. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  793. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +56 -0
  794. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  795. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +71 -0
  796. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  797. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +98 -0
  798. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  799. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +44 -0
  800. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +51 -0
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +35 -0
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +70 -0
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +60 -0
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +74 -0
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +78 -0
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  811. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +401 -0
  812. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +110 -0
  813. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +49 -0
  814. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  815. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +91 -0
  816. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  817. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +122 -0
  818. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  819. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +79 -0
  820. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +104 -0
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +40 -0
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +59 -0
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +601 -0
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +135 -0
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +49 -0
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +47 -0
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +214 -0
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +90 -0
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +257 -0
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +57 -0
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
  841. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +57 -0
  842. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  843. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +199 -0
  844. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +100 -0
  845. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +75 -0
  846. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  847. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +154 -0
  848. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +55 -0
  849. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +45 -0
  850. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  851. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +55 -0
  852. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  853. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +47 -0
  854. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  855. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +54 -0
  856. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +55 -0
  857. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +60 -0
  858. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  859. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +53 -0
  860. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  861. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +51 -0
  862. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  863. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +50 -0
  864. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  865. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +70 -0
  866. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +39 -0
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +64 -0
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +57 -0
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +74 -0
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  875. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +77 -0
  876. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  877. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +84 -0
  878. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  879. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +52 -0
  880. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  881. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +35 -0
  882. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +30 -0
  883. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +93 -0
  884. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +35 -0
  885. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +53 -0
  886. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +40 -0
  887. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +47 -0
  888. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +45 -0
  889. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +68 -0
  890. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  891. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  892. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  893. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +43 -0
  894. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +56 -0
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  897. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +39 -0
  898. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +30 -0
  899. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +153 -0
  900. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  901. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +152 -0
  902. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  903. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +51 -0
  904. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +45 -0
  905. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +38 -0
  906. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +35 -0
  907. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +33 -0
  908. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +35 -0
  909. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +488 -0
  910. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +190 -0
  911. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +34 -0
  912. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +35 -0
  913. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +31 -0
  914. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +35 -0
  915. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +53 -0
  916. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +50 -0
  917. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +34 -0
  918. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +35 -0
  919. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +44 -0
  920. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +75 -0
  921. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +36 -0
  922. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +35 -0
  923. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +66 -0
  924. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  925. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +98 -0
  926. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  927. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +61 -0
  928. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +45 -0
  929. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +46 -0
  930. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +35 -0
  931. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +33 -0
  932. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +30 -0
  933. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +45 -0
  934. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +35 -0
  935. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +38 -0
  936. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +35 -0
  937. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +282 -0
  938. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +145 -0
  939. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +62 -0
  940. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +45 -0
  941. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +46 -0
  942. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +35 -0
  943. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +34 -0
  944. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  945. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +63 -0
  946. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +50 -0
  947. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +39 -0
  948. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +35 -0
  949. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +37 -0
  950. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +35 -0
  951. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +44 -0
  952. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +35 -0
  953. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +55 -0
  954. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +40 -0
  955. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +38 -0
  956. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +40 -0
  957. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +40 -0
  958. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +35 -0
  959. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +44 -0
  960. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +35 -0
  961. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +60 -0
  962. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +40 -0
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -0
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +35 -0
  965. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +42 -0
  966. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  967. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +50 -0
  968. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  969. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +35 -0
  970. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  971. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +54 -0
  972. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  973. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +125 -0
  974. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  975. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +70 -0
  976. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +60 -0
  977. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +39 -0
  978. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +51 -0
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +40 -0
  981. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +59 -0
  982. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +40 -0
  983. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +35 -0
  984. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +45 -0
  985. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +36 -0
  986. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +35 -0
  987. data/src/core/ext/xds/certificate_provider_store.cc +10 -14
  988. data/src/core/ext/xds/certificate_provider_store.h +1 -6
  989. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -43
  990. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  991. data/src/core/ext/xds/upb_utils.h +1 -1
  992. data/src/core/ext/xds/xds_api.cc +69 -34
  993. data/src/core/ext/xds/xds_api.h +7 -6
  994. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  995. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  996. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  997. data/src/core/ext/xds/xds_bootstrap.h +3 -0
  998. data/src/core/ext/xds/xds_bootstrap_grpc.cc +65 -51
  999. data/src/core/ext/xds/xds_bootstrap_grpc.h +10 -13
  1000. data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
  1001. data/src/core/ext/xds/xds_certificate_provider.h +44 -111
  1002. data/src/core/ext/xds/xds_channel_stack_modifier.cc +17 -28
  1003. data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -5
  1004. data/src/core/ext/xds/xds_client.cc +447 -421
  1005. data/src/core/ext/xds/xds_client.h +33 -24
  1006. data/src/core/ext/xds/xds_client_grpc.cc +15 -7
  1007. data/src/core/ext/xds/xds_client_grpc.h +16 -2
  1008. data/src/core/ext/xds/xds_client_stats.h +11 -2
  1009. data/src/core/ext/xds/xds_cluster.cc +203 -119
  1010. data/src/core/ext/xds/xds_cluster.h +12 -7
  1011. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +22 -14
  1012. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
  1013. data/src/core/ext/xds/xds_common_types.cc +21 -15
  1014. data/src/core/ext/xds/xds_endpoint.cc +111 -72
  1015. data/src/core/ext/xds/xds_endpoint.h +8 -5
  1016. data/src/core/ext/xds/xds_health_status.cc +13 -18
  1017. data/src/core/ext/xds/xds_health_status.h +10 -28
  1018. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -14
  1019. data/src/core/ext/xds/xds_http_fault_filter.h +1 -1
  1020. data/src/core/ext/xds/xds_http_filters.cc +1 -5
  1021. data/src/core/ext/xds/xds_http_filters.h +3 -2
  1022. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -72
  1023. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -1
  1024. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +16 -16
  1025. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -1
  1026. data/src/core/ext/xds/xds_lb_policy_registry.cc +60 -36
  1027. data/src/core/ext/xds/xds_listener.cc +38 -27
  1028. data/src/core/ext/xds/xds_listener.h +14 -4
  1029. data/src/core/ext/xds/xds_resource_type.h +3 -9
  1030. data/src/core/ext/xds/xds_resource_type_impl.h +11 -11
  1031. data/src/core/ext/xds/xds_route_config.cc +95 -41
  1032. data/src/core/ext/xds/xds_route_config.h +3 -2
  1033. data/src/core/ext/xds/xds_server_config_fetcher.cc +110 -81
  1034. data/src/core/ext/xds/xds_transport.h +3 -0
  1035. data/src/core/ext/xds/xds_transport_grpc.cc +61 -52
  1036. data/src/core/ext/xds/xds_transport_grpc.h +4 -0
  1037. data/src/core/lib/address_utils/parse_address.cc +63 -1
  1038. data/src/core/lib/address_utils/parse_address.h +8 -0
  1039. data/src/core/lib/address_utils/sockaddr_utils.cc +46 -2
  1040. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  1041. data/src/core/lib/avl/avl.h +16 -173
  1042. data/src/core/lib/backoff/random_early_detection.cc +4 -2
  1043. data/src/core/lib/backoff/random_early_detection.h +7 -4
  1044. data/src/core/lib/channel/call_tracer.cc +315 -1
  1045. data/src/core/lib/channel/call_tracer.h +63 -4
  1046. data/src/core/lib/channel/channel_args.cc +131 -48
  1047. data/src/core/lib/channel/channel_args.h +125 -16
  1048. data/src/core/lib/channel/channel_args_preconditioning.cc +0 -1
  1049. data/src/core/lib/channel/channel_stack.cc +36 -1
  1050. data/src/core/lib/channel/channel_stack.h +10 -10
  1051. data/src/core/lib/channel/channel_stack_builder.h +4 -15
  1052. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -19
  1053. data/src/core/lib/channel/channel_stack_trace.cc +19 -0
  1054. data/src/core/lib/channel/channel_stack_trace.h +24 -0
  1055. data/src/core/lib/channel/channel_trace.cc +17 -13
  1056. data/src/core/lib/channel/channelz.cc +163 -135
  1057. data/src/core/lib/channel/channelz.h +42 -35
  1058. data/src/core/lib/channel/channelz_registry.cc +24 -20
  1059. data/src/core/lib/channel/channelz_registry.h +4 -2
  1060. data/src/core/lib/channel/connected_channel.cc +229 -102
  1061. data/src/core/lib/channel/context.h +3 -0
  1062. data/src/core/lib/channel/promise_based_filter.cc +21 -19
  1063. data/src/core/lib/channel/promise_based_filter.h +1046 -3
  1064. data/src/core/lib/channel/server_call_tracer_filter.cc +43 -42
  1065. data/src/core/lib/channel/status_util.cc +0 -1
  1066. data/src/core/lib/channel/tcp_tracer.h +140 -0
  1067. data/src/core/lib/compression/compression_internal.cc +8 -8
  1068. data/src/core/lib/config/config_vars.cc +19 -18
  1069. data/src/core/lib/config/config_vars.h +5 -5
  1070. data/src/core/lib/config/config_vars_non_generated.cc +0 -2
  1071. data/src/core/lib/config/core_configuration.cc +2 -2
  1072. data/src/core/lib/config/core_configuration.h +5 -4
  1073. data/src/core/lib/config/load_config.cc +13 -0
  1074. data/src/core/lib/config/load_config.h +6 -0
  1075. data/src/core/lib/debug/event_log.h +1 -1
  1076. data/src/core/lib/debug/stats_data.cc +202 -35
  1077. data/src/core/lib/debug/stats_data.h +103 -1
  1078. data/src/core/lib/debug/trace.cc +31 -56
  1079. data/src/core/lib/debug/trace.h +14 -4
  1080. data/src/core/lib/event_engine/ares_resolver.cc +747 -0
  1081. data/src/core/lib/event_engine/ares_resolver.h +151 -0
  1082. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +221 -0
  1083. data/src/core/lib/event_engine/cf_engine/cf_engine.h +89 -0
  1084. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +357 -0
  1085. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +149 -0
  1086. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +82 -0
  1087. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +249 -0
  1088. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +120 -0
  1089. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +2 -0
  1090. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  1091. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  1092. data/src/core/lib/event_engine/event_engine.cc +0 -14
  1093. data/src/core/lib/event_engine/forkable.cc +65 -65
  1094. data/src/core/lib/event_engine/forkable.h +46 -25
  1095. data/src/core/lib/event_engine/grpc_polled_fd.h +92 -0
  1096. data/src/core/lib/event_engine/handle_containers.h +0 -4
  1097. data/src/core/lib/event_engine/nameser.h +102 -0
  1098. data/src/core/lib/event_engine/poller.h +2 -2
  1099. data/src/core/lib/event_engine/posix.h +4 -0
  1100. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +11 -15
  1101. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -3
  1102. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +39 -24
  1103. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +12 -10
  1104. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -1
  1105. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +23 -4
  1106. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -1
  1107. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +205 -0
  1108. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +0 -2
  1109. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  1110. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
  1111. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
  1112. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +29 -16
  1113. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +12 -2
  1114. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +150 -68
  1115. data/src/core/lib/event_engine/posix_engine/posix_engine.h +37 -30
  1116. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +70 -31
  1117. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +12 -8
  1118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +15 -5
  1119. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +59 -8
  1120. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +16 -0
  1121. data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
  1122. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
  1123. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -4
  1124. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
  1125. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +0 -1
  1126. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +0 -1
  1127. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
  1128. data/src/core/lib/event_engine/shim.cc +13 -3
  1129. data/src/core/lib/event_engine/slice_buffer.cc +0 -1
  1130. data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -8
  1131. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
  1132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
  1133. data/src/core/lib/event_engine/thread_pool/thread_count.h +176 -0
  1134. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  1135. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +49 -0
  1136. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +527 -0
  1137. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +223 -0
  1138. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +157 -0
  1139. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +104 -0
  1140. data/src/core/lib/event_engine/trace.cc +1 -0
  1141. data/src/core/lib/event_engine/trace.h +6 -0
  1142. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +823 -0
  1143. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +75 -0
  1144. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  1145. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  1146. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
  1147. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
  1148. data/src/core/lib/event_engine/windows/win_socket.cc +24 -17
  1149. data/src/core/lib/event_engine/windows/win_socket.h +23 -11
  1150. data/src/core/lib/event_engine/windows/windows_endpoint.cc +77 -77
  1151. data/src/core/lib/event_engine/windows/windows_endpoint.h +17 -13
  1152. data/src/core/lib/event_engine/windows/windows_engine.cc +102 -54
  1153. data/src/core/lib/event_engine/windows/windows_engine.h +30 -20
  1154. data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
  1155. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  1156. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +65 -0
  1157. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +74 -0
  1158. data/src/core/lib/event_engine/work_queue/work_queue.h +66 -0
  1159. data/src/core/lib/experiments/config.cc +134 -30
  1160. data/src/core/lib/experiments/config.h +36 -5
  1161. data/src/core/lib/experiments/experiments.cc +733 -31
  1162. data/src/core/lib/experiments/experiments.h +336 -38
  1163. data/src/core/lib/gpr/alloc.cc +1 -0
  1164. data/src/core/lib/gpr/log_internal.h +55 -0
  1165. data/src/core/lib/gpr/posix/time.cc +5 -0
  1166. data/src/core/lib/gprpp/crash.cc +10 -0
  1167. data/src/core/lib/gprpp/crash.h +3 -0
  1168. data/src/core/lib/gprpp/debug_location.h +13 -0
  1169. data/src/core/lib/gprpp/directory_reader.h +48 -0
  1170. data/src/core/lib/gprpp/dual_ref_counted.h +45 -16
  1171. data/src/core/lib/gprpp/fork.cc +8 -9
  1172. data/src/core/lib/gprpp/fork.h +7 -6
  1173. data/src/core/lib/gprpp/host_port.cc +0 -2
  1174. data/src/core/lib/gprpp/if_list.h +4530 -0
  1175. data/src/core/lib/gprpp/manual_constructor.h +1 -2
  1176. data/src/core/lib/gprpp/match.h +1 -1
  1177. data/src/core/lib/gprpp/no_destruct.h +1 -1
  1178. data/src/core/lib/gprpp/orphanable.h +30 -3
  1179. data/src/core/lib/gprpp/per_cpu.cc +35 -0
  1180. data/src/core/lib/gprpp/per_cpu.h +61 -9
  1181. data/src/core/lib/gprpp/posix/directory_reader.cc +82 -0
  1182. data/src/core/lib/gprpp/posix/stat.cc +0 -1
  1183. data/src/core/lib/gprpp/ref_counted.h +72 -29
  1184. data/src/core/lib/gprpp/ref_counted_ptr.h +133 -27
  1185. data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
  1186. data/src/core/lib/gprpp/ref_counted_string.h +161 -0
  1187. data/src/core/lib/gprpp/sorted_pack.h +3 -12
  1188. data/src/core/lib/gprpp/status_helper.cc +2 -4
  1189. data/src/core/lib/gprpp/status_helper.h +16 -15
  1190. data/src/core/lib/gprpp/strerror.cc +0 -2
  1191. data/src/core/lib/gprpp/time.cc +1 -1
  1192. data/src/core/lib/gprpp/time.h +13 -1
  1193. data/src/core/lib/gprpp/type_list.h +32 -0
  1194. data/src/core/lib/gprpp/validation_errors.cc +8 -4
  1195. data/src/core/lib/gprpp/validation_errors.h +16 -9
  1196. data/src/core/lib/gprpp/windows/directory_reader.cc +80 -0
  1197. data/src/core/lib/gprpp/work_serializer.cc +323 -12
  1198. data/src/core/lib/gprpp/work_serializer.h +30 -9
  1199. data/src/core/lib/gprpp/xxhash_inline.h +29 -0
  1200. data/src/core/lib/http/format_request.cc +0 -1
  1201. data/src/core/lib/http/httpcli.cc +0 -2
  1202. data/src/core/lib/http/httpcli.h +6 -9
  1203. data/src/core/lib/http/httpcli_security_connector.cc +1 -0
  1204. data/src/core/lib/iomgr/buffer_list.cc +2 -0
  1205. data/src/core/lib/iomgr/buffer_list.h +0 -1
  1206. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  1207. data/src/core/lib/iomgr/combiner.cc +24 -18
  1208. data/src/core/lib/iomgr/combiner.h +8 -3
  1209. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  1210. data/src/core/lib/iomgr/error.cc +32 -2
  1211. data/src/core/lib/iomgr/error.h +9 -10
  1212. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  1213. data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -10
  1214. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  1215. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +57 -27
  1216. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
  1217. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +3 -2
  1218. data/src/core/lib/iomgr/exec_ctx.cc +12 -0
  1219. data/src/core/lib/iomgr/exec_ctx.h +66 -19
  1220. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  1221. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  1222. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  1223. data/src/core/lib/iomgr/polling_entity.cc +10 -0
  1224. data/src/core/lib/iomgr/polling_entity.h +2 -0
  1225. data/src/core/lib/iomgr/pollset.h +4 -5
  1226. data/src/core/lib/iomgr/port.h +24 -0
  1227. data/src/core/lib/iomgr/resolve_address.cc +13 -1
  1228. data/src/core/lib/iomgr/resolve_address.h +17 -3
  1229. data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
  1230. data/src/core/lib/iomgr/socket_utils_common_posix.cc +46 -2
  1231. data/src/core/lib/iomgr/socket_utils_posix.cc +5 -0
  1232. data/src/core/lib/iomgr/socket_utils_posix.h +9 -0
  1233. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  1234. data/src/core/lib/iomgr/socket_windows.h +9 -2
  1235. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  1236. data/src/core/lib/iomgr/tcp_client_posix.cc +12 -4
  1237. data/src/core/lib/iomgr/tcp_posix.cc +48 -22
  1238. data/src/core/lib/iomgr/tcp_server_posix.cc +184 -120
  1239. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -1
  1240. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -2
  1241. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  1242. data/src/core/lib/iomgr/tcp_windows.cc +1 -3
  1243. data/src/core/lib/iomgr/timer_generic.cc +17 -16
  1244. data/src/core/lib/iomgr/timer_manager.cc +7 -1
  1245. data/src/core/lib/iomgr/timer_manager.h +2 -0
  1246. data/src/core/lib/iomgr/vsock.cc +59 -0
  1247. data/src/core/lib/iomgr/vsock.h +38 -0
  1248. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
  1249. data/src/core/lib/json/json.h +2 -218
  1250. data/src/core/lib/json/json_object_loader.cc +24 -25
  1251. data/src/core/lib/json/json_object_loader.h +30 -19
  1252. data/src/core/lib/json/json_reader.cc +69 -43
  1253. data/src/core/lib/json/json_reader.h +34 -0
  1254. data/src/core/lib/json/json_util.cc +10 -15
  1255. data/src/core/lib/json/json_util.h +5 -4
  1256. data/src/core/lib/json/json_writer.cc +24 -25
  1257. data/src/core/lib/json/json_writer.h +33 -0
  1258. data/src/core/lib/load_balancing/delegating_helper.h +116 -0
  1259. data/src/core/lib/load_balancing/lb_policy.h +51 -14
  1260. data/src/core/lib/load_balancing/lb_policy_registry.cc +9 -9
  1261. data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
  1262. data/src/core/lib/matchers/matchers.cc +3 -5
  1263. data/src/core/lib/matchers/matchers.h +2 -1
  1264. data/src/core/lib/promise/activity.cc +20 -1
  1265. data/src/core/lib/promise/activity.h +12 -1
  1266. data/src/core/lib/promise/all_ok.h +80 -0
  1267. data/src/core/lib/promise/arena_promise.h +5 -1
  1268. data/src/core/lib/promise/cancel_callback.h +0 -2
  1269. data/src/core/lib/promise/context.h +0 -1
  1270. data/src/core/lib/promise/detail/basic_seq.h +1 -372
  1271. data/src/core/lib/promise/detail/join_state.h +2077 -0
  1272. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  1273. data/src/core/lib/promise/detail/promise_like.h +8 -1
  1274. data/src/core/lib/promise/detail/seq_state.h +5801 -0
  1275. data/src/core/lib/promise/detail/status.h +42 -5
  1276. data/src/core/lib/promise/for_each.h +13 -3
  1277. data/src/core/lib/promise/if.h +4 -1
  1278. data/src/core/lib/promise/interceptor_list.h +0 -1
  1279. data/src/core/lib/promise/latch.h +7 -5
  1280. data/src/core/lib/promise/loop.h +9 -6
  1281. data/src/core/lib/promise/map.h +0 -1
  1282. data/src/core/lib/promise/party.cc +64 -46
  1283. data/src/core/lib/promise/party.h +153 -9
  1284. data/src/core/lib/promise/pipe.h +44 -29
  1285. data/src/core/lib/promise/poll.h +43 -19
  1286. data/src/core/lib/promise/prioritized_race.h +94 -0
  1287. data/src/core/lib/promise/promise.h +4 -1
  1288. data/src/core/lib/promise/race.h +0 -1
  1289. data/src/core/lib/promise/seq.h +124 -8
  1290. data/src/core/lib/promise/sleep.cc +2 -1
  1291. data/src/core/lib/promise/sleep.h +5 -10
  1292. data/src/core/lib/promise/status_flag.h +196 -0
  1293. data/src/core/lib/promise/try_join.h +71 -21
  1294. data/src/core/lib/promise/try_seq.h +161 -7
  1295. data/src/core/lib/resolver/endpoint_addresses.cc +147 -0
  1296. data/src/core/lib/resolver/endpoint_addresses.h +164 -0
  1297. data/src/core/lib/resolver/resolver.h +4 -3
  1298. data/src/core/lib/resolver/resolver_factory.h +3 -2
  1299. data/src/core/lib/resolver/resolver_registry.cc +0 -2
  1300. data/src/core/lib/resolver/server_address.h +5 -115
  1301. data/src/core/lib/resource_quota/api.cc +1 -0
  1302. data/src/core/lib/resource_quota/arena.cc +2 -0
  1303. data/src/core/lib/resource_quota/arena.h +44 -10
  1304. data/src/core/lib/resource_quota/memory_quota.cc +135 -28
  1305. data/src/core/lib/resource_quota/memory_quota.h +14 -15
  1306. data/src/core/lib/resource_quota/resource_quota.h +1 -0
  1307. data/src/core/lib/security/authorization/audit_logging.cc +97 -0
  1308. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  1309. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  1310. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  1311. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  1312. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -12
  1313. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
  1314. data/src/core/lib/security/authorization/matchers.cc +0 -1
  1315. data/src/core/lib/security/authorization/rbac_policy.cc +36 -6
  1316. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  1317. data/src/core/lib/security/authorization/stdout_logger.cc +74 -0
  1318. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  1319. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  1320. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  1321. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  1322. data/src/core/lib/security/credentials/alts/alts_credentials.cc +0 -2
  1323. data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
  1324. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
  1325. data/src/core/lib/security/credentials/composite/composite_credentials.cc +2 -2
  1326. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -2
  1327. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +58 -50
  1328. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
  1329. data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -2
  1330. data/src/core/lib/security/credentials/external/external_account_credentials.cc +132 -87
  1331. data/src/core/lib/security/credentials/external/external_account_credentials.h +10 -0
  1332. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +27 -21
  1333. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
  1334. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +34 -30
  1335. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
  1336. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
  1337. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
  1338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +5 -2
  1339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  1340. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +0 -2
  1341. data/src/core/lib/security/credentials/jwt/json_token.cc +36 -16
  1342. data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
  1343. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -5
  1344. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +0 -1
  1345. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +83 -40
  1346. data/src/core/lib/security/credentials/local/local_credentials.cc +0 -2
  1347. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -16
  1348. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +0 -1
  1349. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  1350. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +116 -10
  1351. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -0
  1352. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -2
  1353. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +86 -0
  1354. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -55
  1355. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
  1356. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +2 -0
  1357. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +41 -0
  1358. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +28 -1
  1359. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +255 -0
  1360. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +129 -0
  1361. data/src/core/lib/security/credentials/tls/tls_credentials.cc +27 -2
  1362. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
  1363. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  1364. data/src/core/lib/security/credentials/xds/xds_credentials.cc +22 -29
  1365. data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
  1366. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +2 -5
  1367. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  1368. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +7 -59
  1369. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -1
  1370. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -3
  1371. data/src/core/lib/security/security_connector/ssl_utils.h +5 -1
  1372. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +8 -19
  1373. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -2
  1374. data/src/core/lib/security/transport/auth_filters.h +71 -4
  1375. data/src/core/lib/security/transport/client_auth_filter.cc +9 -9
  1376. data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
  1377. data/src/core/lib/security/transport/secure_endpoint.cc +3 -6
  1378. data/src/core/lib/security/transport/security_handshaker.cc +2 -3
  1379. data/src/core/lib/security/transport/server_auth_filter.cc +70 -92
  1380. data/src/core/lib/security/util/json_util.cc +6 -5
  1381. data/src/core/lib/service_config/service_config_call_data.h +54 -20
  1382. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  1383. data/src/core/lib/slice/slice.h +29 -0
  1384. data/src/core/lib/slice/slice_buffer.cc +15 -0
  1385. data/src/core/lib/slice/slice_buffer.h +19 -4
  1386. data/src/core/lib/slice/slice_refcount.h +1 -1
  1387. data/src/core/lib/surface/builtins.cc +6 -25
  1388. data/src/core/lib/surface/call.cc +935 -270
  1389. data/src/core/lib/surface/call.h +31 -18
  1390. data/src/core/lib/surface/call_log_batch.cc +0 -2
  1391. data/src/core/lib/surface/call_trace.cc +42 -2
  1392. data/src/core/lib/surface/channel.cc +12 -10
  1393. data/src/core/lib/surface/channel.h +2 -8
  1394. data/src/core/lib/surface/channel_init.cc +367 -14
  1395. data/src/core/lib/surface/channel_init.h +177 -28
  1396. data/src/core/lib/surface/completion_queue.cc +12 -4
  1397. data/src/core/lib/surface/event_string.cc +0 -1
  1398. data/src/core/lib/surface/init.cc +21 -47
  1399. data/src/core/lib/surface/lame_client.cc +8 -1
  1400. data/src/core/lib/surface/server.cc +555 -308
  1401. data/src/core/lib/surface/server.h +68 -44
  1402. data/src/core/lib/surface/validate_metadata.cc +37 -22
  1403. data/src/core/lib/surface/validate_metadata.h +13 -3
  1404. data/src/core/lib/surface/version.cc +2 -2
  1405. data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
  1406. data/src/core/lib/transport/batch_builder.cc +20 -19
  1407. data/src/core/lib/transport/batch_builder.h +48 -38
  1408. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  1409. data/src/core/lib/transport/bdp_estimator.h +2 -2
  1410. data/src/core/lib/transport/call_final_info.cc +38 -0
  1411. data/src/core/lib/transport/call_final_info.h +54 -0
  1412. data/src/core/lib/transport/connectivity_state.cc +3 -4
  1413. data/src/core/lib/transport/connectivity_state.h +4 -0
  1414. data/src/core/lib/transport/error_utils.cc +0 -2
  1415. data/src/core/lib/transport/handshaker.cc +0 -2
  1416. data/src/core/lib/transport/metadata_batch.cc +12 -7
  1417. data/src/core/lib/transport/metadata_batch.h +124 -109
  1418. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  1419. data/src/core/lib/transport/parsed_metadata.h +32 -20
  1420. data/src/core/lib/transport/simple_slice_based_metadata.h +54 -0
  1421. data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
  1422. data/src/core/lib/transport/timeout_encoding.h +2 -2
  1423. data/src/core/lib/transport/transport.cc +80 -67
  1424. data/src/core/lib/transport/transport.h +507 -91
  1425. data/src/core/lib/transport/transport_fwd.h +3 -1
  1426. data/src/core/lib/transport/transport_op_string.cc +0 -2
  1427. data/src/core/lib/uri/uri_parser.cc +0 -1
  1428. data/src/core/plugin_registry/grpc_plugin_registry.cc +7 -6
  1429. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -3
  1430. data/src/core/tsi/alts/crypt/aes_gcm.cc +142 -89
  1431. data/src/core/tsi/alts/crypt/gsec.h +387 -319
  1432. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +11 -7
  1433. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  1434. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -7
  1435. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  1436. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
  1437. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -13
  1438. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +26 -25
  1439. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -1
  1440. data/src/core/tsi/ssl_transport_security.cc +233 -69
  1441. data/src/core/tsi/ssl_transport_security.h +36 -2
  1442. data/src/ruby/bin/math_pb.rb +24 -18
  1443. data/src/ruby/ext/grpc/extconf.rb +80 -18
  1444. data/src/ruby/ext/grpc/rb_call.c +62 -39
  1445. data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
  1446. data/src/ruby/ext/grpc/rb_channel.c +109 -84
  1447. data/src/ruby/ext/grpc/rb_channel.h +1 -0
  1448. data/src/ruby/ext/grpc/rb_channel_args.c +21 -3
  1449. data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
  1450. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  1451. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  1452. data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
  1453. data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
  1454. data/src/ruby/ext/grpc/rb_grpc.c +192 -31
  1455. data/src/ruby/ext/grpc/rb_grpc.h +8 -4
  1456. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -0
  1457. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -0
  1458. data/src/ruby/ext/grpc/rb_server.c +62 -45
  1459. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  1460. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  1461. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  1462. data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
  1463. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1464. data/src/ruby/lib/grpc/version.rb +1 -1
  1465. data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
  1466. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
  1467. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +33 -111
  1468. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
  1469. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +22 -0
  1470. data/src/ruby/pb/test/client.rb +16 -0
  1471. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
  1472. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
  1473. data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
  1474. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  1475. data/third_party/abseil-cpp/absl/base/casts.h +8 -8
  1476. data/third_party/abseil-cpp/absl/base/config.h +89 -106
  1477. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
  1478. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
  1479. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
  1480. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
  1481. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
  1482. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
  1483. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
  1484. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
  1485. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
  1486. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
  1487. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
  1488. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
  1489. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1490. data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
  1491. data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
  1492. data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
  1493. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
  1494. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
  1495. data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
  1496. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  1497. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +3 -21
  1498. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
  1499. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
  1500. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
  1501. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
  1502. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
  1503. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
  1504. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
  1505. data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
  1506. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
  1507. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
  1508. data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
  1509. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
  1510. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
  1511. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
  1512. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
  1513. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
  1514. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
  1515. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
  1516. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
  1517. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
  1518. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
  1519. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
  1520. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
  1521. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
  1522. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
  1523. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
  1524. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
  1525. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
  1526. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
  1527. data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
  1528. data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
  1529. data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
  1530. data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
  1531. data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
  1532. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
  1533. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
  1534. data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
  1535. data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
  1536. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
  1537. data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
  1538. data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
  1539. data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
  1540. data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
  1541. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
  1542. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
  1543. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  1544. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
  1545. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  1546. data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
  1547. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
  1548. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
  1549. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
  1550. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
  1551. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
  1552. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
  1553. data/third_party/abseil-cpp/absl/status/status.cc +11 -7
  1554. data/third_party/abseil-cpp/absl/status/status.h +11 -2
  1555. data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
  1556. data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
  1557. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
  1558. data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
  1559. data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
  1560. data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
  1561. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
  1562. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
  1563. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
  1564. data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
  1565. data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
  1566. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
  1567. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
  1568. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
  1569. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
  1570. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
  1571. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
  1572. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
  1573. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
  1574. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
  1575. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
  1576. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
  1577. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
  1578. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
  1579. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
  1580. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
  1581. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
  1582. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
  1583. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
  1584. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
  1585. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
  1586. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
  1587. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
  1588. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
  1589. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
  1590. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
  1591. data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
  1592. data/third_party/abseil-cpp/absl/strings/match.h +19 -0
  1593. data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
  1594. data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
  1595. data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
  1596. data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
  1597. data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
  1598. data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
  1599. data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
  1600. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
  1601. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
  1602. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
  1603. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  1604. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
  1605. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
  1606. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
  1607. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
  1608. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
  1609. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
  1610. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  1611. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
  1612. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  1613. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
  1614. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  1615. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
  1616. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
  1617. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  1618. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
  1619. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
  1620. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
  1621. data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
  1622. data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
  1623. data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
  1624. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
  1625. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1626. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
  1627. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
  1628. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
  1629. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
  1630. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
  1631. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
  1632. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
  1633. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
  1634. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
  1635. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
  1636. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
  1637. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
  1638. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
  1639. data/third_party/abseil-cpp/absl/time/time.cc +9 -2
  1640. data/third_party/abseil-cpp/absl/time/time.h +115 -15
  1641. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
  1642. data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
  1643. data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
  1644. data/third_party/abseil-cpp/absl/types/optional.h +15 -13
  1645. data/third_party/abseil-cpp/absl/types/span.h +1 -2
  1646. data/third_party/boringssl-with-bazel/err_data.c +554 -553
  1647. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
  1648. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  1649. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
  1650. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +6 -6
  1651. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
  1652. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
  1653. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  1654. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  1655. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  1656. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +9 -7
  1657. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +40 -55
  1658. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
  1659. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
  1660. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +14 -54
  1661. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +23 -22
  1662. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
  1663. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  1664. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
  1665. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
  1666. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  1667. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
  1668. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
  1669. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
  1670. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  1671. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  1672. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  1673. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
  1674. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
  1675. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
  1676. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
  1677. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
  1678. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
  1679. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +61 -0
  1680. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
  1681. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
  1682. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
  1683. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
  1684. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +55 -50
  1685. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +18 -0
  1686. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2834 -7442
  1687. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +26 -8
  1688. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
  1689. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
  1690. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  1691. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
  1692. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
  1693. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
  1694. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +42 -34
  1695. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +17 -11
  1696. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  1697. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
  1698. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
  1699. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
  1700. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
  1701. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  1702. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
  1703. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
  1704. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
  1705. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  1706. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
  1707. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
  1708. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
  1709. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
  1710. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
  1711. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
  1712. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
  1713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
  1714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +41 -19
  1715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
  1716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  1717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +204 -428
  1718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +4 -4
  1719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +31 -64
  1720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
  1721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +105 -143
  1722. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +19 -19
  1723. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +16 -18
  1724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +27 -30
  1725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +23 -26
  1726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  1727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
  1728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +21 -37
  1729. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +31 -31
  1730. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +16 -16
  1731. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  1732. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +11 -5
  1733. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +112 -0
  1734. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  1735. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  1736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  1737. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  1738. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  1739. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  1740. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  1741. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
  1742. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
  1743. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
  1744. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -41
  1745. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +76 -16
  1746. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  1747. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  1748. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +126 -233
  1749. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +113 -24
  1750. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
  1751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  1752. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  1753. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +169 -6
  1754. data/third_party/boringssl-with-bazel/src/crypto/internal.h +216 -87
  1755. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +32 -2
  1756. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +11 -12
  1757. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +834 -0
  1758. data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
  1759. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
  1760. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  1761. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  1762. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
  1763. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
  1764. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
  1765. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
  1766. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  1767. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
  1768. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
  1769. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
  1770. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +34 -0
  1771. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +38 -0
  1772. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
  1773. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +59 -0
  1774. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  1775. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  1776. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
  1777. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
  1778. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
  1779. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
  1780. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  1781. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +240 -72
  1782. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  1783. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -130
  1784. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  1785. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  1786. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +10 -20
  1787. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
  1788. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +3 -2
  1789. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  1790. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +18 -14
  1791. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  1792. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -141
  1793. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
  1794. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +19 -25
  1795. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  1796. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +8 -4
  1797. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
  1798. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +22 -24
  1799. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -72
  1800. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +22 -29
  1801. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  1802. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -7
  1803. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
  1804. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
  1805. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  1806. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  1807. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
  1808. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  1809. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  1810. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  1811. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +20 -52
  1812. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  1813. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +11 -9
  1814. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  1815. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -3
  1816. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  1817. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
  1818. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
  1819. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +11 -4
  1820. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +37 -112
  1821. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +19 -13
  1822. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  1823. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
  1824. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
  1825. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
  1826. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
  1827. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
  1828. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
  1829. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
  1830. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -10
  1831. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +34 -2
  1832. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  1833. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  1834. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  1835. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  1836. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
  1837. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -62
  1838. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -19
  1839. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +275 -96
  1840. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +242 -223
  1841. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
  1842. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -25
  1843. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  1844. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  1845. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +760 -614
  1846. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +45 -12
  1847. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  1848. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +10 -68
  1849. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
  1850. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +33 -18
  1851. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  1852. data/third_party/boringssl-with-bazel/src/ssl/internal.h +86 -46
  1853. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  1854. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +8 -4
  1855. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +209 -209
  1856. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +6 -6
  1857. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +76 -118
  1858. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +209 -33
  1859. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  1860. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +19 -21
  1861. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  1862. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  1863. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
  1864. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  1865. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  1866. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
  1867. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  1868. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  1869. data/third_party/cares/cares/include/ares.h +23 -1
  1870. data/third_party/cares/cares/include/ares_nameser.h +484 -0
  1871. data/third_party/cares/cares/include/ares_rules.h +2 -2
  1872. data/third_party/cares/cares/include/ares_version.h +3 -3
  1873. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  1874. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  1875. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  1876. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  1877. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  1878. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  1879. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  1880. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  1881. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  1882. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  1883. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  1884. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  1885. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  1886. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  1887. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  1888. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  1889. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  1890. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  1891. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  1892. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  1893. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  1894. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  1895. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  1896. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  1897. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  1898. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  1899. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  1900. data/third_party/upb/upb/base/descriptor_constants.h +84 -0
  1901. data/third_party/upb/upb/base/internal/log2.h +38 -0
  1902. data/third_party/upb/upb/base/status.c +61 -0
  1903. data/third_party/upb/upb/base/status.h +46 -0
  1904. data/third_party/upb/upb/base/status.hpp +50 -0
  1905. data/third_party/upb/upb/base/string_view.h +58 -0
  1906. data/third_party/upb/upb/generated_code_support.h +33 -0
  1907. data/third_party/upb/upb/hash/common.c +836 -0
  1908. data/third_party/upb/upb/hash/common.h +174 -0
  1909. data/third_party/upb/upb/hash/int_table.h +82 -0
  1910. data/third_party/upb/upb/hash/str_table.h +142 -0
  1911. data/third_party/upb/upb/json/decode.c +1480 -0
  1912. data/third_party/upb/upb/json/decode.h +55 -0
  1913. data/third_party/upb/upb/json/encode.c +807 -0
  1914. data/third_party/upb/upb/json/encode.h +73 -0
  1915. data/third_party/upb/upb/lex/atoi.c +48 -0
  1916. data/third_party/upb/upb/lex/atoi.h +35 -0
  1917. data/third_party/upb/upb/lex/round_trip.c +47 -0
  1918. data/third_party/upb/upb/lex/round_trip.h +35 -0
  1919. data/third_party/upb/upb/lex/strtod.c +77 -0
  1920. data/third_party/upb/upb/lex/strtod.h +26 -0
  1921. data/third_party/upb/upb/lex/unicode.c +37 -0
  1922. data/third_party/upb/upb/lex/unicode.h +59 -0
  1923. data/third_party/upb/upb/mem/alloc.c +27 -0
  1924. data/third_party/upb/upb/mem/alloc.h +78 -0
  1925. data/third_party/upb/upb/mem/arena.c +368 -0
  1926. data/third_party/upb/upb/mem/arena.h +132 -0
  1927. data/third_party/upb/upb/mem/arena.hpp +54 -0
  1928. data/third_party/upb/upb/mem/internal/arena.h +94 -0
  1929. data/third_party/upb/upb/message/accessors.c +71 -0
  1930. data/third_party/upb/upb/message/accessors.h +380 -0
  1931. data/third_party/upb/upb/message/array.c +154 -0
  1932. data/third_party/upb/upb/message/array.h +98 -0
  1933. data/third_party/upb/upb/message/internal/accessors.h +367 -0
  1934. data/third_party/upb/upb/message/internal/array.h +138 -0
  1935. data/third_party/upb/upb/message/internal/extension.h +63 -0
  1936. data/third_party/upb/upb/message/internal/map.h +173 -0
  1937. data/third_party/upb/upb/message/internal/map_entry.h +66 -0
  1938. data/third_party/upb/upb/message/internal/map_sorter.h +112 -0
  1939. data/third_party/upb/upb/message/internal/message.h +106 -0
  1940. data/third_party/upb/upb/message/internal/types.h +23 -0
  1941. data/third_party/upb/upb/message/map.c +145 -0
  1942. data/third_party/upb/upb/message/map.h +147 -0
  1943. data/third_party/upb/upb/message/map_gencode_util.h +81 -0
  1944. data/third_party/upb/upb/message/map_sorter.c +170 -0
  1945. data/third_party/upb/upb/message/message.c +154 -0
  1946. data/third_party/upb/upb/message/message.h +52 -0
  1947. data/third_party/upb/upb/message/tagged_ptr.h +69 -0
  1948. data/third_party/upb/upb/message/types.h +15 -0
  1949. data/third_party/upb/upb/message/value.h +46 -0
  1950. data/third_party/upb/upb/mini_descriptor/build_enum.c +130 -0
  1951. data/third_party/upb/upb/mini_descriptor/build_enum.h +42 -0
  1952. data/third_party/upb/upb/mini_descriptor/decode.c +870 -0
  1953. data/third_party/upb/upb/mini_descriptor/decode.h +120 -0
  1954. data/third_party/upb/upb/mini_descriptor/internal/base92.c +26 -0
  1955. data/third_party/upb/upb/mini_descriptor/internal/base92.h +63 -0
  1956. data/third_party/upb/upb/mini_descriptor/internal/decoder.h +53 -0
  1957. data/third_party/upb/upb/mini_descriptor/internal/encode.c +323 -0
  1958. data/third_party/upb/upb/mini_descriptor/internal/encode.h +92 -0
  1959. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +118 -0
  1960. data/third_party/upb/upb/mini_descriptor/internal/modifiers.h +32 -0
  1961. data/third_party/upb/upb/mini_descriptor/internal/wire_constants.h +72 -0
  1962. data/third_party/upb/upb/mini_descriptor/link.c +122 -0
  1963. data/third_party/upb/upb/mini_descriptor/link.h +84 -0
  1964. data/third_party/upb/upb/mini_table/enum.h +38 -0
  1965. data/third_party/upb/upb/mini_table/extension.h +15 -0
  1966. data/third_party/upb/upb/mini_table/extension_registry.c +76 -0
  1967. data/third_party/upb/upb/mini_table/extension_registry.h +85 -0
  1968. data/third_party/upb/upb/mini_table/field.h +98 -0
  1969. data/third_party/upb/upb/mini_table/file.h +15 -0
  1970. data/third_party/upb/upb/mini_table/internal/enum.h +58 -0
  1971. data/third_party/upb/upb/mini_table/internal/extension.h +27 -0
  1972. data/third_party/upb/upb/mini_table/internal/field.h +114 -0
  1973. data/third_party/upb/upb/mini_table/internal/file.h +29 -0
  1974. data/third_party/upb/upb/mini_table/internal/message.c +19 -0
  1975. data/third_party/upb/upb/mini_table/internal/message.h +88 -0
  1976. data/third_party/upb/upb/mini_table/internal/sub.h +18 -0
  1977. data/third_party/upb/upb/mini_table/message.c +77 -0
  1978. data/third_party/upb/upb/mini_table/message.h +85 -0
  1979. data/third_party/upb/upb/mini_table/sub.h +15 -0
  1980. data/third_party/upb/upb/port/atomic.h +83 -0
  1981. data/third_party/upb/upb/port/def.inc +328 -0
  1982. data/third_party/upb/upb/port/undef.inc +55 -0
  1983. data/third_party/upb/upb/port/vsnprintf_compat.h +30 -0
  1984. data/third_party/upb/upb/reflection/common.h +51 -0
  1985. data/third_party/upb/upb/reflection/def.h +24 -0
  1986. data/third_party/upb/upb/reflection/def.hpp +605 -0
  1987. data/third_party/upb/upb/reflection/def_pool.c +443 -0
  1988. data/third_party/upb/upb/reflection/def_pool.h +87 -0
  1989. data/third_party/upb/upb/reflection/def_type.c +30 -0
  1990. data/third_party/upb/upb/reflection/def_type.h +60 -0
  1991. data/third_party/upb/upb/reflection/desc_state.c +33 -0
  1992. data/third_party/upb/upb/reflection/enum_def.c +292 -0
  1993. data/third_party/upb/upb/reflection/enum_def.h +60 -0
  1994. data/third_party/upb/upb/reflection/enum_reserved_range.c +63 -0
  1995. data/third_party/upb/upb/reflection/enum_reserved_range.h +31 -0
  1996. data/third_party/upb/upb/reflection/enum_value_def.c +125 -0
  1997. data/third_party/upb/upb/reflection/enum_value_def.h +37 -0
  1998. data/third_party/upb/upb/reflection/extension_range.c +74 -0
  1999. data/third_party/upb/upb/reflection/extension_range.h +35 -0
  2000. data/third_party/upb/upb/reflection/field_def.c +948 -0
  2001. data/third_party/upb/upb/reflection/field_def.h +74 -0
  2002. data/third_party/upb/upb/reflection/file_def.c +345 -0
  2003. data/third_party/upb/upb/reflection/file_def.h +57 -0
  2004. data/third_party/upb/upb/reflection/internal/def_builder.c +339 -0
  2005. data/third_party/upb/upb/reflection/internal/def_builder.h +137 -0
  2006. data/third_party/upb/upb/reflection/internal/def_pool.h +57 -0
  2007. data/third_party/upb/upb/reflection/internal/desc_state.h +44 -0
  2008. data/third_party/upb/upb/reflection/internal/enum_def.h +36 -0
  2009. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +35 -0
  2010. data/third_party/upb/upb/reflection/internal/enum_value_def.h +37 -0
  2011. data/third_party/upb/upb/reflection/internal/extension_range.h +34 -0
  2012. data/third_party/upb/upb/reflection/internal/field_def.h +56 -0
  2013. data/third_party/upb/upb/reflection/internal/file_def.h +37 -0
  2014. data/third_party/upb/upb/reflection/internal/message_def.h +43 -0
  2015. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +35 -0
  2016. data/third_party/upb/upb/reflection/internal/method_def.h +33 -0
  2017. data/third_party/upb/upb/reflection/internal/oneof_def.h +37 -0
  2018. data/third_party/upb/upb/reflection/internal/service_def.h +33 -0
  2019. data/third_party/upb/upb/reflection/internal/strdup2.c +33 -0
  2020. data/third_party/upb/upb/reflection/internal/strdup2.h +32 -0
  2021. data/third_party/upb/upb/reflection/message.c +213 -0
  2022. data/third_party/upb/upb/reflection/message.h +89 -0
  2023. data/third_party/upb/upb/reflection/message.hpp +19 -0
  2024. data/third_party/upb/upb/reflection/message_def.c +736 -0
  2025. data/third_party/upb/upb/reflection/message_def.h +156 -0
  2026. data/third_party/upb/upb/reflection/message_reserved_range.c +61 -0
  2027. data/third_party/upb/upb/reflection/message_reserved_range.h +31 -0
  2028. data/third_party/upb/upb/reflection/method_def.c +105 -0
  2029. data/third_party/upb/upb/reflection/method_def.h +39 -0
  2030. data/third_party/upb/upb/reflection/oneof_def.c +208 -0
  2031. data/third_party/upb/upb/reflection/oneof_def.h +47 -0
  2032. data/third_party/upb/upb/reflection/service_def.c +109 -0
  2033. data/third_party/upb/upb/reflection/service_def.h +40 -0
  2034. data/third_party/upb/upb/text/encode.c +457 -0
  2035. data/third_party/upb/upb/text/encode.h +49 -0
  2036. data/third_party/upb/upb/wire/decode.c +1381 -0
  2037. data/third_party/upb/upb/wire/decode.h +132 -0
  2038. data/third_party/upb/upb/wire/decode_fast.c +996 -0
  2039. data/third_party/upb/upb/wire/decode_fast.h +147 -0
  2040. data/third_party/upb/upb/wire/encode.c +638 -0
  2041. data/third_party/upb/upb/wire/encode.h +76 -0
  2042. data/third_party/upb/upb/wire/eps_copy_input_stream.c +19 -0
  2043. data/third_party/upb/upb/wire/eps_copy_input_stream.h +405 -0
  2044. data/third_party/upb/upb/wire/internal/constants.h +27 -0
  2045. data/third_party/upb/upb/wire/internal/decode.h +143 -0
  2046. data/third_party/upb/upb/wire/internal/swap.h +45 -0
  2047. data/third_party/upb/upb/wire/reader.c +47 -0
  2048. data/third_party/upb/upb/wire/reader.h +207 -0
  2049. data/third_party/upb/upb/wire/types.h +21 -0
  2050. data/third_party/utf8_range/range2-neon.c +157 -0
  2051. data/third_party/utf8_range/utf8_range.h +21 -0
  2052. data/third_party/zlib/adler32.c +5 -27
  2053. data/third_party/zlib/compress.c +5 -16
  2054. data/third_party/zlib/crc32.c +86 -162
  2055. data/third_party/zlib/deflate.c +233 -336
  2056. data/third_party/zlib/deflate.h +8 -8
  2057. data/third_party/zlib/gzguts.h +11 -12
  2058. data/third_party/zlib/infback.c +7 -23
  2059. data/third_party/zlib/inffast.c +1 -4
  2060. data/third_party/zlib/inffast.h +1 -1
  2061. data/third_party/zlib/inflate.c +30 -99
  2062. data/third_party/zlib/inftrees.c +6 -11
  2063. data/third_party/zlib/inftrees.h +3 -3
  2064. data/third_party/zlib/trees.c +224 -302
  2065. data/third_party/zlib/uncompr.c +4 -12
  2066. data/third_party/zlib/zconf.h +6 -2
  2067. data/third_party/zlib/zlib.h +191 -188
  2068. data/third_party/zlib/zutil.c +16 -44
  2069. data/third_party/zlib/zutil.h +10 -10
  2070. metadata +1118 -729
  2071. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  2072. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  2073. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -200
  2074. data/src/core/ext/filters/client_channel/http_proxy.h +0 -52
  2075. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
  2076. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
  2077. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1229
  2078. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +0 -30
  2079. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  2080. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  2081. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  2082. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  2083. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +0 -117
  2084. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +0 -502
  2085. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +0 -122
  2086. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +0 -578
  2087. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +0 -125
  2088. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +0 -516
  2089. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +0 -388
  2090. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +0 -1953
  2091. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +0 -56
  2092. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +0 -159
  2093. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +0 -64
  2094. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +0 -189
  2095. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +0 -46
  2096. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +0 -128
  2097. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +0 -43
  2098. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +0 -106
  2099. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +0 -43
  2100. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +0 -101
  2101. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +0 -106
  2102. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +0 -613
  2103. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +0 -48
  2104. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +0 -107
  2105. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +0 -60
  2106. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -81
  2107. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +0 -53
  2108. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +0 -103
  2109. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -270
  2110. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +0 -1300
  2111. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +0 -419
  2112. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +0 -2317
  2113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +0 -95
  2114. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +0 -394
  2115. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +0 -535
  2116. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +0 -3040
  2117. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +0 -48
  2118. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +0 -107
  2119. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +0 -89
  2120. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +0 -549
  2121. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +0 -299
  2122. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +0 -1437
  2123. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +0 -168
  2124. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +0 -801
  2125. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +0 -49
  2126. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +0 -120
  2127. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +0 -421
  2128. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +0 -1891
  2129. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +0 -163
  2130. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -806
  2131. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +0 -47
  2132. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +0 -104
  2133. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +0 -47
  2134. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +0 -107
  2135. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +0 -58
  2136. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +0 -159
  2137. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +0 -269
  2138. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +0 -1329
  2139. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +0 -223
  2140. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +0 -1287
  2141. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +0 -49
  2142. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +0 -126
  2143. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +0 -326
  2144. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +0 -1796
  2145. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -58
  2146. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +0 -179
  2147. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +0 -60
  2148. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +0 -177
  2149. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +0 -62
  2150. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +0 -209
  2151. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +0 -56
  2152. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +0 -182
  2153. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +0 -48
  2154. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +0 -122
  2155. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -106
  2156. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +0 -360
  2157. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -150
  2158. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +0 -678
  2159. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +0 -129
  2160. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +0 -588
  2161. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +0 -46
  2162. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +0 -98
  2163. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +0 -212
  2164. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +0 -1185
  2165. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +0 -186
  2166. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +0 -969
  2167. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +0 -68
  2168. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +0 -282
  2169. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -59
  2170. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +0 -186
  2171. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +0 -53
  2172. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +0 -140
  2173. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +0 -165
  2174. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +0 -748
  2175. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +0 -174
  2176. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +0 -757
  2177. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +0 -242
  2178. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +0 -1217
  2179. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +0 -105
  2180. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +0 -452
  2181. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +0 -1139
  2182. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +0 -6695
  2183. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +0 -79
  2184. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +0 -267
  2185. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +0 -241
  2186. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +0 -1191
  2187. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +0 -45
  2188. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +0 -101
  2189. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +0 -49
  2190. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +0 -107
  2191. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -63
  2192. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +0 -175
  2193. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +0 -52
  2194. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +0 -138
  2195. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +0 -63
  2196. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +0 -254
  2197. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -46
  2198. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +0 -107
  2199. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +0 -47
  2200. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +0 -98
  2201. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +0 -69
  2202. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +0 -221
  2203. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +0 -33
  2204. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +0 -43
  2205. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +0 -71
  2206. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +0 -226
  2207. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +0 -55
  2208. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +0 -159
  2209. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +0 -42
  2210. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +0 -89
  2211. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +0 -96
  2212. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +0 -395
  2213. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +0 -94
  2214. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +0 -445
  2215. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +0 -71
  2216. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -237
  2217. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +0 -58
  2218. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +0 -195
  2219. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +0 -62
  2220. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +0 -179
  2221. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +0 -478
  2222. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +0 -2805
  2223. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +0 -46
  2224. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +0 -98
  2225. 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 -56
  2226. 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 -212
  2227. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +0 -111
  2228. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +0 -444
  2229. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +0 -58
  2230. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +0 -216
  2231. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +0 -46
  2232. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +0 -98
  2233. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -28
  2234. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +0 -38
  2235. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +0 -177
  2236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +0 -932
  2237. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +0 -88
  2238. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -320
  2239. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -193
  2240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +0 -1085
  2241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +0 -62
  2242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +0 -168
  2243. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +0 -38
  2244. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +0 -74
  2245. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +0 -282
  2246. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +0 -1399
  2247. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -68
  2248. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +0 -218
  2249. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +0 -138
  2250. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +0 -651
  2251. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +0 -48
  2252. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +0 -116
  2253. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +0 -76
  2254. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +0 -265
  2255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +0 -47
  2256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +0 -113
  2257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +0 -85
  2258. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +0 -279
  2259. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +0 -62
  2260. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +0 -196
  2261. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +0 -49
  2262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +0 -121
  2263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +0 -48
  2264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +0 -117
  2265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +0 -47
  2266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +0 -104
  2267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +0 -80
  2268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +0 -246
  2269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +0 -43
  2270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +0 -114
  2271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -67
  2272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +0 -226
  2273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +0 -60
  2274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +0 -178
  2275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +0 -78
  2276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +0 -306
  2277. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +0 -107
  2278. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +0 -457
  2279. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +0 -107
  2280. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +0 -439
  2281. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +0 -66
  2282. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +0 -213
  2283. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +0 -26
  2284. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +0 -39
  2285. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +0 -42
  2286. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +0 -143
  2287. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +0 -54
  2288. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +0 -147
  2289. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +0 -66
  2290. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +0 -208
  2291. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +0 -63
  2292. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +0 -202
  2293. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +0 -26
  2294. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +0 -43
  2295. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +0 -43
  2296. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +0 -101
  2297. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +0 -51
  2298. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +0 -131
  2299. data/src/core/ext/upb-generated/google/api/annotations.upb.c +0 -40
  2300. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -53
  2301. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +0 -271
  2302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +0 -1280
  2303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +0 -283
  2304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +0 -1386
  2305. data/src/core/ext/upb-generated/google/api/http.upb.c +0 -81
  2306. data/src/core/ext/upb-generated/google/api/http.upb.h +0 -343
  2307. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +0 -46
  2308. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +0 -115
  2309. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +0 -40
  2310. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +0 -92
  2311. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +0 -578
  2312. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +0 -3217
  2313. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +0 -40
  2314. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +0 -92
  2315. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +0 -35
  2316. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +0 -74
  2317. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +0 -95
  2318. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +0 -329
  2319. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +0 -40
  2320. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +0 -92
  2321. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +0 -127
  2322. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +0 -475
  2323. data/src/core/ext/upb-generated/google/rpc/status.upb.c +0 -46
  2324. data/src/core/ext/upb-generated/google/rpc/status.upb.h +0 -115
  2325. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +0 -84
  2326. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +0 -335
  2327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +0 -63
  2328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +0 -188
  2329. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +0 -240
  2330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +0 -1173
  2331. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +0 -57
  2332. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +0 -182
  2333. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +0 -50
  2334. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +0 -139
  2335. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +0 -161
  2336. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +0 -705
  2337. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +0 -70
  2338. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +0 -216
  2339. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +0 -175
  2340. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +0 -792
  2341. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +0 -110
  2342. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +0 -290
  2343. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -55
  2344. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +0 -112
  2345. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +0 -38
  2346. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -46
  2347. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +0 -54
  2348. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +0 -119
  2349. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +0 -53
  2350. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +0 -103
  2351. data/src/core/ext/upb-generated/validate/validate.upb.c +0 -560
  2352. data/src/core/ext/upb-generated/validate/validate.upb.h +0 -4105
  2353. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +0 -110
  2354. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +0 -290
  2355. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +0 -55
  2356. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +0 -112
  2357. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +0 -38
  2358. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +0 -46
  2359. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +0 -105
  2360. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +0 -306
  2361. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +0 -53
  2362. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +0 -103
  2363. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +0 -41
  2364. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +0 -83
  2365. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +0 -47
  2366. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +0 -107
  2367. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +0 -66
  2368. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +0 -208
  2369. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +0 -56
  2370. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +0 -119
  2371. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +0 -46
  2372. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +0 -107
  2373. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +0 -49
  2374. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +0 -131
  2375. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +0 -68
  2376. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +0 -248
  2377. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +0 -49
  2378. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +0 -125
  2379. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +0 -89
  2380. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +0 -254
  2381. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -46
  2382. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +0 -113
  2383. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +0 -46
  2384. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +0 -98
  2385. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +0 -62
  2386. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +0 -174
  2387. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +0 -36
  2388. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +0 -74
  2389. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +0 -65
  2390. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +0 -191
  2391. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +0 -207
  2392. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +0 -914
  2393. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +0 -127
  2394. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +0 -474
  2395. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +0 -52
  2396. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +0 -151
  2397. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +0 -65
  2398. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +0 -226
  2399. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +0 -67
  2400. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +0 -214
  2401. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +0 -64
  2402. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +0 -208
  2403. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -45
  2404. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +0 -107
  2405. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +0 -84
  2406. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +0 -55
  2407. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +0 -128
  2408. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +0 -50
  2409. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +0 -102
  2410. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -55
  2411. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +0 -277
  2412. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +0 -125
  2413. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +0 -43
  2414. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +0 -40
  2415. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +0 -56
  2416. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +0 -40
  2417. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +0 -49
  2418. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +0 -35
  2419. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +0 -46
  2420. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +0 -35
  2421. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +0 -46
  2422. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +0 -35
  2423. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +0 -142
  2424. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +0 -40
  2425. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +0 -51
  2426. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +0 -35
  2427. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +0 -48
  2428. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +0 -30
  2429. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +0 -38
  2430. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +0 -35
  2431. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +0 -222
  2432. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +0 -105
  2433. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +0 -409
  2434. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +0 -120
  2435. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +0 -98
  2436. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +0 -45
  2437. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +0 -567
  2438. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -150
  2439. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +0 -51
  2440. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +0 -35
  2441. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +0 -138
  2442. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +0 -35
  2443. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +0 -206
  2444. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +0 -105
  2445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +0 -132
  2446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +0 -70
  2447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +0 -54
  2448. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +0 -35
  2449. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +0 -271
  2450. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +0 -150
  2451. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +0 -168
  2452. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -65
  2453. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +0 -53
  2454. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +0 -35
  2455. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +0 -47
  2456. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -35
  2457. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +0 -53
  2458. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +0 -40
  2459. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +0 -235
  2460. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +0 -100
  2461. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +0 -234
  2462. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +0 -75
  2463. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +0 -53
  2464. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +0 -35
  2465. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +0 -305
  2466. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +0 -110
  2467. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +0 -57
  2468. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +0 -40
  2469. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +0 -55
  2470. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +0 -40
  2471. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +0 -61
  2472. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +0 -40
  2473. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +0 -70
  2474. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +0 -35
  2475. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +0 -49
  2476. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +0 -35
  2477. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +0 -99
  2478. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +0 -50
  2479. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +0 -133
  2480. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +0 -60
  2481. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +0 -136
  2482. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +0 -55
  2483. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +0 -48
  2484. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +0 -35
  2485. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +0 -227
  2486. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +0 -80
  2487. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +0 -190
  2488. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +0 -65
  2489. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +0 -101
  2490. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +0 -35
  2491. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +0 -71
  2492. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +0 -40
  2493. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +0 -69
  2494. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +0 -35
  2495. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +0 -125
  2496. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +0 -70
  2497. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +0 -134
  2498. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +0 -75
  2499. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +0 -217
  2500. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +0 -80
  2501. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +0 -123
  2502. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -45
  2503. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +0 -972
  2504. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +0 -315
  2505. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +0 -77
  2506. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +0 -45
  2507. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +0 -199
  2508. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +0 -90
  2509. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +0 -56
  2510. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +0 -35
  2511. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +0 -57
  2512. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +0 -35
  2513. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +0 -57
  2514. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +0 -40
  2515. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +0 -72
  2516. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +0 -35
  2517. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +0 -99
  2518. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +0 -35
  2519. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +0 -45
  2520. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +0 -35
  2521. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +0 -52
  2522. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +0 -35
  2523. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +0 -71
  2524. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +0 -40
  2525. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +0 -61
  2526. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +0 -30
  2527. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +0 -75
  2528. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +0 -40
  2529. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +0 -79
  2530. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +0 -35
  2531. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +0 -50
  2532. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +0 -35
  2533. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +0 -92
  2534. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +0 -55
  2535. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +0 -117
  2536. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +0 -45
  2537. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +0 -80
  2538. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +0 -40
  2539. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +0 -89
  2540. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +0 -35
  2541. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +0 -60
  2542. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +0 -40
  2543. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +0 -577
  2544. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +0 -130
  2545. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +0 -50
  2546. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +0 -35
  2547. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +0 -48
  2548. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +0 -30
  2549. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +0 -213
  2550. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +0 -65
  2551. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +0 -91
  2552. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +0 -45
  2553. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +0 -258
  2554. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +0 -65
  2555. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +0 -58
  2556. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +0 -40
  2557. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +0 -58
  2558. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +0 -35
  2559. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +0 -200
  2560. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +0 -100
  2561. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +0 -76
  2562. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +0 -40
  2563. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +0 -153
  2564. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +0 -55
  2565. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +0 -46
  2566. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +0 -35
  2567. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +0 -56
  2568. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +0 -50
  2569. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +0 -48
  2570. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +0 -35
  2571. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +0 -55
  2572. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +0 -55
  2573. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +0 -61
  2574. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +0 -40
  2575. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +0 -54
  2576. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +0 -35
  2577. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +0 -52
  2578. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +0 -35
  2579. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +0 -51
  2580. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +0 -35
  2581. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +0 -71
  2582. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +0 -45
  2583. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +0 -40
  2584. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +0 -40
  2585. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +0 -65
  2586. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +0 -40
  2587. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +0 -58
  2588. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +0 -40
  2589. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +0 -75
  2590. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +0 -45
  2591. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +0 -78
  2592. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +0 -65
  2593. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +0 -85
  2594. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +0 -55
  2595. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +0 -53
  2596. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +0 -45
  2597. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +0 -36
  2598. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +0 -30
  2599. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +0 -94
  2600. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +0 -35
  2601. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +0 -54
  2602. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +0 -40
  2603. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +0 -48
  2604. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +0 -45
  2605. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +0 -69
  2606. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +0 -40
  2607. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +0 -39
  2608. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +0 -30
  2609. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +0 -44
  2610. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +0 -35
  2611. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +0 -57
  2612. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +0 -35
  2613. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +0 -40
  2614. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +0 -30
  2615. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +0 -154
  2616. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +0 -95
  2617. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +0 -153
  2618. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +0 -100
  2619. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +0 -52
  2620. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +0 -45
  2621. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +0 -39
  2622. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +0 -35
  2623. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +0 -34
  2624. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +0 -35
  2625. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +0 -331
  2626. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +0 -165
  2627. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +0 -35
  2628. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +0 -35
  2629. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +0 -32
  2630. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +0 -35
  2631. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +0 -54
  2632. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +0 -50
  2633. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +0 -35
  2634. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +0 -35
  2635. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +0 -45
  2636. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +0 -75
  2637. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +0 -37
  2638. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +0 -35
  2639. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  2640. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -50
  2641. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -99
  2642. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +0 -75
  2643. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +0 -62
  2644. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +0 -45
  2645. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +0 -47
  2646. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +0 -35
  2647. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +0 -34
  2648. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +0 -30
  2649. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +0 -46
  2650. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +0 -35
  2651. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +0 -39
  2652. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +0 -35
  2653. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +0 -283
  2654. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +0 -145
  2655. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +0 -63
  2656. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +0 -45
  2657. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +0 -47
  2658. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +0 -35
  2659. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +0 -35
  2660. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +0 -30
  2661. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +0 -64
  2662. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +0 -50
  2663. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +0 -40
  2664. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +0 -35
  2665. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +0 -38
  2666. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +0 -35
  2667. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +0 -45
  2668. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +0 -35
  2669. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +0 -56
  2670. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +0 -40
  2671. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +0 -39
  2672. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +0 -40
  2673. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +0 -41
  2674. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +0 -35
  2675. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +0 -45
  2676. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +0 -35
  2677. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +0 -61
  2678. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +0 -40
  2679. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +0 -46
  2680. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +0 -35
  2681. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +0 -43
  2682. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +0 -35
  2683. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +0 -51
  2684. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +0 -40
  2685. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +0 -36
  2686. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +0 -35
  2687. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +0 -55
  2688. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +0 -40
  2689. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +0 -126
  2690. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +0 -80
  2691. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +0 -71
  2692. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +0 -60
  2693. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +0 -40
  2694. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +0 -40
  2695. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +0 -52
  2696. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +0 -40
  2697. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +0 -60
  2698. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +0 -40
  2699. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +0 -36
  2700. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +0 -45
  2701. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +0 -37
  2702. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +0 -35
  2703. data/src/core/lib/event_engine/executor/executor.h +0 -38
  2704. data/src/core/lib/event_engine/memory_allocator.cc +0 -74
  2705. data/src/core/lib/event_engine/thread_pool.cc +0 -253
  2706. data/src/core/lib/event_engine/thread_pool.h +0 -141
  2707. data/src/core/lib/promise/detail/basic_join.h +0 -197
  2708. data/src/core/lib/promise/detail/switch.h +0 -1455
  2709. data/src/core/lib/resolver/server_address.cc +0 -182
  2710. data/src/core/lib/transport/pid_controller.cc +0 -51
  2711. data/src/core/lib/transport/pid_controller.h +0 -116
  2712. data/src/core/lib/transport/transport_impl.h +0 -102
  2713. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
  2714. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +0 -62
  2715. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm.c +0 -38
  2716. data/third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c +0 -112
  2717. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +0 -34
  2718. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -65
  2719. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +0 -52
  2720. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
  2721. data/third_party/cares/cares/src/lib/ares_nameser.h +0 -482
  2722. data/third_party/re2/util/benchmark.h +0 -156
  2723. data/third_party/re2/util/flags.h +0 -26
  2724. data/third_party/re2/util/malloc_counter.h +0 -19
  2725. data/third_party/re2/util/pcre.cc +0 -1025
  2726. data/third_party/re2/util/pcre.h +0 -681
  2727. data/third_party/re2/util/test.h +0 -50
  2728. data/third_party/upb/third_party/utf8_range/range2-neon.c +0 -157
  2729. data/third_party/upb/third_party/utf8_range/utf8_range.h +0 -9
  2730. data/third_party/upb/upb/arena.c +0 -277
  2731. data/third_party/upb/upb/arena.h +0 -225
  2732. data/third_party/upb/upb/array.c +0 -114
  2733. data/third_party/upb/upb/array.h +0 -83
  2734. data/third_party/upb/upb/collections.h +0 -36
  2735. data/third_party/upb/upb/decode.c +0 -1221
  2736. data/third_party/upb/upb/decode.h +0 -95
  2737. data/third_party/upb/upb/decode_fast.c +0 -1055
  2738. data/third_party/upb/upb/decode_fast.h +0 -153
  2739. data/third_party/upb/upb/def.c +0 -3269
  2740. data/third_party/upb/upb/def.h +0 -416
  2741. data/third_party/upb/upb/def.hpp +0 -441
  2742. data/third_party/upb/upb/encode.c +0 -613
  2743. data/third_party/upb/upb/encode.h +0 -81
  2744. data/third_party/upb/upb/extension_registry.c +0 -93
  2745. data/third_party/upb/upb/extension_registry.h +0 -84
  2746. data/third_party/upb/upb/internal/decode.h +0 -211
  2747. data/third_party/upb/upb/internal/table.h +0 -385
  2748. data/third_party/upb/upb/internal/upb.h +0 -68
  2749. data/third_party/upb/upb/internal/vsnprintf_compat.h +0 -52
  2750. data/third_party/upb/upb/json_decode.c +0 -1512
  2751. data/third_party/upb/upb/json_decode.h +0 -47
  2752. data/third_party/upb/upb/json_encode.c +0 -780
  2753. data/third_party/upb/upb/json_encode.h +0 -65
  2754. data/third_party/upb/upb/map.c +0 -108
  2755. data/third_party/upb/upb/map.h +0 -117
  2756. data/third_party/upb/upb/message_value.h +0 -66
  2757. data/third_party/upb/upb/mini_table.c +0 -1147
  2758. data/third_party/upb/upb/mini_table.h +0 -189
  2759. data/third_party/upb/upb/mini_table.hpp +0 -112
  2760. data/third_party/upb/upb/msg.c +0 -368
  2761. data/third_party/upb/upb/msg.h +0 -71
  2762. data/third_party/upb/upb/msg_internal.h +0 -837
  2763. data/third_party/upb/upb/port_def.inc +0 -262
  2764. data/third_party/upb/upb/port_undef.inc +0 -63
  2765. data/third_party/upb/upb/reflection.c +0 -323
  2766. data/third_party/upb/upb/reflection.h +0 -110
  2767. data/third_party/upb/upb/reflection.hpp +0 -37
  2768. data/third_party/upb/upb/status.c +0 -86
  2769. data/third_party/upb/upb/status.h +0 -66
  2770. data/third_party/upb/upb/table.c +0 -926
  2771. data/third_party/upb/upb/table_internal.h +0 -36
  2772. data/third_party/upb/upb/text_encode.c +0 -473
  2773. data/third_party/upb/upb/text_encode.h +0 -64
  2774. data/third_party/upb/upb/upb.c +0 -76
  2775. data/third_party/upb/upb/upb.h +0 -184
  2776. data/third_party/upb/upb/upb.hpp +0 -115
  2777. data/third_party/zlib/gzclose.c +0 -25
  2778. data/third_party/zlib/gzlib.c +0 -639
  2779. data/third_party/zlib/gzread.c +0 -650
  2780. data/third_party/zlib/gzwrite.c +0 -677
  2781. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  2782. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -20,26 +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>
34
+ #include <vector>
32
35
 
33
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"
34
41
  #include "absl/status/status.h"
35
42
  #include "absl/strings/cord.h"
36
43
  #include "absl/strings/str_cat.h"
37
44
  #include "absl/strings/str_format.h"
38
45
  #include "absl/strings/string_view.h"
39
46
  #include "absl/types/optional.h"
47
+ #include "absl/types/variant.h"
40
48
 
41
49
  #include <grpc/event_engine/event_engine.h>
42
50
  #include <grpc/grpc.h>
51
+ #include <grpc/impl/channel_arg_names.h>
43
52
  #include <grpc/impl/connectivity_state.h>
44
53
  #include <grpc/slice_buffer.h>
45
54
  #include <grpc/status.h>
@@ -47,9 +56,8 @@
47
56
  #include <grpc/support/log.h>
48
57
  #include <grpc/support/time.h>
49
58
 
50
- #include "src/core/ext/transport/chttp2/transport/context_list.h"
59
+ #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
51
60
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
52
- #include "src/core/ext/transport/chttp2/transport/frame.h"
53
61
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
54
62
  #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
55
63
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
@@ -57,14 +65,21 @@
57
65
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
58
66
  #include "src/core/ext/transport/chttp2/transport/http_trace.h"
59
67
  #include "src/core/ext/transport/chttp2/transport/internal.h"
60
- #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"
61
73
  #include "src/core/ext/transport/chttp2/transport/varint.h"
74
+ #include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
62
75
  #include "src/core/lib/channel/call_tracer.h"
63
76
  #include "src/core/lib/channel/channel_args.h"
64
77
  #include "src/core/lib/channel/context.h"
78
+ #include "src/core/lib/channel/tcp_tracer.h"
65
79
  #include "src/core/lib/debug/stats.h"
66
80
  #include "src/core/lib/debug/stats_data.h"
67
81
  #include "src/core/lib/experiments/experiments.h"
82
+ #include "src/core/lib/gpr/string.h"
68
83
  #include "src/core/lib/gpr/useful.h"
69
84
  #include "src/core/lib/gprpp/bitset.h"
70
85
  #include "src/core/lib/gprpp/crash.h"
@@ -78,7 +93,6 @@
78
93
  #include "src/core/lib/iomgr/exec_ctx.h"
79
94
  #include "src/core/lib/iomgr/iomgr_fwd.h"
80
95
  #include "src/core/lib/iomgr/port.h"
81
- #include "src/core/lib/iomgr/timer.h"
82
96
  #include "src/core/lib/promise/poll.h"
83
97
  #include "src/core/lib/resource_quota/arena.h"
84
98
  #include "src/core/lib/resource_quota/memory_quota.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,47 +187,101 @@ 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
  }
260
+
261
+ grpc_core::WriteTimestampsCallback g_write_timestamps_callback = nullptr;
262
+ grpc_core::CopyContextFn g_get_copied_context_fn = nullptr;
218
263
  } // namespace
219
264
 
220
265
  namespace grpc_core {
221
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
+
222
285
  namespace {
223
286
  TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
224
287
  TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
@@ -241,6 +304,76 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
241
304
  test_only_disable_transient_failure_state_notification = disable;
242
305
  }
243
306
 
307
+ void GrpcHttp2SetWriteTimestampsCallback(WriteTimestampsCallback fn) {
308
+ g_write_timestamps_callback = fn;
309
+ }
310
+
311
+ void GrpcHttp2SetCopyContextFn(CopyContextFn fn) {
312
+ g_get_copied_context_fn = fn;
313
+ }
314
+
315
+ WriteTimestampsCallback GrpcHttp2GetWriteTimestampsCallback() {
316
+ return g_write_timestamps_callback;
317
+ }
318
+
319
+ CopyContextFn GrpcHttp2GetCopyContextFn() { return g_get_copied_context_fn; }
320
+
321
+ // For each entry in the passed ContextList, it executes the function set using
322
+ // GrpcHttp2SetWriteTimestampsCallback method with each context in the list
323
+ // and \a ts. It also deletes/frees up the passed ContextList after this
324
+ // operation.
325
+ void ForEachContextListEntryExecute(void* arg, Timestamps* ts,
326
+ grpc_error_handle error) {
327
+ ContextList* context_list = reinterpret_cast<ContextList*>(arg);
328
+ if (!context_list) {
329
+ return;
330
+ }
331
+ for (auto it = context_list->begin(); it != context_list->end(); it++) {
332
+ ContextListEntry& entry = (*it);
333
+ if (ts) {
334
+ ts->byte_offset = static_cast<uint32_t>(entry.ByteOffsetInStream());
335
+ }
336
+ g_write_timestamps_callback(entry.TraceContext(), ts, error);
337
+ }
338
+ delete context_list;
339
+ }
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
+
244
377
  } // namespace grpc_core
245
378
 
246
379
  //
@@ -250,6 +383,8 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
250
383
  grpc_chttp2_transport::~grpc_chttp2_transport() {
251
384
  size_t i;
252
385
 
386
+ cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
387
+
253
388
  event_engine.reset();
254
389
 
255
390
  if (channelz_socket != nullptr) {
@@ -260,12 +395,12 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
260
395
 
261
396
  grpc_slice_buffer_destroy(&qbuf);
262
397
 
263
- grpc_slice_buffer_destroy(&outbuf);
264
-
265
398
  grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
266
399
  // ContextList::Execute follows semantics of a callback function and does not
267
400
  // take a ref on error
268
- grpc_core::ContextList::Execute(cl, nullptr, error);
401
+ if (cl != nullptr) {
402
+ grpc_core::ForEachContextListEntryExecute(cl, nullptr, error);
403
+ }
269
404
  cl = nullptr;
270
405
 
271
406
  grpc_slice_buffer_destroy(&read_buffer);
@@ -276,14 +411,9 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
276
411
  GPR_ASSERT(lists[i].tail == nullptr);
277
412
  }
278
413
 
279
- GPR_ASSERT(grpc_chttp2_stream_map_size(&stream_map) == 0);
280
-
281
- grpc_chttp2_stream_map_destroy(&stream_map);
282
-
414
+ GPR_ASSERT(stream_map.empty());
283
415
  GRPC_COMBINER_UNREF(combiner, "chttp2_transport");
284
416
 
285
- cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
286
-
287
417
  while (write_cb_pool) {
288
418
  grpc_chttp2_write_cb* next = write_cb_pool->next;
289
419
  gpr_free(write_cb_pool);
@@ -296,8 +426,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
296
426
  }
297
427
  }
298
428
 
299
- static const grpc_transport_vtable* get_vtable(void);
300
-
301
429
  static void read_channel_args(grpc_chttp2_transport* t,
302
430
  const grpc_core::ChannelArgs& channel_args,
303
431
  bool is_client) {
@@ -319,37 +447,46 @@ static void read_channel_args(grpc_chttp2_transport* t,
319
447
  t->hpack_compressor.SetMaxUsableSize(max_hpack_table_size);
320
448
  }
321
449
 
322
- t->ping_policy.max_pings_without_data =
323
- std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
324
- .value_or(g_default_max_pings_without_data));
325
- t->ping_policy.max_ping_strikes =
326
- std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PING_STRIKES)
327
- .value_or(g_default_max_ping_strikes));
328
- t->ping_policy.min_recv_ping_interval_without_data =
329
- std::max(grpc_core::Duration::Zero(),
330
- channel_args
331
- .GetDurationFromIntMillis(
332
- GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)
333
- .value_or(grpc_core::Duration::Milliseconds(
334
- g_default_min_recv_ping_interval_without_data_ms)));
335
450
  t->write_buffer_size =
336
451
  std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)
337
452
  .value_or(grpc_core::chttp2::kDefaultWindow));
338
453
  t->keepalive_time =
339
454
  std::max(grpc_core::Duration::Milliseconds(1),
340
455
  channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
341
- .value_or(grpc_core::Duration::Milliseconds(
342
- t->is_client ? g_default_client_keepalive_time_ms
343
- : g_default_server_keepalive_time_ms)));
456
+ .value_or(t->is_client ? g_default_client_keepalive_time
457
+ : g_default_server_keepalive_time));
344
458
  t->keepalive_timeout = std::max(
345
459
  grpc_core::Duration::Zero(),
346
460
  channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
347
- .value_or(grpc_core::Duration::Milliseconds(
348
- t->is_client ? g_default_client_keepalive_timeout_ms
349
- : g_default_server_keepalive_timeout_ms)));
350
- t->keepalive_permit_without_calls =
351
- channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
352
- .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
+
353
490
  // Only send the prefered rx frame size http2 setting if we are instructed
354
491
  // to auto size the buffers allocated at tcp level and we also can adjust
355
492
  // sending frame size.
@@ -358,18 +495,42 @@ static void read_channel_args(grpc_chttp2_transport* t,
358
495
  .GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
359
496
  .value_or(false);
360
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
+
361
507
  if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
362
508
  .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
363
509
  t->channelz_socket =
364
510
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
365
511
  std::string(grpc_endpoint_get_local_address(t->ep)),
366
512
  std::string(t->peer_string.as_string_view()),
367
- absl::StrCat(get_vtable()->name, " ",
513
+ absl::StrCat(t->GetTransportName(), " ",
368
514
  t->peer_string.as_string_view()),
369
515
  channel_args
370
516
  .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
371
517
  }
372
518
 
519
+ t->ack_pings = channel_args.GetBool("grpc.http2.ack_pings").value_or(true);
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
+
373
534
  const int soft_limit =
374
535
  channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
375
536
  if (soft_limit < 0) {
@@ -385,138 +546,77 @@ static void read_channel_args(grpc_chttp2_transport* t,
385
546
  t->max_header_list_size_soft_limit = soft_limit;
386
547
  }
387
548
 
388
- static const struct {
389
- absl::string_view channel_arg_name;
390
- grpc_chttp2_setting_id setting_id;
391
- int default_value;
392
- int min;
393
- int max;
394
- bool availability[2] /* server, client */;
395
- } settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
396
- GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
397
- -1,
398
- 0,
399
- INT32_MAX,
400
- {true, false}},
401
- {GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
402
- GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
403
- -1,
404
- 0,
405
- INT32_MAX,
406
- {true, true}},
407
- {GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE,
408
- GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
409
- -1,
410
- 0,
411
- INT32_MAX,
412
- {true, true}},
413
- {GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
414
- GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
415
- -1,
416
- 16384,
417
- 16777215,
418
- {true, true}},
419
- {GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
420
- GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
421
- 1,
422
- 0,
423
- 1,
424
- {true, true}},
425
- {GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
426
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
427
- -1,
428
- 5,
429
- INT32_MAX,
430
- {true, true}}};
431
-
432
- for (size_t i = 0; i < GPR_ARRAY_SIZE(settings_map); i++) {
433
- const auto& setting = settings_map[i];
434
- if (setting.availability[is_client]) {
435
- const int value = channel_args.GetInt(setting.channel_arg_name)
436
- .value_or(setting.default_value);
437
- if (value >= 0) {
438
- queue_setting_update(t, setting.setting_id,
439
- grpc_core::Clamp(value, setting.min, setting.max));
440
- } else if (setting.setting_id ==
441
- GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE) {
442
- // Set value to 1.25 * soft limit if this is larger than
443
- // `DEFAULT_MAX_HEADER_LIST_SIZE` and
444
- // `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
445
- const int soft_limit = channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE)
446
- .value_or(setting.default_value);
447
- const int value = (soft_limit < (INT_MAX / 1.25))
448
- ? static_cast<int>(soft_limit * 1.25)
449
- : soft_limit;
450
- if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
451
- queue_setting_update(
452
- t, setting.setting_id,
453
- grpc_core::Clamp(value, setting.min, setting.max));
454
- }
455
- }
456
- } else if (channel_args.Contains(setting.channel_arg_name)) {
457
- gpr_log(GPR_DEBUG, "%s is not available on %s",
458
- std::string(setting.channel_arg_name).c_str(),
459
- 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);
460
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);
579
+ }
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);
461
593
  }
462
594
 
463
595
  if (t->enable_preferred_rx_crypto_frame_advertisement) {
464
- const grpc_chttp2_setting_parameters* sp =
465
- &grpc_chttp2_settings_parameters
466
- [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
467
- queue_setting_update(
468
- t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
469
- grpc_core::Clamp(INT_MAX, static_cast<int>(sp->min_value),
470
- static_cast<int>(sp->max_value)));
596
+ t->settings.mutable_local().SetPreferredReceiveCryptoMessageSize(INT_MAX);
471
597
  }
472
- }
473
598
 
474
- static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
475
- if (t->is_client) {
476
- t->keepalive_time = g_default_client_keepalive_time_ms == INT_MAX
477
- ? grpc_core::Duration::Infinity()
478
- : grpc_core::Duration::Milliseconds(
479
- g_default_client_keepalive_time_ms);
480
- t->keepalive_timeout = g_default_client_keepalive_timeout_ms == INT_MAX
481
- ? grpc_core::Duration::Infinity()
482
- : grpc_core::Duration::Milliseconds(
483
- g_default_client_keepalive_timeout_ms);
484
- t->keepalive_permit_without_calls =
485
- g_default_client_keepalive_permit_without_calls;
486
- } else {
487
- t->keepalive_time = g_default_server_keepalive_time_ms == INT_MAX
488
- ? grpc_core::Duration::Infinity()
489
- : grpc_core::Duration::Milliseconds(
490
- g_default_server_keepalive_time_ms);
491
- t->keepalive_timeout = g_default_server_keepalive_timeout_ms == INT_MAX
492
- ? grpc_core::Duration::Infinity()
493
- : grpc_core::Duration::Milliseconds(
494
- g_default_server_keepalive_timeout_ms);
495
- t->keepalive_permit_without_calls =
496
- g_default_server_keepalive_permit_without_calls;
497
- }
498
- }
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);
499
603
 
500
- static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
501
- t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
502
- t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
503
- t->ping_policy.min_recv_ping_interval_without_data =
504
- grpc_core::Duration::Milliseconds(
505
- 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);
506
607
  }
507
608
 
508
609
  static void init_keepalive_pings_if_enabled_locked(
509
- void* arg, GRPC_UNUSED grpc_error_handle error) {
610
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
611
+ GRPC_UNUSED grpc_error_handle error) {
510
612
  GPR_DEBUG_ASSERT(error.ok());
511
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
512
613
  if (t->keepalive_time != grpc_core::Duration::Infinity()) {
513
614
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
514
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
515
615
  t->keepalive_ping_timer_handle =
516
- t->event_engine->RunAfter(t->keepalive_time, [t] {
616
+ t->event_engine->RunAfter(t->keepalive_time, [t = t->Ref()]() mutable {
517
617
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
518
618
  grpc_core::ExecCtx exec_ctx;
519
- init_keepalive_ping(t);
619
+ init_keepalive_ping(std::move(t));
520
620
  });
521
621
  } else {
522
622
  // Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
@@ -528,84 +628,66 @@ static void init_keepalive_pings_if_enabled_locked(
528
628
  grpc_chttp2_transport::grpc_chttp2_transport(
529
629
  const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
530
630
  bool is_client)
531
- : refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
532
- ? "chttp2_refcount"
533
- : 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),
534
636
  ep(ep),
535
637
  peer_string(
536
638
  grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
537
639
  memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
538
640
  ->memory_quota()
539
- ->CreateMemoryOwner(absl::StrCat(
540
- grpc_endpoint_get_peer(ep), ":client_transport"))),
641
+ ->CreateMemoryOwner()),
541
642
  self_reservation(
542
643
  memory_owner.MakeReservation(sizeof(grpc_chttp2_transport))),
543
- combiner(grpc_combiner_create()),
644
+ event_engine(
645
+ channel_args
646
+ .GetObjectRef<grpc_event_engine::experimental::EventEngine>()),
647
+ combiner(grpc_combiner_create(event_engine)),
544
648
  state_tracker(is_client ? "client_transport" : "server_transport",
545
649
  GRPC_CHANNEL_READY),
546
- is_client(is_client),
547
650
  next_stream_id(is_client ? 1 : 2),
651
+ ping_abuse_policy(channel_args),
652
+ ping_rate_policy(channel_args, is_client),
548
653
  flow_control(
549
654
  peer_string.as_string_view(),
550
655
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
551
656
  &memory_owner),
552
657
  deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
553
- event_engine(
554
- channel_args
555
- .GetObjectRef<grpc_event_engine::experimental::EventEngine>()) {
658
+ is_client(is_client) {
659
+ cl = new grpc_core::ContextList();
556
660
  GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
557
661
  GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
558
- base.vtable = get_vtable();
559
- // 8 is a random stab in the dark as to a good initial size: it's small enough
560
- // that it shouldn't waste memory for infrequently used connections, yet
561
- // large enough that the exponential growth should happen nicely when it's
562
- // needed.
563
- // TODO(ctiller): tune this
564
- grpc_chttp2_stream_map_init(&stream_map, 8);
565
662
 
566
663
  grpc_slice_buffer_init(&read_buffer);
567
- grpc_slice_buffer_init(&outbuf);
568
664
  if (is_client) {
569
- grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
570
- 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));
571
668
  }
572
669
  grpc_slice_buffer_init(&qbuf);
573
- // copy in initial settings to all setting sets
574
- size_t i;
575
- int j;
576
- for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
577
- for (j = 0; j < GRPC_NUM_SETTING_SETS; j++) {
578
- settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
579
- }
580
- }
581
670
  grpc_chttp2_goaway_parser_init(&goaway_parser);
582
671
 
583
672
  // configure http2 the way we like it
584
673
  if (is_client) {
585
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
586
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
674
+ settings.mutable_local().SetEnablePush(false);
675
+ settings.mutable_local().SetMaxConcurrentStreams(0);
587
676
  }
588
- queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
589
- DEFAULT_MAX_HEADER_LIST_SIZE);
590
- queue_setting_update(this,
591
- GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA, 1);
592
-
593
- configure_transport_ping_policy(this);
594
- init_transport_keepalive_settings(this);
677
+ settings.mutable_local().SetMaxHeaderListSize(DEFAULT_MAX_HEADER_LIST_SIZE);
678
+ settings.mutable_local().SetAllowTrueBinaryMetadata(true);
595
679
 
596
680
  read_channel_args(this, channel_args, is_client);
597
681
 
598
- // No pings allowed before receiving a header or data frame.
599
- ping_state.pings_before_data_required = 0;
600
- ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
601
-
602
- ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
603
- 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();
604
686
 
605
687
  grpc_core::ExecCtx exec_ctx;
606
688
  combiner->Run(
607
- GRPC_CLOSURE_INIT(&init_keepalive_ping_locked,
608
- init_keepalive_pings_if_enabled_locked, this, nullptr),
689
+ grpc_core::InitTransportClosure<init_keepalive_pings_if_enabled_locked>(
690
+ Ref(), &init_keepalive_ping_locked),
609
691
  absl::OkStatus());
610
692
 
611
693
  if (flow_control.bdp_probe()) {
@@ -630,21 +712,20 @@ grpc_chttp2_transport::grpc_chttp2_transport(
630
712
  }
631
713
 
632
714
  static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
633
- 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));
634
717
  t->destroying = 1;
635
718
  close_transport_locked(
636
- t, grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
637
- grpc_core::StatusIntProperty::kOccurredDuringWrite,
638
- 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));
639
723
  t->memory_owner.Reset();
640
- // Must be the last line.
641
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
642
724
  }
643
725
 
644
- static void destroy_transport(grpc_transport* gt) {
645
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
646
- t->combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, nullptr),
647
- absl::OkStatus());
726
+ void grpc_chttp2_transport::Orphan() {
727
+ combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, this, nullptr),
728
+ absl::OkStatus());
648
729
  }
649
730
 
650
731
  static void close_transport_locked(grpc_chttp2_transport* t,
@@ -670,39 +751,33 @@ static void close_transport_locked(grpc_chttp2_transport* t,
670
751
  t->closed_with_error = error;
671
752
  connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
672
753
  "close_transport");
673
- if (t->ping_state.delayed_ping_timer_handle.has_value()) {
674
- if (t->event_engine->Cancel(*t->ping_state.delayed_ping_timer_handle)) {
675
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
676
- t->ping_state.delayed_ping_timer_handle.reset();
677
- }
754
+ if (t->keepalive_ping_timeout_handle != TaskHandle::kInvalid) {
755
+ t->event_engine->Cancel(std::exchange(t->keepalive_ping_timeout_handle,
756
+ TaskHandle::kInvalid));
678
757
  }
679
- if (t->next_bdp_ping_timer_handle.has_value()) {
680
- if (t->event_engine->Cancel(*t->next_bdp_ping_timer_handle)) {
681
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
682
- t->next_bdp_ping_timer_handle.reset();
683
- }
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;
684
769
  }
685
770
  switch (t->keepalive_state) {
686
771
  case GRPC_CHTTP2_KEEPALIVE_STATE_WAITING:
687
- if (t->keepalive_ping_timer_handle.has_value()) {
688
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
689
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
690
- t->keepalive_ping_timer_handle.reset();
691
- }
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;
692
775
  }
693
776
  break;
694
777
  case GRPC_CHTTP2_KEEPALIVE_STATE_PINGING:
695
- if (t->keepalive_ping_timer_handle.has_value()) {
696
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
697
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
698
- t->keepalive_ping_timer_handle.reset();
699
- }
700
- }
701
- if (t->keepalive_watchdog_timer_handle.has_value()) {
702
- if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
703
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
704
- t->keepalive_watchdog_timer_handle.reset();
705
- }
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;
706
781
  }
707
782
  break;
708
783
  case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
@@ -746,24 +821,27 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
746
821
  }
747
822
  #endif
748
823
 
749
- grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
750
- // We reserve one 'active stream' that's dropped when the stream is
751
- // read-closed. The others are for Chttp2IncomingByteStreams that are
752
- // actively reading
753
- GRPC_CHTTP2_STREAM_REF(s, "chttp2");
754
- GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
755
- }
756
-
757
824
  grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
758
825
  grpc_stream_refcount* refcount,
759
826
  const void* server_data,
760
827
  grpc_core::Arena* arena)
761
- : t(t),
762
- refcount(refcount),
763
- 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
+ }()),
764
841
  initial_metadata_buffer(arena),
765
842
  trailing_metadata_buffer(arena),
766
843
  flow_control(&t->flow_control) {
844
+ t->streams_allocated.fetch_add(1, std::memory_order_relaxed);
767
845
  if (server_data) {
768
846
  id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
769
847
  if (grpc_http_trace.enabled()) {
@@ -771,7 +849,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
771
849
  this, id, server_data);
772
850
  }
773
851
  *t->accepting_stream = this;
774
- grpc_chttp2_stream_map_add(&t->stream_map, id, this);
852
+ t->stream_map.emplace(id, this);
775
853
  post_destructive_reclaimer(t);
776
854
  }
777
855
 
@@ -780,8 +858,9 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
780
858
  }
781
859
 
782
860
  grpc_chttp2_stream::~grpc_chttp2_stream() {
783
- grpc_chttp2_list_remove_stalled_by_stream(t, this);
784
- 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);
785
864
 
786
865
  if (t->channelz_socket != nullptr) {
787
866
  if ((t->is_client && eos_received) || (!t->is_client && eos_sent)) {
@@ -793,7 +872,7 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
793
872
 
794
873
  GPR_ASSERT((write_closed && read_closed) || id == 0);
795
874
  if (id != 0) {
796
- GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
875
+ GPR_ASSERT(t->stream_map.count(id) == 0);
797
876
  }
798
877
 
799
878
  grpc_slice_buffer_destroy(&frame_storage);
@@ -812,16 +891,14 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
812
891
  GPR_ASSERT(recv_message_ready == nullptr);
813
892
  GPR_ASSERT(recv_trailing_metadata_finished == nullptr);
814
893
  grpc_slice_buffer_destroy(&flow_controlled_buffer);
815
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
816
894
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus());
817
895
  }
818
896
 
819
- static int init_stream(grpc_transport* gt, grpc_stream* gs,
820
- grpc_stream_refcount* refcount, const void* server_data,
821
- grpc_core::Arena* arena) {
822
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
823
- new (gs) grpc_chttp2_stream(t, refcount, server_data, arena);
824
- 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);
825
902
  }
826
903
 
827
904
  static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
@@ -829,13 +906,12 @@ static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
829
906
  s->~grpc_chttp2_stream();
830
907
  }
831
908
 
832
- static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
833
- grpc_closure* then_schedule_closure) {
834
- 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) {
835
911
  grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
836
912
 
837
913
  s->destroy_stream_arg = then_schedule_closure;
838
- t->combiner->Run(
914
+ combiner->Run(
839
915
  GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, nullptr),
840
916
  absl::OkStatus());
841
917
  }
@@ -848,7 +924,7 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
848
924
  grpc_chttp2_stream* accepting = nullptr;
849
925
  GPR_ASSERT(t->accepting_stream == nullptr);
850
926
  t->accepting_stream = &accepting;
851
- t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
927
+ t->accept_stream_cb(t->accept_stream_cb_user_data, t,
852
928
  reinterpret_cast<void*>(id));
853
929
  t->accepting_stream = nullptr;
854
930
  return accepting;
@@ -900,7 +976,6 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
900
976
  case GRPC_CHTTP2_WRITE_STATE_IDLE:
901
977
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
902
978
  grpc_chttp2_initiate_write_reason_string(reason));
903
- GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
904
979
  // Note that the 'write_action_begin_locked' closure is being scheduled
905
980
  // on the 'finally_scheduler' of t->combiner. This means that
906
981
  // 'write_action_begin_locked' is called only *after* all the other
@@ -918,8 +993,8 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
918
993
  // It does not call the endpoint to write the bytes. That is done by the
919
994
  // 'write_action' (which is scheduled by 'write_action_begin_locked')
920
995
  t->combiner->FinallyRun(
921
- GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
922
- write_action_begin_locked, t, nullptr),
996
+ grpc_core::InitTransportClosure<write_action_begin_locked>(
997
+ t->Ref(), &t->write_action_begin_locked),
923
998
  absl::OkStatus());
924
999
  break;
925
1000
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
@@ -946,22 +1021,22 @@ static const char* begin_writing_desc(bool partial) {
946
1021
  }
947
1022
  }
948
1023
 
949
- static void write_action_begin_locked(void* gt,
950
- grpc_error_handle /*error_ignored*/) {
951
- 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*/) {
952
1027
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
953
1028
  grpc_chttp2_begin_write_result r;
954
1029
  if (!t->closed_with_error.ok()) {
955
1030
  r.writing = false;
956
1031
  } else {
957
- r = grpc_chttp2_begin_write(t);
1032
+ r = grpc_chttp2_begin_write(t.get());
958
1033
  }
959
1034
  if (r.writing) {
960
- set_write_state(t,
1035
+ set_write_state(t.get(),
961
1036
  r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
962
1037
  : GRPC_CHTTP2_WRITE_STATE_WRITING,
963
1038
  begin_writing_desc(r.partial));
964
- write_action(t, absl::OkStatus());
1039
+ write_action(t.get());
965
1040
  if (t->reading_paused_on_pending_induced_frames) {
966
1041
  GPR_ASSERT(t->num_pending_induced_frames == 0);
967
1042
  // We had paused reading, because we had many induced frames (SETTINGS
@@ -971,61 +1046,79 @@ static void write_action_begin_locked(void* gt,
971
1046
  GPR_INFO,
972
1047
  "transport %p : Resuming reading after being paused due to too "
973
1048
  "many unwritten SETTINGS ACK, PINGS ACK and RST_STREAM frames",
974
- t));
1049
+ t.get()));
975
1050
  t->reading_paused_on_pending_induced_frames = false;
976
- continue_read_action_locked(t);
1051
+ continue_read_action_locked(std::move(t));
977
1052
  }
978
1053
  } else {
979
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "begin writing nothing");
980
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
1054
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_IDLE,
1055
+ "begin writing nothing");
981
1056
  }
982
1057
  }
983
1058
 
984
- static void write_action(void* gt, grpc_error_handle /*error*/) {
985
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
1059
+ static void write_action(grpc_chttp2_transport* t) {
986
1060
  void* cl = t->cl;
987
- t->cl = nullptr;
1061
+ if (!t->cl->empty()) {
1062
+ // Transfer the ownership of the context list to the endpoint and create and
1063
+ // associate a new context list with the transport.
1064
+ // The old context list is stored in the cl local variable which is passed
1065
+ // to the endpoint. Its upto the endpoint to manage its lifetime.
1066
+ t->cl = new grpc_core::ContextList();
1067
+ } else {
1068
+ // t->cl is Empty. There is nothing to trace in this endpoint_write. set cl
1069
+ // to nullptr.
1070
+ cl = nullptr;
1071
+ }
988
1072
  // Choose max_frame_size as the prefered rx crypto frame size indicated by the
989
1073
  // peer.
990
1074
  int max_frame_size =
991
- t->settings
992
- [GRPC_PEER_SETTINGS]
993
- [GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
1075
+ t->settings.peer().preferred_receive_crypto_message_size();
994
1076
  // Note: max frame size is 0 if the remote peer does not support adjusting the
995
1077
  // sending frame size.
996
1078
  if (max_frame_size == 0) {
997
1079
  max_frame_size = INT_MAX;
998
1080
  }
999
- grpc_endpoint_write(
1000
- t->ep, &t->outbuf,
1001
- GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
1002
- grpc_schedule_on_exec_ctx),
1003
- 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);
1004
1090
  }
1005
1091
 
1006
- static void write_action_end(void* tp, grpc_error_handle error) {
1007
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1008
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
1009
- write_action_end_locked, t, nullptr),
1010
- 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);
1011
1102
  }
1012
1103
 
1013
1104
  // Callback from the grpc_endpoint after bytes have been written by calling
1014
1105
  // sendmsg
1015
- static void write_action_end_locked(void* tp, grpc_error_handle error) {
1016
- 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());
1017
1110
 
1018
1111
  bool closed = false;
1019
1112
  if (!error.ok()) {
1020
- close_transport_locked(t, error);
1113
+ close_transport_locked(t.get(), error);
1021
1114
  closed = true;
1022
1115
  }
1023
1116
 
1024
1117
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED) {
1025
1118
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
1026
1119
  closed = true;
1027
- if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
1028
- 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"));
1029
1122
  }
1030
1123
  }
1031
1124
 
@@ -1033,11 +1126,11 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
1033
1126
  case GRPC_CHTTP2_WRITE_STATE_IDLE:
1034
1127
  GPR_UNREACHABLE_CODE(break);
1035
1128
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
1036
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
1129
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
1037
1130
  break;
1038
1131
  case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE:
1039
- set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, "continue writing");
1040
- GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
1132
+ set_write_state(t.get(), GRPC_CHTTP2_WRITE_STATE_WRITING,
1133
+ "continue writing");
1041
1134
  // If the transport is closed, we will retry writing on the endpoint
1042
1135
  // and next write may contain part of the currently serialized frames.
1043
1136
  // So, we should only call the run_after_write callbacks when the next
@@ -1047,42 +1140,24 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
1047
1140
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
1048
1141
  }
1049
1142
  t->combiner->FinallyRun(
1050
- GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
1051
- write_action_begin_locked, t, nullptr),
1143
+ grpc_core::InitTransportClosure<write_action_begin_locked>(
1144
+ t, &t->write_action_begin_locked),
1052
1145
  absl::OkStatus());
1053
1146
  break;
1054
1147
  }
1055
1148
 
1056
- grpc_chttp2_end_write(t, error);
1057
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
1058
- }
1059
-
1060
- // Dirties an HTTP2 setting to be sent out next time a writing path occurs.
1061
- // If the change needs to occur immediately, manually initiate a write.
1062
- static void queue_setting_update(grpc_chttp2_transport* t,
1063
- grpc_chttp2_setting_id id, uint32_t value) {
1064
- const grpc_chttp2_setting_parameters* sp =
1065
- &grpc_chttp2_settings_parameters[id];
1066
- uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
1067
- if (use_value != value) {
1068
- gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
1069
- value, use_value);
1070
- }
1071
- if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
1072
- t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
1073
- t->dirtied_local_settings = true;
1074
- }
1149
+ grpc_chttp2_end_write(t.get(), error);
1075
1150
  }
1076
1151
 
1077
1152
  // Cancel out streams that haven't yet started if we have received a GOAWAY
1078
1153
  static void cancel_unstarted_streams(grpc_chttp2_transport* t,
1079
- grpc_error_handle error) {
1154
+ grpc_error_handle error, bool tarpit) {
1080
1155
  grpc_chttp2_stream* s;
1081
1156
  while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1082
1157
  s->trailing_metadata_buffer.Set(
1083
1158
  grpc_core::GrpcStreamNetworkState(),
1084
1159
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1085
- grpc_chttp2_cancel_stream(t, s, error);
1160
+ grpc_chttp2_cancel_stream(t, s, error, tarpit);
1086
1161
  }
1087
1162
  }
1088
1163
 
@@ -1115,21 +1190,20 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1115
1190
  grpc_core::StatusToString(t->goaway_error).c_str());
1116
1191
  }
1117
1192
  if (t->is_client) {
1118
- cancel_unstarted_streams(t, t->goaway_error);
1193
+ cancel_unstarted_streams(t, t->goaway_error, false);
1119
1194
  // Cancel all unseen streams
1120
- grpc_chttp2_stream_map_for_each(
1121
- &t->stream_map,
1122
- [](void* user_data, uint32_t /* key */, void* stream) {
1123
- uint32_t last_stream_id = *(static_cast<uint32_t*>(user_data));
1124
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
1125
- if (s->id > last_stream_id) {
1126
- s->trailing_metadata_buffer.Set(
1127
- grpc_core::GrpcStreamNetworkState(),
1128
- grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1129
- grpc_chttp2_cancel_stream(s->t, s, s->t->goaway_error);
1130
- }
1131
- },
1132
- &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
+ }
1133
1207
  }
1134
1208
  absl::Status status = grpc_error_to_absl_status(t->goaway_error);
1135
1209
  // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
@@ -1167,15 +1241,13 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1167
1241
  // maybe cancel out streams that haven't yet started if we have received a
1168
1242
  // GOAWAY
1169
1243
  if (!t->goaway_error.ok()) {
1170
- cancel_unstarted_streams(t, t->goaway_error);
1244
+ cancel_unstarted_streams(t, t->goaway_error, false);
1171
1245
  return;
1172
1246
  }
1173
1247
  // start streams where we have free grpc_chttp2_stream ids and free
1174
1248
  // * concurrency
1175
1249
  while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
1176
- grpc_chttp2_stream_map_size(&t->stream_map) <
1177
- t->settings[GRPC_PEER_SETTINGS]
1178
- [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
1250
+ t->stream_map.size() < t->settings.peer().max_concurrent_streams() &&
1179
1251
  grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
1180
1252
  // safe since we can't (legally) be parsing this stream yet
1181
1253
  GRPC_CHTTP2_IF_TRACING(gpr_log(
@@ -1194,7 +1266,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1194
1266
  "no_more_stream_ids");
1195
1267
  }
1196
1268
 
1197
- grpc_chttp2_stream_map_add(&t->stream_map, s->id, s);
1269
+ t->stream_map.emplace(s->id, s);
1198
1270
  post_destructive_reclaimer(t);
1199
1271
  grpc_chttp2_mark_stream_writable(t, s);
1200
1272
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
@@ -1209,7 +1281,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1209
1281
  t, s,
1210
1282
  grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
1211
1283
  grpc_core::StatusIntProperty::kRpcStatus,
1212
- GRPC_STATUS_UNAVAILABLE));
1284
+ GRPC_STATUS_UNAVAILABLE),
1285
+ false);
1213
1286
  }
1214
1287
  }
1215
1288
  }
@@ -1257,9 +1330,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1257
1330
  write_state_name(t->write_state), whence.file(), whence.line());
1258
1331
  }
1259
1332
 
1260
- auto* tracer = CallTracerIfEnabled(s);
1261
- if (tracer != nullptr) {
1262
- tracer->RecordAnnotation(
1333
+ if (s->call_tracer) {
1334
+ s->call_tracer->RecordAnnotation(
1263
1335
  absl::StrFormat("on_complete: s=%p %p desc=%s err=%s", s, closure, desc,
1264
1336
  grpc_core::StatusToString(error).c_str()));
1265
1337
  }
@@ -1317,10 +1389,12 @@ static void perform_stream_op_locked(void* stream_op,
1317
1389
  grpc_chttp2_stream* s =
1318
1390
  static_cast<grpc_chttp2_stream*>(op->handler_private.extra_arg);
1319
1391
  grpc_transport_stream_op_batch_payload* op_payload = op->payload;
1320
- grpc_chttp2_transport* t = s->t;
1392
+ grpc_chttp2_transport* t = s->t.get();
1321
1393
 
1322
1394
  s->context = op->payload->context;
1323
1395
  s->traced = op->is_traced;
1396
+ s->call_tracer = CallTracerIfSampled(s);
1397
+ s->tcp_tracer = TcpTracerIfSampled(s);
1324
1398
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1325
1399
  gpr_log(GPR_INFO,
1326
1400
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
@@ -1336,9 +1410,8 @@ static void perform_stream_op_locked(void* stream_op,
1336
1410
  }
1337
1411
  }
1338
1412
 
1339
- auto* tracer = CallTracerIfEnabled(s);
1340
- if (tracer != nullptr) {
1341
- tracer->RecordAnnotation(absl::StrFormat(
1413
+ if (s->call_tracer) {
1414
+ s->call_tracer->RecordAnnotation(absl::StrFormat(
1342
1415
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s, op,
1343
1416
  grpc_transport_stream_op_batch_string(op, true).c_str(),
1344
1417
  op->on_complete));
@@ -1354,10 +1427,16 @@ static void perform_stream_op_locked(void* stream_op,
1354
1427
  }
1355
1428
 
1356
1429
  if (op->cancel_stream) {
1357
- 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);
1358
1432
  }
1359
1433
 
1360
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
+ }
1361
1440
  if (t->is_client && t->channelz_socket != nullptr) {
1362
1441
  t->channelz_socket->RecordStreamStartedFromLocal();
1363
1442
  }
@@ -1392,7 +1471,8 @@ static void perform_stream_op_locked(void* stream_op,
1392
1471
  GRPC_ERROR_CREATE_REFERENCING("Transport closed",
1393
1472
  &t->closed_with_error, 1),
1394
1473
  grpc_core::StatusIntProperty::kRpcStatus,
1395
- GRPC_STATUS_UNAVAILABLE));
1474
+ GRPC_STATUS_UNAVAILABLE),
1475
+ false);
1396
1476
  }
1397
1477
  } else {
1398
1478
  GPR_ASSERT(s->id != 0);
@@ -1439,6 +1519,11 @@ static void perform_stream_op_locked(void* stream_op,
1439
1519
  frame_hdr[3] = static_cast<uint8_t>(len >> 8);
1440
1520
  frame_hdr[4] = static_cast<uint8_t>(len);
1441
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
+ }
1442
1527
  s->next_message_end_offset =
1443
1528
  s->flow_controlled_bytes_written +
1444
1529
  static_cast<int64_t>(s->flow_controlled_buffer.length) +
@@ -1565,12 +1650,11 @@ static void perform_stream_op_locked(void* stream_op,
1565
1650
  GRPC_CHTTP2_STREAM_UNREF(s, "perform_stream_op");
1566
1651
  }
1567
1652
 
1568
- static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1569
- grpc_transport_stream_op_batch* op) {
1570
- 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) {
1571
1655
  grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
1572
1656
 
1573
- if (!t->is_client) {
1657
+ if (!is_client) {
1574
1658
  if (op->send_initial_metadata) {
1575
1659
  GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
1576
1660
  ->get(grpc_core::GrpcTimeoutMetadata())
@@ -1590,22 +1674,48 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1590
1674
 
1591
1675
  GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
1592
1676
  op->handler_private.extra_arg = gs;
1593
- t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1594
- perform_stream_op_locked, op, nullptr),
1595
- absl::OkStatus());
1677
+ combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1678
+ perform_stream_op_locked, op, nullptr),
1679
+ absl::OkStatus());
1596
1680
  }
1597
1681
 
1598
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()));
1599
1685
  // callback remaining pings: they're not allowed to call into the transport,
1600
1686
  // and maybe they hold resources that need to be freed
1601
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1602
- GPR_ASSERT(!error.ok());
1603
- for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
1604
- grpc_closure_list_fail_all(&pq->lists[j], error);
1605
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
1606
- }
1687
+ t->ping_callbacks.CancelAll(t->event_engine.get());
1607
1688
  }
1608
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
+
1609
1719
  static void send_ping_locked(grpc_chttp2_transport* t,
1610
1720
  grpc_closure* on_initiate, grpc_closure* on_ack) {
1611
1721
  if (!t->closed_with_error.ok()) {
@@ -1613,88 +1723,125 @@ static void send_ping_locked(grpc_chttp2_transport* t,
1613
1723
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack, t->closed_with_error);
1614
1724
  return;
1615
1725
  }
1616
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1617
- grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE], on_initiate,
1618
- absl::OkStatus());
1619
- grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT], on_ack,
1620
- absl::OkStatus());
1726
+ t->ping_callbacks.OnPing(PingClosureWrapper(on_initiate),
1727
+ PingClosureWrapper(on_ack));
1621
1728
  }
1622
1729
 
1623
1730
  // Specialized form of send_ping_locked for keepalive ping. If there is already
1624
1731
  // a ping in progress, the keepalive ping would piggyback onto that ping,
1625
1732
  // instead of waiting for that ping to complete and then starting a new ping.
1626
- 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) {
1627
1735
  if (!t->closed_with_error.ok()) {
1628
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1629
- start_keepalive_ping_locked, t, nullptr),
1630
- t->closed_with_error);
1631
1736
  t->combiner->Run(
1632
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1633
- finish_keepalive_ping_locked, t, nullptr),
1737
+ grpc_core::InitTransportClosure<finish_keepalive_ping_locked>(
1738
+ t->Ref(), &t->finish_keepalive_ping_locked),
1634
1739
  t->closed_with_error);
1635
1740
  return;
1636
1741
  }
1637
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1638
- if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
1639
- // There is a ping in flight. Add yourself to the inflight closure list.
1640
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1641
- start_keepalive_ping_locked, t, nullptr),
1642
- t->closed_with_error);
1643
- grpc_closure_list_append(
1644
- &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
1645
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1646
- finish_keepalive_ping, t, grpc_schedule_on_exec_ctx),
1647
- absl::OkStatus());
1648
- return;
1649
- }
1650
- grpc_closure_list_append(
1651
- &pq->lists[GRPC_CHTTP2_PCL_INITIATE],
1652
- GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping,
1653
- t, grpc_schedule_on_exec_ctx),
1654
- absl::OkStatus());
1655
- grpc_closure_list_append(
1656
- &pq->lists[GRPC_CHTTP2_PCL_NEXT],
1657
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping,
1658
- t, grpc_schedule_on_exec_ctx),
1659
- absl::OkStatus());
1742
+ t->ping_callbacks.OnPingAck(
1743
+ PingClosureWrapper(grpc_core::InitTransportClosure<finish_keepalive_ping>(
1744
+ t->Ref(), &t->finish_keepalive_ping_locked)));
1660
1745
  }
1661
1746
 
1662
- void grpc_chttp2_retry_initiate_ping(grpc_chttp2_transport* t) {
1663
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1664
- retry_initiate_ping_locked, t, nullptr),
1665
- 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());
1666
1753
  }
1667
1754
 
1668
- static void retry_initiate_ping_locked(void* tp,
1669
- 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) {
1670
1758
  GPR_DEBUG_ASSERT(error.ok());
1671
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1672
- GPR_ASSERT(t->ping_state.delayed_ping_timer_handle.has_value());
1673
- t->ping_state.delayed_ping_timer_handle.reset();
1674
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1675
- 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);
1676
1763
  }
1677
1764
 
1678
1765
  void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1679
- grpc_chttp2_ping_queue* pq = &t->ping_queue;
1680
- if (pq->inflight_id != id) {
1766
+ if (!t->ping_callbacks.AckPing(id, t->event_engine.get())) {
1681
1767
  gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1682
1768
  std::string(t->peer_string.as_string_view()).c_str(), id);
1683
1769
  return;
1684
1770
  }
1685
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
1686
- &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]);
1687
- if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_NEXT])) {
1771
+ if (t->ping_callbacks.ping_requested()) {
1688
1772
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS);
1689
1773
  }
1690
1774
  }
1691
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
+
1692
1839
  namespace {
1693
1840
 
1694
1841
  // Fire and forget (deletes itself on completion). Does a graceful shutdown by
1695
1842
  // sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
1696
1843
  // and waiting for an ack (effective waiting for an RTT) and then sending a
1697
- // final GOAWAY freame with an updated last stream identifier. This helps ensure
1844
+ // final GOAWAY frame with an updated last stream identifier. This helps ensure
1698
1845
  // that a connection can be cleanly shut down without losing requests.
1699
1846
  // In the event, that the client does not respond to the ping for some reason,
1700
1847
  // we add a 20 second deadline, after which we send the second goaway.
@@ -1702,22 +1849,19 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1702
1849
  public:
1703
1850
  static void Start(grpc_chttp2_transport* t) { new GracefulGoaway(t); }
1704
1851
 
1705
- ~GracefulGoaway() override {
1706
- GRPC_CHTTP2_UNREF_TRANSPORT(t_, "graceful goaway");
1707
- }
1708
-
1709
1852
  private:
1710
- explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
1853
+ using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
1854
+
1855
+ explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t->Ref()) {
1711
1856
  t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
1712
- GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
1713
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));
1714
1862
  send_ping_locked(
1715
1863
  t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
1716
1864
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1717
- Ref().release(); // Ref for the timer
1718
- grpc_timer_init(
1719
- &timer_, grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(20),
1720
- GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr));
1721
1865
  }
1722
1866
 
1723
1867
  void MaybeSendFinalGoawayLocked() {
@@ -1730,7 +1874,7 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1730
1874
  gpr_log(GPR_INFO,
1731
1875
  "transport:%p %s peer:%s Transport already shutting down. "
1732
1876
  "Graceful GOAWAY abandoned.",
1733
- t_, t_->is_client ? "CLIENT" : "SERVER",
1877
+ t_.get(), t_->is_client ? "CLIENT" : "SERVER",
1734
1878
  std::string(t_->peer_string.as_string_view()).c_str()));
1735
1879
  return;
1736
1880
  }
@@ -1739,13 +1883,14 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1739
1883
  gpr_log(GPR_INFO,
1740
1884
  "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1741
1885
  "Sending final GOAWAY with stream_id:%d",
1742
- t_, t_->is_client ? "CLIENT" : "SERVER",
1886
+ t_.get(), t_->is_client ? "CLIENT" : "SERVER",
1743
1887
  std::string(t_->peer_string.as_string_view()).c_str(),
1744
1888
  t_->last_new_stream_id));
1745
1889
  t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1746
1890
  grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1747
1891
  &t_->qbuf);
1748
- 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);
1749
1894
  }
1750
1895
 
1751
1896
  static void OnPingAck(void* arg, grpc_error_handle /* error */) {
@@ -1757,32 +1902,12 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1757
1902
 
1758
1903
  static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
1759
1904
  auto* self = static_cast<GracefulGoaway*>(arg);
1760
- grpc_timer_cancel(&self->timer_);
1761
1905
  self->MaybeSendFinalGoawayLocked();
1762
1906
  self->Unref();
1763
1907
  }
1764
1908
 
1765
- static void OnTimer(void* arg, grpc_error_handle error) {
1766
- auto* self = static_cast<GracefulGoaway*>(arg);
1767
- if (!error.ok()) {
1768
- self->Unref();
1769
- return;
1770
- }
1771
- self->t_->combiner->Run(
1772
- GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
1773
- absl::OkStatus());
1774
- }
1775
-
1776
- static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
1777
- auto* self = static_cast<GracefulGoaway*>(arg);
1778
- self->MaybeSendFinalGoawayLocked();
1779
- self->Unref();
1780
- }
1781
-
1782
- grpc_chttp2_transport* t_;
1909
+ const grpc_core::RefCountedPtr<grpc_chttp2_transport> t_;
1783
1910
  grpc_closure on_ping_ack_;
1784
- grpc_timer timer_;
1785
- grpc_closure on_timer_;
1786
1911
  };
1787
1912
 
1788
1913
  } // namespace
@@ -1804,8 +1929,9 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1804
1929
  } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1805
1930
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1806
1931
  // We want to log this irrespective of whether http tracing is enabled
1807
- 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",
1808
1933
  std::string(t->peer_string.as_string_view()).c_str(),
1934
+ t->is_client ? "CLIENT" : "SERVER", t->last_new_stream_id,
1809
1935
  grpc_core::StatusToString(error).c_str());
1810
1936
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1811
1937
  grpc_chttp2_goaway_append(
@@ -1817,44 +1943,40 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1817
1943
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1818
1944
  }
1819
1945
 
1820
- void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1821
- if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes &&
1822
- t->ping_policy.max_ping_strikes != 0) {
1823
- send_goaway(t,
1824
- grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
1825
- grpc_core::StatusIntProperty::kHttp2Error,
1826
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
1827
- /*immediate_disconnect_hint=*/true);
1828
- // The transport will be closed after the write is done
1829
- close_transport_locked(
1830
- t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
1831
- grpc_core::StatusIntProperty::kRpcStatus,
1832
- GRPC_STATUS_UNAVAILABLE));
1833
- }
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));
1834
1957
  }
1835
1958
 
1836
1959
  void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1837
1960
  if (!t->is_client) {
1838
- t->ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
1839
- t->ping_recv_state.ping_strikes = 0;
1961
+ t->ping_abuse_policy.ResetPingStrikes();
1840
1962
  }
1841
- t->ping_state.pings_before_data_required =
1842
- t->ping_policy.max_pings_without_data;
1963
+ t->ping_rate_policy.ResetPingsBeforeDataRequired();
1843
1964
  }
1844
1965
 
1845
1966
  static void perform_transport_op_locked(void* stream_op,
1846
1967
  grpc_error_handle /*error_ignored*/) {
1847
1968
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
1848
- grpc_chttp2_transport* t =
1849
- 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));
1850
1971
 
1851
1972
  if (!op->goaway_error.ok()) {
1852
- send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
1973
+ send_goaway(t.get(), op->goaway_error, /*immediate_disconnect_hint=*/false);
1853
1974
  }
1854
1975
 
1855
1976
  if (op->set_accept_stream) {
1856
1977
  t->accept_stream_cb = op->set_accept_stream_fn;
1857
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;
1858
1980
  }
1859
1981
 
1860
1982
  if (op->bind_pollset) {
@@ -1866,8 +1988,9 @@ static void perform_transport_op_locked(void* stream_op,
1866
1988
  }
1867
1989
 
1868
1990
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
1869
- send_ping_locked(t, op->send_ping.on_initiate, op->send_ping.on_ack);
1870
- 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);
1871
1994
  }
1872
1995
 
1873
1996
  if (op->start_connectivity_watch != nullptr) {
@@ -1879,27 +2002,24 @@ static void perform_transport_op_locked(void* stream_op,
1879
2002
  }
1880
2003
 
1881
2004
  if (!op->disconnect_with_error.ok()) {
1882
- send_goaway(t, op->disconnect_with_error,
2005
+ send_goaway(t.get(), op->disconnect_with_error,
1883
2006
  /*immediate_disconnect_hint=*/true);
1884
- close_transport_locked(t, op->disconnect_with_error);
2007
+ close_transport_locked(t.get(), op->disconnect_with_error);
1885
2008
  }
1886
2009
 
1887
2010
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1888
-
1889
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op");
1890
2011
  }
1891
2012
 
1892
- static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1893
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2013
+ void grpc_chttp2_transport::PerformOp(grpc_transport_op* op) {
1894
2014
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1895
- gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", t,
2015
+ gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", this,
1896
2016
  grpc_transport_op_string(op).c_str());
1897
2017
  }
1898
- op->handler_private.extra_arg = gt;
1899
- GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
1900
- t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1901
- perform_transport_op_locked, op, nullptr),
1902
- 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());
1903
2023
  }
1904
2024
 
1905
2025
  //
@@ -1925,6 +2045,10 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1925
2045
  *s->trailing_metadata_available = true;
1926
2046
  s->trailing_metadata_available = nullptr;
1927
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
+ }
1928
2052
  null_then_sched_closure(&s->recv_initial_metadata_ready);
1929
2053
  }
1930
2054
  }
@@ -2035,17 +2159,16 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
2035
2159
  }
2036
2160
  }
2037
2161
 
2038
- static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2039
- grpc_error_handle error) {
2040
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2041
- 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();
2042
2165
  GPR_DEBUG_ASSERT(s);
2043
2166
  if (t->incoming_stream == s) {
2044
2167
  t->incoming_stream = nullptr;
2045
2168
  grpc_chttp2_parsing_become_skip_parser(t);
2046
2169
  }
2047
2170
 
2048
- if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2171
+ if (t->stream_map.empty()) {
2049
2172
  post_benign_reclaimer(t);
2050
2173
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
2051
2174
  close_transport_locked(
@@ -2060,29 +2183,74 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
2060
2183
  grpc_chttp2_list_remove_stalled_by_transport(t, s);
2061
2184
 
2062
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());
2063
2189
  }
2064
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
+ });
2219
+ }
2220
+
2221
+ } // namespace
2222
+ } // namespace grpc_core
2223
+
2065
2224
  void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2066
- grpc_error_handle due_to_error) {
2225
+ grpc_error_handle due_to_error, bool tarpit) {
2067
2226
  if (!t->is_client && !s->sent_trailing_metadata &&
2068
- grpc_error_has_clear_grpc_status(due_to_error)) {
2069
- 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);
2070
2230
  return;
2071
2231
  }
2072
2232
 
2233
+ if (!due_to_error.ok() && !s->seen_error) {
2234
+ s->seen_error = true;
2235
+ }
2073
2236
  if (!s->read_closed || !s->write_closed) {
2074
2237
  if (s->id != 0) {
2075
2238
  grpc_http2_error_code http_error;
2076
2239
  grpc_error_get_status(due_to_error, s->deadline, nullptr, nullptr,
2077
2240
  &http_error, nullptr);
2078
- grpc_chttp2_add_rst_stream_to_next_write(
2079
- t, s->id, static_cast<uint32_t>(http_error), &s->stats.outgoing);
2080
- 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;
2081
2252
  }
2082
2253
  }
2083
- if (!due_to_error.ok() && !s->seen_error) {
2084
- s->seen_error = true;
2085
- }
2086
2254
  grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
2087
2255
  }
2088
2256
 
@@ -2175,16 +2343,17 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2175
2343
  flush_write_list(t, s, &s->on_flow_controlled_cbs, error);
2176
2344
  }
2177
2345
 
2178
- void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2179
- grpc_chttp2_stream* s, int close_reads,
2180
- 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;
2181
2350
  if (grpc_http_trace.enabled()) {
2182
2351
  gpr_log(
2183
2352
  GPR_DEBUG, "MARK_STREAM_CLOSED: t=%p s=%p(id=%d) %s [%s]", t, s, s->id,
2184
2353
  (close_reads && close_writes)
2185
2354
  ? "read+write"
2186
2355
  : (close_reads ? "read" : (close_writes ? "write" : "nothing??")),
2187
- error.ToString().c_str());
2356
+ grpc_core::StatusToString(error).c_str());
2188
2357
  }
2189
2358
  if (s->read_closed && s->write_closed) {
2190
2359
  // already closed, but we should still fake the status if needed.
@@ -2193,7 +2362,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2193
2362
  grpc_chttp2_fake_status(t, s, overall_error);
2194
2363
  }
2195
2364
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2196
- return;
2365
+ return rsh;
2197
2366
  }
2198
2367
  bool closed_read = false;
2199
2368
  bool became_closed = false;
@@ -2211,7 +2380,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2211
2380
  became_closed = true;
2212
2381
  grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2213
2382
  if (s->id != 0) {
2214
- remove_stream(t, s->id, overall_error);
2383
+ rsh = remove_stream(t, s->id, overall_error);
2215
2384
  } else {
2216
2385
  // Purge streams waiting on concurrency still waiting for id assignment
2217
2386
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
@@ -2235,17 +2404,11 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2235
2404
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2236
2405
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2");
2237
2406
  }
2407
+ return rsh;
2238
2408
  }
2239
2409
 
2240
2410
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2241
- grpc_error_handle error) {
2242
- grpc_slice hdr;
2243
- grpc_slice status_hdr;
2244
- grpc_slice http_status_hdr;
2245
- grpc_slice content_type_hdr;
2246
- grpc_slice message_pfx;
2247
- uint8_t* p;
2248
- uint32_t len = 0;
2411
+ grpc_error_handle error, bool tarpit) {
2249
2412
  grpc_status_code grpc_status;
2250
2413
  std::string message;
2251
2414
  grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
@@ -2253,158 +2416,167 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2253
2416
 
2254
2417
  GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
2255
2418
 
2256
- // Hand roll a header block.
2257
- // This is unnecessarily ugly - at some point we should find a more
2258
- // elegant solution.
2259
- // It's complicated by the fact that our send machinery would be dead by
2260
- // the time we got around to sending this, so instead we ignore HPACK
2261
- // compression and just write the uncompressed bytes onto the wire.
2262
- if (!s->sent_initial_metadata) {
2263
- http_status_hdr = GRPC_SLICE_MALLOC(13);
2264
- p = GRPC_SLICE_START_PTR(http_status_hdr);
2265
- *p++ = 0x00;
2266
- *p++ = 7;
2267
- *p++ = ':';
2268
- *p++ = 's';
2269
- *p++ = 't';
2270
- *p++ = 'a';
2271
- *p++ = 't';
2272
- *p++ = 'u';
2273
- *p++ = 's';
2274
- *p++ = 3;
2275
- *p++ = '2';
2276
- *p++ = '0';
2277
- *p++ = '0';
2278
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(http_status_hdr));
2279
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(http_status_hdr);
2280
-
2281
- content_type_hdr = GRPC_SLICE_MALLOC(31);
2282
- p = GRPC_SLICE_START_PTR(content_type_hdr);
2283
- *p++ = 0x00;
2284
- *p++ = 12;
2285
- *p++ = 'c';
2286
- *p++ = 'o';
2287
- *p++ = 'n';
2288
- *p++ = 't';
2289
- *p++ = 'e';
2290
- *p++ = 'n';
2291
- *p++ = 't';
2292
- *p++ = '-';
2293
- *p++ = 't';
2294
- *p++ = 'y';
2295
- *p++ = 'p';
2296
- *p++ = 'e';
2297
- *p++ = 16;
2298
- *p++ = 'a';
2299
- *p++ = 'p';
2300
- *p++ = 'p';
2301
- *p++ = 'l';
2302
- *p++ = 'i';
2303
- *p++ = 'c';
2304
- *p++ = 'a';
2305
- *p++ = 't';
2306
- *p++ = 'i';
2307
- *p++ = 'o';
2308
- *p++ = 'n';
2309
- *p++ = '/';
2310
- *p++ = 'g';
2311
- *p++ = 'r';
2312
- *p++ = 'p';
2313
- *p++ = 'c';
2314
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(content_type_hdr));
2315
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(content_type_hdr);
2316
- }
2317
-
2318
- status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10));
2319
- p = GRPC_SLICE_START_PTR(status_hdr);
2320
- *p++ = 0x00; // literal header, not indexed
2321
- *p++ = 11; // len(grpc-status)
2322
- *p++ = 'g';
2323
- *p++ = 'r';
2324
- *p++ = 'p';
2325
- *p++ = 'c';
2326
- *p++ = '-';
2327
- *p++ = 's';
2328
- *p++ = 't';
2329
- *p++ = 'a';
2330
- *p++ = 't';
2331
- *p++ = 'u';
2332
- *p++ = 's';
2333
- if (grpc_status < 10) {
2334
- *p++ = 1;
2335
- *p++ = static_cast<uint8_t>('0' + grpc_status);
2336
- } else {
2337
- *p++ = 2;
2338
- *p++ = static_cast<uint8_t>('0' + (grpc_status / 10));
2339
- *p++ = static_cast<uint8_t>('0' + (grpc_status % 10));
2340
- }
2341
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
2342
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
2343
-
2344
- size_t msg_len = message.length();
2345
- GPR_ASSERT(msg_len <= UINT32_MAX);
2346
- grpc_core::VarintWriter<1> msg_len_writer(static_cast<uint32_t>(msg_len));
2347
- message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2348
- p = GRPC_SLICE_START_PTR(message_pfx);
2349
- *p++ = 0x00; // literal header, not indexed
2350
- *p++ = 12; // len(grpc-message)
2351
- *p++ = 'g';
2352
- *p++ = 'r';
2353
- *p++ = 'p';
2354
- *p++ = 'c';
2355
- *p++ = '-';
2356
- *p++ = 'm';
2357
- *p++ = 'e';
2358
- *p++ = 's';
2359
- *p++ = 's';
2360
- *p++ = 'a';
2361
- *p++ = 'g';
2362
- *p++ = 'e';
2363
- msg_len_writer.Write(0, p);
2364
- p += msg_len_writer.length();
2365
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
2366
- len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
2367
- len += static_cast<uint32_t>(msg_len);
2368
-
2369
- hdr = GRPC_SLICE_MALLOC(9);
2370
- p = GRPC_SLICE_START_PTR(hdr);
2371
- *p++ = static_cast<uint8_t>(len >> 16);
2372
- *p++ = static_cast<uint8_t>(len >> 8);
2373
- *p++ = static_cast<uint8_t>(len);
2374
- *p++ = GRPC_CHTTP2_FRAME_HEADER;
2375
- *p++ = GRPC_CHTTP2_DATA_FLAG_END_STREAM | GRPC_CHTTP2_DATA_FLAG_END_HEADERS;
2376
- *p++ = static_cast<uint8_t>(s->id >> 24);
2377
- *p++ = static_cast<uint8_t>(s->id >> 16);
2378
- *p++ = static_cast<uint8_t>(s->id >> 8);
2379
- *p++ = static_cast<uint8_t>(s->id);
2380
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(hdr));
2381
-
2382
- grpc_slice_buffer_add(&t->qbuf, hdr);
2383
- if (!s->sent_initial_metadata) {
2384
- grpc_slice_buffer_add(&t->qbuf, http_status_hdr);
2385
- grpc_slice_buffer_add(&t->qbuf, content_type_hdr);
2386
- }
2387
- grpc_slice_buffer_add(&t->qbuf, status_hdr);
2388
- grpc_slice_buffer_add(&t->qbuf, message_pfx);
2389
- grpc_slice_buffer_add(&t->qbuf,
2390
- grpc_slice_from_cpp_string(std::move(message)));
2391
- grpc_chttp2_reset_ping_clock(t);
2392
- grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2393
- &s->stats.outgoing);
2394
-
2395
- grpc_chttp2_mark_stream_closed(t, s, 1, 1, error);
2396
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
2397
- }
2398
-
2399
- struct cancel_stream_cb_args {
2400
- grpc_error_handle error;
2401
- grpc_chttp2_transport* t;
2402
- };
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
+ }
2403
2497
 
2404
- static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2405
- cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
2406
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
2407
- 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
+ });
2408
2580
  }
2409
2581
 
2410
2582
  static void end_all_the_calls(grpc_chttp2_transport* t,
@@ -2417,9 +2589,14 @@ static void end_all_the_calls(grpc_chttp2_transport* t,
2417
2589
  error = grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
2418
2590
  GRPC_STATUS_UNAVAILABLE);
2419
2591
  }
2420
- cancel_unstarted_streams(t, error);
2421
- cancel_stream_cb_args args = {error, t};
2422
- 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
+ }
2423
2600
  }
2424
2601
 
2425
2602
  //
@@ -2455,21 +2632,19 @@ void grpc_chttp2_act_on_flowctl_action(
2455
2632
  GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL, []() {});
2456
2633
  WithUrgency(t, action.send_initial_window_update(),
2457
2634
  GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2458
- queue_setting_update(t,
2459
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
2460
- action.initial_window_size());
2461
- });
2462
- WithUrgency(t, action.send_max_frame_size_update(),
2463
- GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2464
- queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
2465
- action.max_frame_size());
2635
+ t->settings.mutable_local().SetInitialWindowSize(
2636
+ action.initial_window_size());
2466
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
+ });
2467
2643
  if (t->enable_preferred_rx_crypto_frame_advertisement) {
2468
2644
  WithUrgency(
2469
2645
  t, action.preferred_rx_crypto_frame_size_update(),
2470
2646
  GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
2471
- queue_setting_update(
2472
- t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
2647
+ t->settings.mutable_local().SetPreferredReceiveCryptoMessageSize(
2473
2648
  action.preferred_rx_crypto_frame_size());
2474
2649
  });
2475
2650
  }
@@ -2503,31 +2678,45 @@ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2503
2678
  return error;
2504
2679
  }
2505
2680
 
2506
- static void read_action(void* tp, grpc_error_handle error) {
2507
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2508
- t->combiner->Run(
2509
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2510
- 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);
2511
2687
  }
2512
2688
 
2513
- static void read_action_locked(void* tp, grpc_error_handle error) {
2514
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2515
-
2516
- grpc_error_handle err = error;
2517
- if (!err.ok()) {
2518
- err = grpc_error_set_int(
2519
- GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2520
- grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2521
- }
2522
- 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) {
2523
2692
  if (t->closed_with_error.ok()) {
2524
- size_t i = 0;
2525
2693
  grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
2526
- for (; i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
2527
- 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
+ }
2528
2717
  }
2529
2718
  if (errors[1] != absl::OkStatus()) {
2530
- errors[2] = try_http_parsing(t);
2719
+ errors[2] = try_http_parsing(t.get());
2531
2720
  error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
2532
2721
  GPR_ARRAY_SIZE(errors));
2533
2722
  }
@@ -2535,10 +2724,11 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2535
2724
  if (t->initial_window_update != 0) {
2536
2725
  if (t->initial_window_update > 0) {
2537
2726
  grpc_chttp2_stream* s;
2538
- while (grpc_chttp2_list_pop_stalled_by_stream(t, &s)) {
2539
- 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);
2540
2729
  grpc_chttp2_initiate_write(
2541
- t, GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING);
2730
+ t.get(),
2731
+ GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING);
2542
2732
  }
2543
2733
  }
2544
2734
  t->initial_window_update = 0;
@@ -2557,13 +2747,12 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2557
2747
  error = grpc_error_add_child(error, t->goaway_error);
2558
2748
  }
2559
2749
 
2560
- close_transport_locked(t, error);
2561
- t->endpoint_reading = 0;
2750
+ close_transport_locked(t.get(), error);
2562
2751
  } else if (t->closed_with_error.ok()) {
2563
2752
  keep_reading = true;
2564
2753
  // Since we have read a byte, reset the keepalive timer
2565
2754
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2566
- maybe_reset_keepalive_ping_timer_locked(t);
2755
+ maybe_reset_keepalive_ping_timer_locked(t.get());
2567
2756
  }
2568
2757
  }
2569
2758
  grpc_slice_buffer_reset_and_unref(&t->read_buffer);
@@ -2575,45 +2764,73 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2575
2764
  gpr_log(GPR_INFO,
2576
2765
  "transport %p : Pausing reading due to too "
2577
2766
  "many unwritten SETTINGS ACK and RST_STREAM frames",
2578
- t));
2767
+ t.get()));
2579
2768
  } else {
2580
- continue_read_action_locked(t);
2769
+ continue_read_action_locked(std::move(t));
2581
2770
  }
2582
- } else {
2583
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
2584
2771
  }
2585
2772
  }
2586
2773
 
2587
- 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) {
2588
2801
  const bool urgent = !t->goaway_error.ok();
2589
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
2590
- grpc_schedule_on_exec_ctx);
2591
- grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
2592
- 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));
2593
2807
  }
2594
2808
 
2595
2809
  // t is reffed prior to calling the first time, and once the callback chain
2596
2810
  // that kicks off finishes, it's unreffed
2597
- void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
2598
- t->flow_control.bdp_estimator()->SchedulePing();
2599
- send_ping_locked(
2600
- t,
2601
- GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked, start_bdp_ping, t,
2602
- grpc_schedule_on_exec_ctx),
2603
- GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
2604
- grpc_schedule_on_exec_ctx));
2605
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
2606
- }
2607
-
2608
- static void start_bdp_ping(void* tp, grpc_error_handle error) {
2609
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2610
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2611
- start_bdp_ping_locked, t, nullptr),
2612
- error);
2613
- }
2614
-
2615
- static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2616
- 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) {
2617
2834
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2618
2835
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
2619
2836
  std::string(t->peer_string.as_string_view()).c_str(),
@@ -2624,157 +2841,143 @@ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2624
2841
  }
2625
2842
  // Reset the keepalive ping timer
2626
2843
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2627
- maybe_reset_keepalive_ping_timer_locked(t);
2844
+ maybe_reset_keepalive_ping_timer_locked(t.get());
2628
2845
  }
2629
2846
  t->flow_control.bdp_estimator()->StartPing();
2630
2847
  t->bdp_ping_started = true;
2631
2848
  }
2632
2849
 
2633
- static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2634
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2635
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2636
- finish_bdp_ping_locked, t, nullptr),
2637
- 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);
2638
2856
  }
2639
2857
 
2640
- static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2641
- 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) {
2642
2861
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2643
2862
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
2644
2863
  std::string(t->peer_string.as_string_view()).c_str(),
2645
2864
  grpc_core::StatusToString(error).c_str());
2646
2865
  }
2647
2866
  if (!error.ok() || !t->closed_with_error.ok()) {
2648
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2649
2867
  return;
2650
2868
  }
2651
2869
  if (!t->bdp_ping_started) {
2652
2870
  // start_bdp_ping_locked has not been run yet. Schedule
2653
2871
  // finish_bdp_ping_locked to be run later.
2654
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2655
- finish_bdp_ping_locked, t, nullptr),
2656
- error);
2872
+ finish_bdp_ping(std::move(t), std::move(error));
2657
2873
  return;
2658
2874
  }
2659
2875
  t->bdp_ping_started = false;
2660
2876
  grpc_core::Timestamp next_ping =
2661
2877
  t->flow_control.bdp_estimator()->CompletePing();
2662
- grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t,
2878
+ grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t.get(),
2663
2879
  nullptr);
2664
- GPR_ASSERT(!t->next_bdp_ping_timer_handle.has_value());
2880
+ GPR_ASSERT(t->next_bdp_ping_timer_handle == TaskHandle::kInvalid);
2665
2881
  t->next_bdp_ping_timer_handle =
2666
2882
  t->event_engine->RunAfter(next_ping - grpc_core::Timestamp::Now(), [t] {
2667
2883
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2668
2884
  grpc_core::ExecCtx exec_ctx;
2669
- next_bdp_ping_timer_expired(t);
2885
+ next_bdp_ping_timer_expired(t.get());
2670
2886
  });
2671
2887
  }
2672
2888
 
2673
2889
  static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t) {
2674
2890
  t->combiner->Run(
2675
- GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
2676
- 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),
2677
2893
  absl::OkStatus());
2678
2894
  }
2679
2895
 
2680
2896
  static void next_bdp_ping_timer_expired_locked(
2681
- void* tp, GRPC_UNUSED grpc_error_handle error) {
2897
+ grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
2898
+ GRPC_UNUSED grpc_error_handle error) {
2682
2899
  GPR_DEBUG_ASSERT(error.ok());
2683
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2684
- GPR_ASSERT(t->next_bdp_ping_timer_handle.has_value());
2685
- 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;
2686
2902
  if (t->flow_control.bdp_estimator()->accumulator() == 0) {
2687
2903
  // Block the bdp ping till we receive more data.
2688
2904
  t->bdp_ping_blocked = true;
2689
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2690
2905
  } else {
2691
- schedule_bdp_ping_locked(t);
2906
+ schedule_bdp_ping_locked(std::move(t));
2692
2907
  }
2693
2908
  }
2694
2909
 
2695
2910
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
2696
2911
  bool is_client) {
2697
- size_t i;
2698
- if (args) {
2699
- for (i = 0; i < args->num_args; i++) {
2700
- if (0 == strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
2701
- const int value = grpc_channel_arg_get_integer(
2702
- &args->args[i], {is_client ? g_default_client_keepalive_time_ms
2703
- : g_default_server_keepalive_time_ms,
2704
- 1, INT_MAX});
2705
- if (is_client) {
2706
- g_default_client_keepalive_time_ms = value;
2707
- } else {
2708
- g_default_server_keepalive_time_ms = value;
2709
- }
2710
- } else if (0 ==
2711
- strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
2712
- const int value = grpc_channel_arg_get_integer(
2713
- &args->args[i], {is_client ? g_default_client_keepalive_timeout_ms
2714
- : g_default_server_keepalive_timeout_ms,
2715
- 0, INT_MAX});
2716
- if (is_client) {
2717
- g_default_client_keepalive_timeout_ms = value;
2718
- } else {
2719
- g_default_server_keepalive_timeout_ms = value;
2720
- }
2721
- } else if (0 == strcmp(args->args[i].key,
2722
- GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
2723
- const bool value = static_cast<uint32_t>(grpc_channel_arg_get_integer(
2724
- &args->args[i],
2725
- {is_client ? g_default_client_keepalive_permit_without_calls
2726
- : g_default_server_keepalive_timeout_ms,
2727
- 0, 1}));
2728
- if (is_client) {
2729
- g_default_client_keepalive_permit_without_calls = value;
2730
- } else {
2731
- g_default_server_keepalive_permit_without_calls = value;
2732
- }
2733
- } else if (0 ==
2734
- strcmp(args->args[i].key, GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
2735
- g_default_max_ping_strikes = grpc_channel_arg_get_integer(
2736
- &args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
2737
- } else if (0 == strcmp(args->args[i].key,
2738
- GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
2739
- g_default_max_pings_without_data = grpc_channel_arg_get_integer(
2740
- &args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
2741
- } else if (0 ==
2742
- strcmp(
2743
- args->args[i].key,
2744
- GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
2745
- g_default_min_recv_ping_interval_without_data_ms =
2746
- grpc_channel_arg_get_integer(
2747
- &args->args[i],
2748
- {g_default_min_recv_ping_interval_without_data_ms, 0, INT_MAX});
2749
- }
2750
- }
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;
2751
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);
2752
2955
  }
2753
2956
 
2754
- static void init_keepalive_ping(grpc_chttp2_transport* t) {
2755
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2756
- init_keepalive_ping_locked, t, nullptr),
2757
- 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());
2758
2963
  }
2759
2964
 
2760
- static void init_keepalive_ping_locked(void* arg,
2761
- 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) {
2762
2968
  GPR_DEBUG_ASSERT(error.ok());
2763
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2764
2969
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2765
- GPR_ASSERT(t->keepalive_ping_timer_handle.has_value());
2766
- t->keepalive_ping_timer_handle.reset();
2970
+ GPR_ASSERT(t->keepalive_ping_timer_handle != TaskHandle::kInvalid);
2971
+ t->keepalive_ping_timer_handle = TaskHandle::kInvalid;
2767
2972
  if (t->destroying || !t->closed_with_error.ok()) {
2768
2973
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2769
2974
  } else {
2770
- if (t->keepalive_permit_without_calls ||
2771
- grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
2975
+ if (t->keepalive_permit_without_calls || !t->stream_map.empty()) {
2772
2976
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
2773
- GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end");
2774
2977
  send_keepalive_ping_locked(t);
2775
- 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);
2776
2980
  } else {
2777
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
2778
2981
  t->keepalive_ping_timer_handle =
2779
2982
  t->event_engine->RunAfter(t->keepalive_time, [t] {
2780
2983
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -2783,48 +2986,21 @@ static void init_keepalive_ping_locked(void* arg,
2783
2986
  });
2784
2987
  }
2785
2988
  }
2786
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
2787
- }
2788
-
2789
- static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2790
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2791
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2792
- start_keepalive_ping_locked, t, nullptr),
2793
- error);
2794
- }
2795
-
2796
- static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2797
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2798
- if (!error.ok()) {
2799
- return;
2800
- }
2801
- if (t->channelz_socket != nullptr) {
2802
- t->channelz_socket->RecordKeepaliveSent();
2803
- }
2804
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2805
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2806
- gpr_log(GPR_INFO, "%s: Start keepalive ping",
2807
- std::string(t->peer_string.as_string_view()).c_str());
2808
- }
2809
- GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2810
- t->keepalive_watchdog_timer_handle =
2811
- t->event_engine->RunAfter(t->keepalive_timeout, [t] {
2812
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2813
- grpc_core::ExecCtx exec_ctx;
2814
- keepalive_watchdog_fired(t);
2815
- });
2816
- t->keepalive_ping_started = true;
2817
2989
  }
2818
2990
 
2819
- static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2820
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2821
- t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2822
- finish_keepalive_ping_locked, t, nullptr),
2823
- 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);
2824
2999
  }
2825
3000
 
2826
- static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2827
- 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) {
2828
3004
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2829
3005
  if (error.ok()) {
2830
3006
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
@@ -2832,25 +3008,8 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2832
3008
  gpr_log(GPR_INFO, "%s: Finish keepalive ping",
2833
3009
  std::string(t->peer_string.as_string_view()).c_str());
2834
3010
  }
2835
- if (!t->keepalive_ping_started) {
2836
- // start_keepalive_ping_locked has not run yet. Reschedule
2837
- // finish_keepalive_ping_locked for it to be run later.
2838
- t->combiner->Run(
2839
- GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2840
- finish_keepalive_ping_locked, t, nullptr),
2841
- error);
2842
- return;
2843
- }
2844
- t->keepalive_ping_started = false;
2845
3011
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
2846
- if (t->keepalive_watchdog_timer_handle.has_value()) {
2847
- if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
2848
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2849
- t->keepalive_watchdog_timer_handle.reset();
2850
- }
2851
- }
2852
- GPR_ASSERT(!t->keepalive_ping_timer_handle.has_value());
2853
- GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
3012
+ GPR_ASSERT(t->keepalive_ping_timer_handle == TaskHandle::kInvalid);
2854
3013
  t->keepalive_ping_timer_handle =
2855
3014
  t->event_engine->RunAfter(t->keepalive_time, [t] {
2856
3015
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -2859,57 +3018,24 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2859
3018
  });
2860
3019
  }
2861
3020
  }
2862
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
2863
- }
2864
-
2865
- static void keepalive_watchdog_fired(grpc_chttp2_transport* t) {
2866
- t->combiner->Run(
2867
- GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
2868
- keepalive_watchdog_fired_locked, t, nullptr),
2869
- absl::OkStatus());
2870
- }
2871
-
2872
- static void keepalive_watchdog_fired_locked(
2873
- void* arg, GRPC_UNUSED grpc_error_handle error) {
2874
- GPR_DEBUG_ASSERT(error.ok());
2875
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2876
- GPR_ASSERT(t->keepalive_watchdog_timer_handle.has_value());
2877
- t->keepalive_watchdog_timer_handle.reset();
2878
- if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2879
- gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2880
- std::string(t->peer_string.as_string_view()).c_str());
2881
- t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2882
- close_transport_locked(
2883
- t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
2884
- grpc_core::StatusIntProperty::kRpcStatus,
2885
- GRPC_STATUS_UNAVAILABLE));
2886
- } else {
2887
- // If keepalive_state is not PINGING, we consider it as an error. Maybe the
2888
- // cancellation failed in finish_keepalive_ping_locked. Users have seen
2889
- // other states: https://github.com/grpc/grpc/issues/32085.
2890
- gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2891
- t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
2892
- }
2893
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
2894
3021
  }
2895
3022
 
2896
3023
  static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
2897
- if (t->keepalive_ping_timer_handle.has_value()) {
2898
- if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
2899
- // Cancel succeeds, resets the keepalive ping timer. Note that we don't
2900
- // need to Ref or Unref here since we still hold the Ref.
2901
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2902
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2903
- gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2904
- std::string(t->peer_string.as_string_view()).c_str());
2905
- }
2906
- t->keepalive_ping_timer_handle =
2907
- t->event_engine->RunAfter(t->keepalive_time, [t] {
2908
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
2909
- grpc_core::ExecCtx exec_ctx;
2910
- init_keepalive_ping(t);
2911
- });
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());
2912
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
+ });
2913
3039
  }
2914
3040
  }
2915
3041
 
@@ -2921,8 +3047,9 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
2921
3047
  grpc_connectivity_state state,
2922
3048
  const absl::Status& status,
2923
3049
  const char* reason) {
2924
- GRPC_CHTTP2_IF_TRACING(
2925
- 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));
2926
3053
  t->state_tracker.SetState(state, status, reason);
2927
3054
  }
2928
3055
 
@@ -2930,16 +3057,14 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
2930
3057
  // POLLSET STUFF
2931
3058
  //
2932
3059
 
2933
- static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
2934
- grpc_pollset* pollset) {
2935
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2936
- 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);
2937
3063
  }
2938
3064
 
2939
- static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2940
- grpc_pollset_set* pollset_set) {
2941
- grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
2942
- 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);
2943
3068
  }
2944
3069
 
2945
3070
  //
@@ -2949,18 +3074,17 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
2949
3074
  static void post_benign_reclaimer(grpc_chttp2_transport* t) {
2950
3075
  if (!t->benign_reclaimer_registered) {
2951
3076
  t->benign_reclaimer_registered = true;
2952
- GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
2953
3077
  t->memory_owner.PostReclaimer(
2954
3078
  grpc_core::ReclamationPass::kBenign,
2955
- [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3079
+ [t = t->Ref()](
3080
+ absl::optional<grpc_core::ReclamationSweep> sweep) mutable {
2956
3081
  if (sweep.has_value()) {
2957
- GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
2958
- benign_reclaimer_locked, t,
2959
- grpc_schedule_on_exec_ctx);
2960
- t->active_reclamation = std::move(*sweep);
2961
- t->combiner->Run(&t->benign_reclaimer_locked, absl::OkStatus());
2962
- } else {
2963
- 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());
2964
3088
  }
2965
3089
  });
2966
3090
  }
@@ -2969,34 +3093,33 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
2969
3093
  static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
2970
3094
  if (!t->destructive_reclaimer_registered) {
2971
3095
  t->destructive_reclaimer_registered = true;
2972
- GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
2973
3096
  t->memory_owner.PostReclaimer(
2974
3097
  grpc_core::ReclamationPass::kDestructive,
2975
- [t](absl::optional<grpc_core::ReclamationSweep> sweep) {
3098
+ [t = t->Ref()](
3099
+ absl::optional<grpc_core::ReclamationSweep> sweep) mutable {
2976
3100
  if (sweep.has_value()) {
2977
- GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
2978
- destructive_reclaimer_locked, t,
2979
- grpc_schedule_on_exec_ctx);
2980
- t->active_reclamation = std::move(*sweep);
2981
- t->combiner->Run(&t->destructive_reclaimer_locked,
2982
- absl::OkStatus());
2983
- } else {
2984
- 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());
2985
3107
  }
2986
3108
  });
2987
3109
  }
2988
3110
  }
2989
3111
 
2990
- static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2991
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2992
- 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()) {
2993
3116
  // Channel with no active streams: send a goaway to try and make it
2994
3117
  // disconnect cleanly
2995
3118
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2996
3119
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
2997
3120
  std::string(t->peer_string.as_string_view()).c_str());
2998
3121
  }
2999
- send_goaway(t,
3122
+ send_goaway(t.get(),
3000
3123
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3001
3124
  grpc_core::StatusIntProperty::kHttp2Error,
3002
3125
  GRPC_HTTP2_ENHANCE_YOUR_CALM),
@@ -3006,43 +3129,42 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
3006
3129
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
3007
3130
  " streams",
3008
3131
  std::string(t->peer_string.as_string_view()).c_str(),
3009
- grpc_chttp2_stream_map_size(&t->stream_map));
3132
+ t->stream_map.size());
3010
3133
  }
3011
3134
  t->benign_reclaimer_registered = false;
3012
3135
  if (error != absl::CancelledError()) {
3013
3136
  t->active_reclamation.Finish();
3014
3137
  }
3015
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
3016
3138
  }
3017
3139
 
3018
- static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
3019
- grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
3020
- 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) {
3021
3143
  t->destructive_reclaimer_registered = false;
3022
- if (error.ok() && n > 0) {
3023
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
3024
- 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;
3025
3147
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
3026
3148
  gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
3027
3149
  std::string(t->peer_string.as_string_view()).c_str(), s->id);
3028
3150
  }
3029
3151
  grpc_chttp2_cancel_stream(
3030
- t, s,
3152
+ t.get(), s,
3031
3153
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3032
3154
  grpc_core::StatusIntProperty::kHttp2Error,
3033
- GRPC_HTTP2_ENHANCE_YOUR_CALM));
3034
- if (n > 1) {
3155
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
3156
+ false);
3157
+ if (!t->stream_map.empty()) {
3035
3158
  // Since we cancel one stream per destructive reclamation, if
3036
3159
  // there are more streams left, we can immediately post a new
3037
3160
  // reclaimer in case the resource quota needs to free more
3038
3161
  // memory
3039
- post_destructive_reclaimer(t);
3162
+ post_destructive_reclaimer(t.get());
3040
3163
  }
3041
3164
  }
3042
3165
  if (error != absl::CancelledError()) {
3043
3166
  t->active_reclamation.Finish();
3044
3167
  }
3045
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
3046
3168
  }
3047
3169
 
3048
3170
  //
@@ -3100,53 +3222,46 @@ const char* grpc_chttp2_initiate_write_reason_string(
3100
3222
  GPR_UNREACHABLE_CODE(return "unknown");
3101
3223
  }
3102
3224
 
3103
- static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
3104
- 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);
3105
3229
  }
3106
3230
 
3107
- static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3108
- false,
3109
- "chttp2",
3110
- init_stream,
3111
- nullptr,
3112
- set_pollset,
3113
- set_pollset_set,
3114
- perform_stream_op,
3115
- perform_transport_op,
3116
- destroy_stream,
3117
- destroy_transport,
3118
- chttp2_get_endpoint};
3231
+ bool grpc_chttp2_transport::
3232
+ HackyDisableStreamOpBatchCoalescingInConnectedChannel() const {
3233
+ return false;
3234
+ }
3119
3235
 
3120
- static const grpc_transport_vtable* get_vtable(void) { return &vtable; }
3236
+ absl::string_view grpc_chttp2_transport::GetTransportName() const {
3237
+ return "chttp2";
3238
+ }
3121
3239
 
3122
3240
  grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode>
3123
- grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
3241
+ grpc_chttp2_transport_get_socket_node(grpc_core::Transport* transport) {
3124
3242
  grpc_chttp2_transport* t =
3125
3243
  reinterpret_cast<grpc_chttp2_transport*>(transport);
3126
3244
  return t->channelz_socket;
3127
3245
  }
3128
3246
 
3129
- grpc_transport* grpc_create_chttp2_transport(
3247
+ grpc_core::Transport* grpc_create_chttp2_transport(
3130
3248
  const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
3131
3249
  bool is_client) {
3132
- auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
3133
- return &t->base;
3250
+ return new grpc_chttp2_transport(channel_args, ep, is_client);
3134
3251
  }
3135
3252
 
3136
3253
  void grpc_chttp2_transport_start_reading(
3137
- grpc_transport* transport, grpc_slice_buffer* read_buffer,
3254
+ grpc_core::Transport* transport, grpc_slice_buffer* read_buffer,
3138
3255
  grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
3139
- grpc_chttp2_transport* t =
3140
- reinterpret_cast<grpc_chttp2_transport*>(transport);
3141
- GRPC_CHTTP2_REF_TRANSPORT(
3142
- t, "reading_action"); // matches unref inside reading_action
3256
+ auto t = reinterpret_cast<grpc_chttp2_transport*>(transport)->Ref();
3143
3257
  if (read_buffer != nullptr) {
3144
3258
  grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
3145
3259
  gpr_free(read_buffer);
3146
3260
  }
3147
- t->combiner->Run(
3148
- grpc_core::NewClosure([t, notify_on_receive_settings,
3149
- 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 {
3150
3265
  if (!t->closed_with_error.ok()) {
3151
3266
  if (notify_on_receive_settings != nullptr) {
3152
3267
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
@@ -3156,12 +3271,11 @@ void grpc_chttp2_transport_start_reading(
3156
3271
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_close,
3157
3272
  t->closed_with_error);
3158
3273
  }
3159
- GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
3160
3274
  return;
3161
3275
  }
3162
3276
  t->notify_on_receive_settings = notify_on_receive_settings;
3163
3277
  t->notify_on_close = notify_on_close;
3164
- read_action_locked(t, absl::OkStatus());
3278
+ read_action_locked(std::move(t), absl::OkStatus());
3165
3279
  }),
3166
3280
  absl::OkStatus());
3167
3281
  }