grpc 1.81.0 → 1.82.0.pre1

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 (863) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +12 -9
  3. data/include/grpc/grpc.h +6 -7
  4. data/include/grpc/impl/channel_arg_names.h +3 -1
  5. data/src/core/call/call_filters.h +2 -2
  6. data/src/core/call/client_call.cc +1 -1
  7. data/src/core/call/interception_chain.h +6 -9
  8. data/src/core/call/metadata.h +1 -1
  9. data/src/core/call/metadata_batch.cc +1 -1
  10. data/src/core/call/metadata_batch.h +17 -1
  11. data/src/core/call/parsed_metadata.h +7 -2
  12. data/src/core/call/server_call.cc +4 -2
  13. data/src/core/call/server_call.h +9 -2
  14. data/src/core/call/status_util.cc +0 -4
  15. data/src/core/call/status_util.h +0 -3
  16. data/src/core/channelz/channel_trace.cc +3 -1
  17. data/src/core/client_channel/backup_poller.cc +1 -1
  18. data/src/core/client_channel/client_channel.cc +6 -14
  19. data/src/core/client_channel/client_channel.h +2 -2
  20. data/src/core/client_channel/client_channel_filter.cc +8 -17
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +2 -7
  24. data/src/core/client_channel/dynamic_filters.cc +4 -7
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/retry_filter.cc +2 -25
  27. data/src/core/client_channel/retry_filter.h +3 -7
  28. data/src/core/client_channel/retry_filter_legacy_call_data.cc +1 -1
  29. data/src/core/client_channel/retry_filter_legacy_call_data.h +2 -2
  30. data/src/core/client_channel/retry_interceptor.cc +7 -35
  31. data/src/core/client_channel/retry_interceptor.h +11 -14
  32. data/src/core/client_channel/retry_service_config.cc +0 -2
  33. data/src/core/client_channel/retry_service_config.h +0 -2
  34. data/src/core/client_channel/retry_throttle.cc +19 -7
  35. data/src/core/client_channel/retry_throttle.h +24 -7
  36. data/src/core/client_channel/subchannel.cc +1 -1
  37. data/src/core/credentials/call/external/external_account_credentials.cc +125 -12
  38. data/src/core/credentials/call/external/external_account_credentials.h +6 -1
  39. data/src/core/credentials/call/jwt/jwt_credentials.cc +11 -1
  40. data/src/core/credentials/call/jwt/jwt_credentials.h +3 -0
  41. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +64 -11
  42. data/src/core/credentials/call/oauth2/oauth2_credentials.h +0 -1
  43. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +411 -0
  44. data/src/core/credentials/call/regional_access_boundary_fetcher.h +158 -0
  45. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +1 -1
  46. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +7 -1
  47. data/src/core/credentials/transport/insecure/insecure_security_connector.h +1 -1
  48. data/src/core/credentials/transport/local/local_security_connector.cc +1 -1
  49. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -0
  50. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +28 -66
  51. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -8
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +24 -58
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +24 -19
  54. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -81
  55. data/src/core/ext/filters/message_size/message_size_filter.h +1 -50
  56. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +13 -56
  57. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -14
  58. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  59. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +175 -51
  60. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -1
  61. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +73 -6
  62. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  63. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
  64. data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -0
  65. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +2 -4
  66. data/src/core/ext/transport/chttp2/transport/frame.cc +63 -13
  67. data/src/core/ext/transport/chttp2/transport/frame.h +45 -10
  68. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +11 -3
  70. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  71. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  72. data/src/core/ext/transport/chttp2/transport/header_assembler.h +54 -22
  73. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +53 -5
  74. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +22 -0
  75. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +20 -0
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -1
  77. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  78. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +118 -157
  79. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +6 -13
  80. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +2187 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +748 -0
  82. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -4
  83. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +0 -2
  84. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +50 -17
  85. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +13 -15
  86. data/src/core/ext/transport/chttp2/transport/http2_transport.h +16 -48
  87. data/src/core/ext/transport/chttp2/transport/internal.h +14 -0
  88. data/src/core/ext/transport/chttp2/transport/message_assembler.h +1 -2
  89. data/src/core/ext/transport/chttp2/transport/parsing.cc +82 -24
  90. data/src/core/ext/transport/chttp2/transport/read_context.h +452 -0
  91. data/src/core/ext/transport/chttp2/transport/security_frame.h +12 -3
  92. data/src/core/ext/transport/chttp2/transport/stream.h +25 -26
  93. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +6 -4
  94. data/src/core/ext/transport/chttp2/transport/write_cycle.h +9 -1
  95. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +16 -2
  96. data/src/core/ext/upb-gen/cel/expr/checked.upb.h +621 -432
  97. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +264 -166
  98. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +0 -13
  99. data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +708 -497
  100. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +294 -176
  101. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +0 -15
  102. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +262 -181
  103. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +84 -58
  104. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +0 -5
  105. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +254 -190
  106. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +107 -53
  107. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +0 -4
  108. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +271 -190
  109. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +88 -64
  110. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +0 -5
  111. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +1035 -730
  112. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +384 -260
  113. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +0 -19
  114. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +87 -56
  115. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +26 -16
  116. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +0 -2
  117. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +105 -71
  118. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +30 -22
  119. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +0 -2
  120. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +31 -29
  121. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +19 -7
  122. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +0 -1
  123. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +25 -23
  124. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +15 -7
  125. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +0 -1
  126. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +25 -23
  127. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +15 -7
  128. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +0 -1
  129. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +201 -165
  130. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +79 -31
  131. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +0 -2
  132. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +29 -26
  133. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +17 -11
  134. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +0 -1
  135. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +46 -29
  136. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +37 -19
  137. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +4 -4
  138. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +34 -27
  139. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +34 -13
  140. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +1 -2
  141. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +617 -452
  142. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +221 -163
  143. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +0 -16
  144. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1339 -970
  145. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +484 -324
  146. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +0 -23
  147. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +181 -135
  148. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +59 -43
  149. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +0 -3
  150. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1353 -1028
  151. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +535 -361
  152. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +0 -25
  153. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +37 -33
  154. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +19 -13
  155. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +0 -1
  156. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +234 -196
  157. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +77 -57
  158. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +0 -1
  159. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +695 -502
  160. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +246 -186
  161. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +0 -15
  162. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +140 -116
  163. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +53 -43
  164. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +0 -3
  165. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +363 -269
  166. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +131 -89
  167. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +0 -8
  168. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +35 -31
  169. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +15 -13
  170. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +0 -1
  171. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +1073 -769
  172. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +515 -293
  173. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +0 -30
  174. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +25 -23
  175. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +15 -7
  176. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +0 -1
  177. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +375 -267
  178. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +142 -86
  179. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +0 -7
  180. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +32 -27
  181. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +13 -11
  182. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +0 -1
  183. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +29 -26
  184. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +17 -11
  185. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +0 -1
  186. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +87 -56
  187. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +26 -16
  188. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +0 -2
  189. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +634 -468
  190. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +255 -161
  191. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +0 -14
  192. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -474
  193. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +228 -130
  194. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +0 -9
  195. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +56 -40
  196. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +15 -13
  197. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +0 -1
  198. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +34 -29
  199. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +19 -11
  200. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +0 -1
  201. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +811 -635
  202. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +347 -221
  203. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +0 -16
  204. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +174 -118
  205. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +62 -38
  206. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +0 -4
  207. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +78 -57
  208. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +28 -18
  209. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +0 -2
  210. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +37 -33
  211. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +22 -14
  212. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +0 -1
  213. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +159 -119
  214. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +47 -35
  215. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +0 -5
  216. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +101 -76
  217. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +41 -23
  218. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +0 -2
  219. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +35 -31
  220. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +15 -13
  221. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +0 -1
  222. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +189 -127
  223. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +79 -49
  224. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +0 -4
  225. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +378 -283
  226. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +156 -98
  227. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +0 -8
  228. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +354 -255
  229. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +125 -69
  230. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +0 -6
  231. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +27 -24
  232. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +13 -11
  233. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +0 -1
  234. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +611 -451
  235. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +159 -119
  236. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +0 -11
  237. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +468 -321
  238. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +157 -99
  239. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -6
  240. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +146 -119
  241. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +55 -35
  242. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +0 -1
  243. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +61 -51
  244. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -16
  245. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +0 -2
  246. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +43 -39
  247. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +25 -13
  248. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +0 -1
  249. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +341 -247
  250. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +130 -84
  251. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +0 -8
  252. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +452 -313
  253. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +144 -100
  254. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +0 -10
  255. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +666 -493
  256. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +251 -181
  257. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +0 -12
  258. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +327 -197
  259. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +92 -48
  260. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +0 -3
  261. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3583 -2532
  262. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1340 -816
  263. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +0 -60
  264. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +111 -82
  265. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +48 -28
  266. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +0 -3
  267. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +548 -410
  268. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +214 -148
  269. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +0 -12
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +59 -50
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +30 -20
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +0 -2
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +29 -26
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +17 -11
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +0 -1
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +60 -49
  277. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +28 -20
  278. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +0 -2
  279. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +50 -36
  280. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +19 -11
  281. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +0 -1
  282. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +82 -63
  283. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +27 -19
  284. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +0 -1
  285. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +27 -24
  286. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +13 -11
  287. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +0 -1
  288. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +70 -58
  289. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +32 -22
  290. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +0 -2
  291. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -5
  292. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +73 -62
  294. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +39 -25
  295. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +0 -2
  296. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +49 -45
  297. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +33 -13
  298. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +0 -1
  299. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +771 -588
  300. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +383 -185
  301. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +0 -16
  302. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -47
  303. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +31 -17
  304. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +0 -2
  305. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +69 -58
  306. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +27 -23
  307. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +0 -2
  308. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +151 -119
  309. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +45 -39
  310. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +0 -5
  311. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +19 -17
  312. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +1 -3
  313. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +0 -1
  314. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +144 -109
  315. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +46 -38
  316. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +0 -4
  317. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +184 -139
  318. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +65 -35
  319. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +0 -3
  320. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +129 -106
  321. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +69 -41
  322. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +0 -4
  323. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +83 -71
  324. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +40 -26
  325. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +0 -2
  326. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +148 -101
  327. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +45 -27
  328. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +0 -2
  329. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +62 -51
  330. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +35 -21
  331. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +0 -2
  332. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1362 -1024
  333. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +508 -336
  334. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +0 -22
  335. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +21 -19
  336. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +13 -7
  337. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +0 -1
  338. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +35 -31
  339. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +15 -13
  340. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +0 -1
  341. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +27 -24
  342. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +13 -11
  343. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +0 -1
  344. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +27 -24
  345. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +13 -11
  346. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +0 -1
  347. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +94 -74
  348. 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 +35 -23
  349. 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 +0 -1
  350. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +231 -179
  351. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +88 -66
  352. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +0 -6
  353. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +21 -19
  354. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +13 -7
  355. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +0 -1
  356. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +63 -56
  357. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +31 -19
  358. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +0 -1
  359. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +27 -24
  360. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +13 -11
  361. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +0 -1
  362. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +27 -24
  363. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +13 -11
  364. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +0 -1
  365. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -5
  366. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +1 -1
  367. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +538 -364
  368. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +157 -95
  369. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +0 -8
  370. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -110
  371. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +69 -49
  372. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +0 -4
  373. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +517 -389
  374. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +182 -116
  375. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +0 -7
  376. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +84 -62
  377. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +30 -22
  378. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +0 -2
  379. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +340 -256
  380. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +92 -82
  381. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +0 -5
  382. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +19 -17
  383. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -3
  384. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +0 -1
  385. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +857 -566
  386. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +288 -182
  387. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +0 -15
  388. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +105 -72
  389. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +36 -22
  390. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +0 -2
  391. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +312 -226
  392. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +132 -78
  393. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +0 -5
  394. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +82 -61
  395. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -19
  396. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +0 -2
  397. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +123 -89
  398. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +25 -25
  399. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +0 -4
  400. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +48 -33
  401. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +13 -11
  402. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +0 -1
  403. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -36
  404. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +19 -13
  405. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +0 -1
  406. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +101 -79
  407. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +61 -31
  408. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +0 -5
  409. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +83 -60
  410. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +37 -19
  411. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +0 -2
  412. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +56 -40
  413. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +15 -13
  414. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +0 -1
  415. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +34 -29
  416. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +13 -11
  417. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +0 -1
  418. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +32 -27
  419. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +13 -11
  420. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +0 -1
  421. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +88 -71
  422. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +48 -30
  423. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +0 -3
  424. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +37 -30
  425. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +1 -5
  426. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +0 -2
  427. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +95 -71
  428. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +36 -22
  429. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +0 -2
  430. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +79 -56
  431. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +26 -18
  432. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +0 -2
  433. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +164 -124
  434. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +54 -40
  435. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +0 -4
  436. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +200 -147
  437. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +47 -41
  438. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +0 -7
  439. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +160 -130
  440. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +89 -47
  441. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +0 -5
  442. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +78 -62
  443. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +26 -20
  444. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +0 -3
  445. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -5
  446. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +1 -1
  447. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +21 -19
  448. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +13 -7
  449. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +0 -1
  450. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +43 -36
  451. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +22 -12
  452. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +0 -2
  453. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +67 -55
  454. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +36 -18
  455. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +0 -3
  456. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +62 -51
  457. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +33 -19
  458. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +0 -2
  459. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -5
  460. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +1 -1
  461. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +25 -23
  462. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +15 -7
  463. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +0 -1
  464. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +37 -33
  465. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +19 -13
  466. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +0 -1
  467. data/src/core/ext/upb-gen/google/api/annotations.upb.h +15 -13
  468. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +22 -7
  469. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +1 -1
  470. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +619 -430
  471. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +260 -168
  472. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +0 -13
  473. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +734 -518
  474. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +312 -182
  475. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +0 -16
  476. data/src/core/ext/upb-gen/google/api/http.upb.h +146 -105
  477. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +65 -29
  478. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +0 -3
  479. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +52 -37
  480. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +19 -11
  481. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +0 -1
  482. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +23 -21
  483. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +15 -7
  484. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +0 -1
  485. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2236 -1514
  486. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +824 -406
  487. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +0 -34
  488. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +23 -21
  489. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +15 -7
  490. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +0 -1
  491. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +19 -17
  492. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -3
  493. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +0 -1
  494. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +149 -100
  495. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +59 -43
  496. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +0 -4
  497. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +23 -21
  498. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +15 -7
  499. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +0 -1
  500. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +181 -139
  501. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +99 -53
  502. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +0 -9
  503. data/src/core/ext/upb-gen/google/rpc/status.upb.h +52 -37
  504. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +19 -11
  505. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +0 -1
  506. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +1553 -1157
  507. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +712 -410
  508. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +0 -39
  509. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +189 -125
  510. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +59 -35
  511. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +0 -3
  512. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +454 -343
  513. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +204 -130
  514. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +0 -11
  515. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +369 -243
  516. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +109 -79
  517. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +0 -7
  518. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +256 -175
  519. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +122 -68
  520. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +0 -8
  521. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +71 -51
  522. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +39 -19
  523. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +0 -2
  524. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +583 -407
  525. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +259 -145
  526. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +0 -12
  527. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +114 -84
  528. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +52 -30
  529. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +0 -4
  530. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +41 -34
  531. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +25 -13
  532. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +0 -2
  533. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +309 -230
  534. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +123 -79
  535. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +0 -9
  536. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +98 -63
  537. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +51 -23
  538. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +0 -3
  539. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +505 -312
  540. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +159 -87
  541. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +0 -9
  542. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +128 -91
  543. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +82 -41
  544. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -8
  545. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +36 -29
  546. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +36 -13
  547. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +1 -2
  548. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +13 -11
  549. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +22 -7
  550. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +1 -1
  551. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +36 -29
  552. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +36 -13
  553. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +1 -2
  554. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +34 -27
  555. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +34 -13
  556. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +1 -2
  557. data/src/core/ext/upb-gen/validate/validate.upb.h +1682 -1130
  558. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +587 -247
  559. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -27
  560. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +128 -91
  561. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +82 -41
  562. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -8
  563. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +36 -29
  564. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +36 -13
  565. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +1 -2
  566. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +13 -11
  567. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +22 -7
  568. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +1 -1
  569. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +122 -90
  570. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +82 -39
  571. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -7
  572. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +34 -27
  573. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +34 -13
  574. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +1 -2
  575. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +21 -19
  576. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +13 -7
  577. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +0 -1
  578. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +29 -26
  579. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +17 -11
  580. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +0 -1
  581. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +70 -58
  582. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +32 -22
  583. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +0 -2
  584. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +53 -34
  585. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +26 -16
  586. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +0 -2
  587. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +29 -26
  588. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +17 -11
  589. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +0 -1
  590. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +37 -33
  591. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +22 -14
  592. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +0 -1
  593. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +102 -76
  594. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +43 -23
  595. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +0 -2
  596. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +33 -30
  597. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +19 -11
  598. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +0 -1
  599. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +136 -83
  600. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +41 -33
  601. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +0 -4
  602. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +46 -32
  603. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +20 -12
  604. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +0 -1
  605. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +29 -26
  606. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +20 -12
  607. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +0 -1
  608. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +93 -61
  609. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +28 -20
  610. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +0 -2
  611. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +19 -17
  612. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -3
  613. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +0 -1
  614. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +105 -71
  615. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +32 -22
  616. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +0 -2
  617. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +430 -314
  618. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +153 -123
  619. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +0 -10
  620. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +307 -199
  621. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +74 -62
  622. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +0 -6
  623. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +52 -42
  624. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +19 -13
  625. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +0 -2
  626. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +95 -71
  627. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +36 -22
  628. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +0 -2
  629. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +92 -77
  630. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +42 -28
  631. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +0 -2
  632. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +67 -55
  633. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +36 -18
  634. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +0 -3
  635. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +29 -26
  636. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +17 -11
  637. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +0 -1
  638. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +885 -855
  639. data/src/core/filter/composite/composite_filter.cc +10 -3
  640. data/src/core/filter/composite/composite_filter.h +11 -1
  641. data/src/core/filter/filter_args.h +4 -22
  642. data/src/core/handshaker/handshaker.cc +10 -2
  643. data/src/core/handshaker/security/secure_endpoint.cc +73 -5
  644. data/src/core/lib/channel/channel_args.h +12 -6
  645. data/src/core/lib/channel/channel_stack.cc +1 -2
  646. data/src/core/lib/channel/channel_stack.h +1 -7
  647. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  648. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -7
  649. data/src/core/lib/channel/promise_based_filter.cc +13 -1
  650. data/src/core/lib/channel/promise_based_filter.h +4 -5
  651. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -13
  652. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +48 -0
  653. data/src/core/lib/event_engine/posix.h +2 -0
  654. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -1
  655. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +11 -8
  656. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -6
  657. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  658. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -1
  659. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +10 -10
  660. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  661. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
  662. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -4
  663. data/src/core/lib/experiments/experiments.cc +261 -90
  664. data/src/core/lib/experiments/experiments.h +136 -35
  665. data/src/core/lib/iomgr/buffer_list.h +1 -1
  666. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -1
  667. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  668. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  669. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  670. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
  671. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  672. data/src/core/lib/promise/interceptor_list.h +1 -1
  673. data/src/core/lib/promise/try_seq.h +2 -2
  674. data/src/core/lib/resource_quota/telemetry.cc +54 -0
  675. data/src/core/lib/resource_quota/telemetry.h +5 -23
  676. data/src/core/lib/surface/call.cc +6 -1
  677. data/src/core/lib/surface/call.h +9 -0
  678. data/src/core/lib/surface/version.cc +2 -2
  679. data/src/core/lib/transport/promise_endpoint.h +7 -5
  680. data/src/core/lib/transport/transport.h +31 -4
  681. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +146 -74
  682. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +88 -0
  683. data/src/core/mitigation_engine/mitigation_engine.h +81 -0
  684. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  685. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -5
  686. data/src/core/resolver/xds/xds_resolver.cc +23 -133
  687. data/src/core/server/server.cc +40 -18
  688. data/src/core/server/server.h +25 -14
  689. data/src/core/server/server_config_selector_filter.cc +122 -0
  690. data/src/core/server/server_config_selector_filter.h +1 -0
  691. data/src/core/server/xds_server_config_fetcher.cc +6 -0
  692. data/src/core/server/xds_server_config_fetcher_legacy.cc +1333 -0
  693. data/src/core/telemetry/histogram.h +10 -89
  694. data/src/core/telemetry/instrument.h +42 -28
  695. data/src/core/transport/message_size_service_config.cc +123 -0
  696. data/src/core/transport/message_size_service_config.h +85 -0
  697. data/src/core/transport/session_endpoint.cc +29 -4
  698. data/src/core/transport/session_endpoint.h +4 -0
  699. data/src/core/tsi/alts/crypt/gsec.h +4 -2
  700. data/src/core/tsi/ssl_transport_security.cc +6 -4
  701. data/src/core/util/http_client/parser.cc +1 -1
  702. data/src/core/util/lru_cache.h +2 -0
  703. data/src/core/util/ref_counted_string.h +1 -1
  704. data/src/core/util/tchar.cc +13 -7
  705. data/src/core/util/trie_lookup.h +1 -1
  706. data/src/core/xds/grpc/blackboard.cc +58 -0
  707. data/src/core/{filter → xds/grpc}/blackboard.h +30 -11
  708. data/src/core/xds/grpc/xds_client_grpc.cc +14 -1
  709. data/src/core/xds/grpc/xds_client_grpc.h +1 -0
  710. data/src/core/xds/grpc/xds_common_types.cc +40 -0
  711. data/src/core/xds/grpc/xds_common_types.h +13 -0
  712. data/src/core/xds/grpc/xds_common_types_parser.cc +37 -34
  713. data/src/core/xds/grpc/xds_endpoint_parser.cc +1 -1
  714. data/src/core/xds/grpc/xds_http_composite_filter.cc +34 -18
  715. data/src/core/xds/grpc/xds_http_composite_filter.h +6 -3
  716. data/src/core/xds/grpc/xds_http_fault_filter.cc +0 -149
  717. data/src/core/xds/grpc/xds_http_fault_filter.h +19 -8
  718. data/src/core/xds/grpc/xds_http_filter.cc +2 -1
  719. data/src/core/xds/grpc/xds_http_filter.h +6 -16
  720. data/src/core/xds/grpc/xds_http_filter_registry.cc +0 -2
  721. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +25 -119
  722. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +27 -15
  723. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +0 -149
  724. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -8
  725. data/src/core/xds/grpc/xds_lb_policy_registry.cc +18 -0
  726. data/src/core/xds/grpc/xds_listener_parser.cc +13 -9
  727. data/src/core/xds/grpc/xds_route_config.h +1 -1
  728. data/src/core/xds/grpc/xds_route_config_parser.cc +3 -5
  729. data/src/core/xds/grpc/xds_routing.cc +5 -11
  730. data/src/core/xds/grpc/xds_routing.h +2 -3
  731. data/src/core/xds/xds_client/lrs_client.cc +2 -2
  732. data/src/ruby/ext/grpc/rb_byte_buffer.c +1 -0
  733. data/src/ruby/ext/grpc/rb_call.c +3 -0
  734. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  735. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  736. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  737. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  738. data/src/ruby/ext/grpc/rb_completion_queue.c +1 -0
  739. data/src/ruby/ext/grpc/rb_compression_options.c +1 -0
  740. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
  741. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -6
  742. data/src/ruby/ext/grpc/rb_server.c +1 -0
  743. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  744. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  745. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  746. data/src/ruby/lib/grpc/core/call_credentials.rb +86 -0
  747. data/src/ruby/lib/grpc/core/channel_credentials.rb +69 -0
  748. data/src/ruby/lib/grpc/core/credentials_helper.rb +126 -0
  749. data/src/ruby/lib/grpc/generic/client_stub.rb +86 -73
  750. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  751. data/src/ruby/lib/grpc/version.rb +1 -1
  752. data/src/ruby/lib/grpc.rb +25 -0
  753. data/src/ruby/spec/call_credentials_spec.rb +52 -2
  754. data/src/ruby/spec/credentials_helper_spec.rb +80 -0
  755. data/src/ruby/spec/generic/client_stub_spec.rb +27 -4
  756. data/src/ruby/spec/generic/server_interceptors_spec.rb +17 -3
  757. data/third_party/upb/upb/base/error_handler.h +79 -0
  758. data/third_party/upb/upb/base/internal/log2.h +29 -5
  759. data/third_party/upb/upb/generated_code_support.h +1 -0
  760. data/third_party/upb/upb/hash/common.c +129 -14
  761. data/third_party/upb/upb/hash/common.h +1 -1
  762. data/third_party/upb/upb/hash/ext_table.h +65 -0
  763. data/third_party/upb/upb/lex/strtod.c +14 -5
  764. data/third_party/upb/upb/mem/arena.c +113 -95
  765. data/third_party/upb/upb/mem/internal/arena.h +13 -8
  766. data/third_party/upb/upb/message/accessors.c +2 -3
  767. data/third_party/upb/upb/message/accessors.h +32 -12
  768. data/third_party/upb/upb/message/array.c +51 -2
  769. data/third_party/upb/upb/message/array.h +10 -0
  770. data/third_party/upb/upb/message/copy.c +18 -34
  771. data/third_party/upb/upb/message/internal/accessors.h +15 -49
  772. data/third_party/upb/upb/message/internal/array.h +1 -1
  773. data/third_party/upb/upb/message/internal/map.h +1 -1
  774. data/third_party/upb/upb/message/internal/message.c +8 -1
  775. data/third_party/upb/upb/message/internal/message.h +40 -10
  776. data/third_party/upb/upb/message/message.c +3 -2
  777. data/third_party/upb/upb/message/value.h +0 -6
  778. data/third_party/upb/upb/mini_descriptor/decode.c +78 -59
  779. data/third_party/upb/upb/mini_descriptor/link.c +8 -6
  780. data/third_party/upb/upb/mini_table/extension_registry.c +17 -49
  781. data/third_party/upb/upb/mini_table/extension_registry.h +5 -17
  782. data/third_party/upb/upb/mini_table/generated_registry.c +180 -0
  783. data/third_party/upb/upb/mini_table/generated_registry.h +66 -0
  784. data/third_party/upb/upb/mini_table/internal/extension.h +5 -3
  785. data/third_party/upb/upb/mini_table/internal/field.h +7 -5
  786. data/third_party/upb/upb/mini_table/internal/generated_registry.h +37 -0
  787. data/third_party/upb/upb/mini_table/internal/message.c +0 -18
  788. data/third_party/upb/upb/mini_table/internal/message.h +24 -41
  789. data/third_party/upb/upb/mini_table/internal/size_log2.h +2 -1
  790. data/third_party/upb/upb/mini_table/internal/sub.h +2 -5
  791. data/third_party/upb/upb/mini_table/message.h +34 -13
  792. data/third_party/upb/upb/port/atomic.h +180 -74
  793. data/third_party/upb/upb/port/def.inc +194 -29
  794. data/third_party/upb/upb/port/sanitizers.h +15 -0
  795. data/third_party/upb/upb/port/undef.inc +6 -2
  796. data/third_party/upb/upb/reflection/common.h +0 -6
  797. data/third_party/upb/upb/reflection/def.hpp +8 -12
  798. data/third_party/upb/upb/reflection/def_pool.c +85 -33
  799. data/third_party/upb/upb/reflection/def_pool.h +38 -8
  800. data/third_party/upb/upb/reflection/def_type.h +3 -0
  801. data/third_party/upb/upb/reflection/enum_def.c +45 -33
  802. data/third_party/upb/upb/reflection/enum_def.h +8 -4
  803. data/third_party/upb/upb/reflection/enum_reserved_range.c +7 -3
  804. data/third_party/upb/upb/reflection/enum_value_def.c +14 -29
  805. data/third_party/upb/upb/reflection/enum_value_def.h +5 -4
  806. data/third_party/upb/upb/reflection/extension_range.c +15 -14
  807. data/third_party/upb/upb/reflection/extension_range.h +7 -4
  808. data/third_party/upb/upb/reflection/field_def.c +114 -96
  809. data/third_party/upb/upb/reflection/field_def.h +3 -3
  810. data/third_party/upb/upb/reflection/file_def.c +71 -65
  811. data/third_party/upb/upb/reflection/file_def.h +4 -5
  812. data/third_party/upb/upb/reflection/internal/def_builder.c +22 -14
  813. data/third_party/upb/upb/reflection/internal/def_builder.h +44 -38
  814. data/third_party/upb/upb/reflection/internal/def_pool.h +5 -1
  815. data/third_party/upb/upb/reflection/internal/enum_def.h +6 -4
  816. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +3 -2
  817. data/third_party/upb/upb/reflection/internal/enum_value_def.h +7 -4
  818. data/third_party/upb/upb/reflection/internal/extension_range.h +4 -3
  819. data/third_party/upb/upb/reflection/internal/field_def.h +15 -12
  820. data/third_party/upb/upb/reflection/internal/file_def.h +8 -1
  821. data/third_party/upb/upb/reflection/internal/message_def.h +10 -7
  822. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +3 -1
  823. data/third_party/upb/upb/reflection/internal/method_def.h +6 -6
  824. data/third_party/upb/upb/reflection/internal/oneof_def.h +6 -6
  825. data/third_party/upb/upb/reflection/internal/service_def.h +9 -6
  826. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  827. data/third_party/upb/upb/reflection/message_def.c +46 -53
  828. data/third_party/upb/upb/reflection/message_def.h +6 -7
  829. data/third_party/upb/upb/reflection/message_reserved_range.c +7 -6
  830. data/third_party/upb/upb/reflection/method_def.c +22 -20
  831. data/third_party/upb/upb/reflection/method_def.h +4 -4
  832. data/third_party/upb/upb/reflection/oneof_def.c +17 -15
  833. data/third_party/upb/upb/reflection/oneof_def.h +6 -3
  834. data/third_party/upb/upb/reflection/service_def.c +50 -23
  835. data/third_party/upb/upb/reflection/service_def.h +7 -4
  836. data/third_party/upb/upb/text/internal/encode.c +7 -10
  837. data/third_party/upb/upb/wire/decode.c +269 -430
  838. data/third_party/upb/upb/wire/decode.h +6 -45
  839. data/third_party/upb/upb/wire/decode_fast/combinations.h +7 -3
  840. data/third_party/upb/upb/wire/decode_fast/select.c +7 -2
  841. data/third_party/upb/upb/wire/encode.c +144 -106
  842. data/third_party/upb/upb/wire/encode.h +6 -2
  843. data/third_party/upb/upb/wire/eps_copy_input_stream.c +36 -7
  844. data/third_party/upb/upb/wire/eps_copy_input_stream.h +94 -380
  845. data/third_party/upb/upb/wire/internal/decoder.c +1 -14
  846. data/third_party/upb/upb/wire/internal/decoder.h +84 -24
  847. data/third_party/upb/upb/wire/internal/eps_copy_input_stream.h +339 -0
  848. data/third_party/upb/upb/wire/internal/reader.h +29 -12
  849. data/third_party/upb/upb/wire/reader.c +35 -22
  850. data/third_party/upb/upb/wire/reader.h +11 -18
  851. data/third_party/utf8_range/utf8_range.c +1 -1
  852. data/third_party/utf8_range/utf8_range.h +2 -1
  853. metadata +27 -13
  854. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +0 -117
  855. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +0 -109
  856. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +0 -80
  857. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +0 -86
  858. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +0 -83
  859. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +0 -91
  860. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +0 -217
  861. data/src/core/filter/blackboard.cc +0 -33
  862. data/third_party/upb/upb/message/internal/tagged_ptr.h +0 -56
  863. data/third_party/upb/upb/message/tagged_ptr.h +0 -48
@@ -0,0 +1,748 @@
1
+ //
2
+ //
3
+ // Copyright 2024 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SERVER_TRANSPORT_H
20
+ #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SERVER_TRANSPORT_H
21
+
22
+ #include <grpc/event_engine/event_engine.h>
23
+ #include <grpc/grpc.h>
24
+ #include <grpc/support/port_platform.h>
25
+
26
+ #include <cstddef>
27
+ #include <cstdint>
28
+ #include <memory>
29
+ #include <optional>
30
+ #include <type_traits>
31
+ #include <utility>
32
+ #include <vector>
33
+
34
+ #include "src/core/call/call_destination.h"
35
+ #include "src/core/call/call_spine.h"
36
+ #include "src/core/call/metadata.h"
37
+ #include "src/core/channelz/channelz.h"
38
+ #include "src/core/ext/transport/chttp2/transport/flow_control.h"
39
+ #include "src/core/ext/transport/chttp2/transport/frame.h"
40
+ #include "src/core/ext/transport/chttp2/transport/goaway.h"
41
+ #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
42
+ #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
43
+ #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
44
+ #include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
45
+ #include "src/core/ext/transport/chttp2/transport/http2_settings_promises.h"
46
+ #include "src/core/ext/transport/chttp2/transport/http2_status.h"
47
+ #include "src/core/ext/transport/chttp2/transport/http2_transport.h"
48
+ #include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h"
49
+ #include "src/core/ext/transport/chttp2/transport/keepalive.h"
50
+ #include "src/core/ext/transport/chttp2/transport/ping_promise.h"
51
+ #include "src/core/ext/transport/chttp2/transport/read_context.h"
52
+ #include "src/core/ext/transport/chttp2/transport/security_frame.h"
53
+ #include "src/core/ext/transport/chttp2/transport/stream.h"
54
+ #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h"
55
+ #include "src/core/ext/transport/chttp2/transport/writable_streams.h"
56
+ #include "src/core/lib/channel/channel_args.h"
57
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
58
+ #include "src/core/lib/promise/activity.h"
59
+ #include "src/core/lib/promise/context.h"
60
+ #include "src/core/lib/promise/latch.h"
61
+ #include "src/core/lib/promise/map.h"
62
+ #include "src/core/lib/promise/mpsc.h"
63
+ #include "src/core/lib/promise/party.h"
64
+ #include "src/core/lib/promise/poll.h"
65
+ #include "src/core/lib/promise/promise.h"
66
+ #include "src/core/lib/promise/race.h"
67
+ #include "src/core/lib/resource_quota/memory_quota.h"
68
+ #include "src/core/lib/slice/slice_buffer.h"
69
+ #include "src/core/lib/transport/connectivity_state.h"
70
+ #include "src/core/lib/transport/promise_endpoint.h"
71
+ #include "src/core/lib/transport/transport.h"
72
+ #include "src/core/util/debug_location.h"
73
+ #include "src/core/util/grpc_check.h"
74
+ #include "src/core/util/orphanable.h"
75
+ #include "src/core/util/ref_counted.h"
76
+ #include "src/core/util/ref_counted_ptr.h"
77
+ #include "src/core/util/sync.h"
78
+ #include "src/core/util/time.h"
79
+ #include "absl/base/thread_annotations.h"
80
+ #include "absl/container/flat_hash_map.h"
81
+ #include "absl/functional/any_invocable.h"
82
+ #include "absl/log/log.h"
83
+ #include "absl/meta/type_traits.h"
84
+ #include "absl/status/status.h"
85
+ #include "absl/status/statusor.h"
86
+ #include "absl/strings/string_view.h"
87
+
88
+ namespace grpc_core {
89
+ namespace http2 {
90
+
91
+ // Experimental : The code will be written iteratively.
92
+ // Do not use or edit any of these functions unless you are
93
+ // familiar with the PH2 project (Moving chttp2 to promises.)
94
+ // TODO(tjagtap) : [PH2][P5] : Update the experimental status of the code when
95
+ // http2 rollout is completed.
96
+ class Http2ServerTransport final : public ServerTransport,
97
+ public channelz::DataSource {
98
+ // TODO(tjagtap) : [PH2][P3] Move the definitions to the header for better
99
+ // inlining. For now definitions are in the cc file to
100
+ // reduce cognitive load in the header.
101
+ public:
102
+ //////////////////////////////////////////////////////////////////////////////
103
+ // Constructor, Destructor etc.
104
+ Http2ServerTransport(
105
+ PromiseEndpoint endpoint, const ChannelArgs& channel_args,
106
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine>
107
+ event_engine,
108
+ absl::AnyInvocable<void(absl::StatusOr<uint32_t>)> on_receive_settings,
109
+ grpc_closure* on_close_callback);
110
+
111
+ Http2ServerTransport(const Http2ServerTransport&) = delete;
112
+ Http2ServerTransport& operator=(const Http2ServerTransport&) = delete;
113
+ Http2ServerTransport(Http2ServerTransport&&) = delete;
114
+ Http2ServerTransport& operator=(Http2ServerTransport&&) = delete;
115
+ ~Http2ServerTransport() override;
116
+
117
+ FilterStackTransport* filter_stack_transport() override { return nullptr; }
118
+ ClientTransport* client_transport() override { return nullptr; }
119
+ ServerTransport* server_transport() override { return this; }
120
+ absl::string_view GetTransportName() const override { return "http2"; }
121
+
122
+ //////////////////////////////////////////////////////////////////////////////
123
+ // Deprecated Stuff
124
+
125
+ // TODO(tjagtap) : [PH2][EXT] : Remove after event engine rollout
126
+ void SetPollset(grpc_stream*, grpc_pollset*) override {}
127
+ void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {}
128
+
129
+ //////////////////////////////////////////////////////////////////////////////
130
+ // Transport Functions
131
+
132
+ void SetCallDestination(RefCountedPtr<UnstartedCallDestination>
133
+ unstarted_call_destination) override;
134
+
135
+ void PerformOp(grpc_transport_op*) override;
136
+
137
+ void Orphan() override;
138
+
139
+ bool AreTransportFlowControlTokensAvailable() {
140
+ return flow_control_.remote_window() > 0;
141
+ }
142
+
143
+ void SpawnTransportLoops();
144
+ void InitializeAndSpawnTransportLoops();
145
+
146
+ //////////////////////////////////////////////////////////////////////////////
147
+ // Channelz and ZTrace
148
+
149
+ std::unique_ptr<channelz::ZTrace> GetZTrace(absl::string_view name) override {
150
+ if (name == "transport_frames") return ztrace_collector_->MakeZTrace();
151
+ return nullptr;
152
+ }
153
+
154
+ RefCountedPtr<channelz::SocketNode> GetSocketNode() const override;
155
+
156
+ void AddData(channelz::DataSink sink) override;
157
+ void SpawnAddChannelzData(RefCountedPtr<Party> party,
158
+ channelz::DataSink sink);
159
+
160
+ //////////////////////////////////////////////////////////////////////////////
161
+ // Watchers
162
+
163
+ void StartWatch(RefCountedPtr<StateWatcher> watcher) override;
164
+ void StopWatch(RefCountedPtr<StateWatcher> watcher) override;
165
+
166
+ //////////////////////////////////////////////////////////////////////////////
167
+ // Test Only Functions
168
+
169
+ template <typename Factory>
170
+ void TestOnlySpawnPromise(absl::string_view name, Factory&& factory) {
171
+ SpawnInfallible(general_party_, name, std::forward<Factory>(factory));
172
+ }
173
+
174
+ absl::Status TestOnlyTriggerWriteCycle() { return TriggerWriteCycle(); }
175
+
176
+ auto TestOnlySendPing(absl::AnyInvocable<void()> on_initiate,
177
+ bool important = false) {
178
+ return ping_manager_->RequestPing(std::move(on_initiate), important);
179
+ }
180
+
181
+ int64_t TestOnlyTransportFlowControlWindow();
182
+ int64_t TestOnlyGetStreamFlowControlWindow(const uint32_t stream_id);
183
+
184
+ private:
185
+ //////////////////////////////////////////////////////////////////////////////
186
+ // Endpoint Helpers
187
+
188
+ // Callers MUST ensure that the transport is not destroyed till the promise is
189
+ // resolved or cancelled.
190
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointReadSlice(
191
+ const size_t num_bytes) {
192
+ return Map(endpoint_.ReadSlice(num_bytes),
193
+ [this, num_bytes](absl::StatusOr<Slice> status) {
194
+ OnEndpointRead(status.ok(), num_bytes);
195
+ return status;
196
+ });
197
+ }
198
+
199
+ // Callers MUST ensure that the transport is not destroyed till the promise is
200
+ // resolved or cancelled.
201
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointRead(
202
+ const size_t num_bytes) {
203
+ return Map(endpoint_.Read(num_bytes),
204
+ [this, num_bytes](absl::StatusOr<SliceBuffer> status) {
205
+ OnEndpointRead(status.ok(), num_bytes);
206
+ return status;
207
+ });
208
+ }
209
+
210
+ void OnEndpointRead(const bool is_ok, const size_t num_bytes) {
211
+ if (is_ok) {
212
+ keepalive_manager_->GotData();
213
+ ztrace_collector_->Append(PromiseEndpointReadTrace{num_bytes});
214
+ }
215
+ }
216
+
217
+ auto EndpointWrite(SliceBuffer&& output_buf);
218
+
219
+ // Serialize and write the frames in the write cycle to the endpoint.
220
+ auto SerializeAndWrite();
221
+
222
+ //////////////////////////////////////////////////////////////////////////////
223
+ // Watchers
224
+
225
+ void StartConnectivityWatch(
226
+ grpc_connectivity_state state,
227
+ OrphanablePtr<ConnectivityStateWatcherInterface> watcher);
228
+
229
+ void StopConnectivityWatch(ConnectivityStateWatcherInterface* watcher);
230
+
231
+ void NotifyStateWatcherOnDisconnectLocked(
232
+ absl::Status status, StateWatcher::DisconnectInfo disconnect_info)
233
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_);
234
+
235
+ //////////////////////////////////////////////////////////////////////////////
236
+ // Transport Read Path
237
+
238
+ // Synchronous functions for processing each type of frame
239
+ Http2Status ProcessIncomingFrame(Http2DataFrame&& frame);
240
+ Http2Status ProcessIncomingFrame(Http2HeaderFrame&& frame);
241
+ Http2Status ProcessIncomingFrame(Http2RstStreamFrame&& frame);
242
+ Http2Status ProcessIncomingFrame(Http2SettingsFrame&& frame);
243
+ Http2Status ProcessIncomingFrame(Http2PingFrame&& frame);
244
+ Http2Status ProcessIncomingFrame(Http2GoawayFrame&& frame);
245
+ Http2Status ProcessIncomingFrame(Http2WindowUpdateFrame&& frame);
246
+ Http2Status ProcessIncomingFrame(Http2ContinuationFrame&& frame);
247
+ Http2Status ProcessIncomingFrame(Http2SecurityFrame&& frame);
248
+ Http2Status ProcessIncomingFrame(Http2UnknownFrame&& frame);
249
+ Http2Status ProcessIncomingFrame(Http2EmptyFrame&& frame);
250
+
251
+ Http2Status ProcessMetadata();
252
+
253
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Http2Status
254
+ ProcessOneIncomingFrame(Http2Frame&& frame) {
255
+ GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ProcessOneIncomingFrame";
256
+ return std::visit(
257
+ [this](auto&& frame) {
258
+ return ProcessIncomingFrame(std::forward<decltype(frame)>(frame));
259
+ },
260
+ std::forward<Http2Frame>(frame));
261
+ }
262
+
263
+ template <typename T>
264
+ Http2Status ProcessIncomingMetadata(T&& frame);
265
+
266
+ auto ReadAndProcessOneFrame();
267
+
268
+ // Returns a promise to keep reading in a Loop till a fail/close is received.
269
+ auto ReadLoop();
270
+
271
+ //////////////////////////////////////////////////////////////////////////////
272
+ // Transport Write Path
273
+
274
+ // Write time sensitive control frames to the endpoint. Frames sent from here
275
+ // will be GOAWAY, SETTINGS, PING and PING acks, WINDOW_UPDATE and
276
+ // Custom gRPC security frame.
277
+ // These frames are written to the endpoint in a single endpoint write. If any
278
+ // module needs to take action after the write (for cases like spawning
279
+ // timeout promises), they MUST plug the call in the
280
+ // NotifyControlFramesWriteDone.
281
+
282
+ // Prepares all the HTTP2 control frames that are to be sent out in this write
283
+ // cycle. The modules can choose to either trigger an endpoint write for the
284
+ // frames or defer the write with the stream specific frames. In most cases,
285
+ // the frames are deferred and a single write is triggered for all the
286
+ // frames.
287
+ absl::Status PrepareControlFrames();
288
+
289
+ // If there are any urgent frames this would trigger an additional endpoint
290
+ // write. CAUTION: This will add significant overhead if used for non-urgent
291
+ // frames.
292
+ auto MaybeWriteUrgentFrames();
293
+
294
+ // Notify the modules that an endpoint write is done. This corresponds to the
295
+ // generic endpoint write that happens in the MultiplexerLoop.
296
+ void NotifyFramesWriteDone();
297
+
298
+ // Notify the modules that an urgent endpoint write is done. If some module
299
+ // add frames to this buffer in PrepareControlFrames, they can use this to
300
+ // do post processing after the write is done.
301
+ void NotifyUrgentFramesWriteDone();
302
+
303
+ absl::Status DequeueStreamFrames(RefCountedPtr<Stream> stream,
304
+ WriteCycle& write_cycle);
305
+
306
+ // Returns a promise to keep draining control frames and data frames from all
307
+ // the writable streams and write to the endpoint.
308
+ auto MultiplexerLoop();
309
+
310
+ // Returns a promise to fetch data from the CallInitiator and pass it further
311
+ // down towards the endpoint.
312
+ auto CallOutboundLoop(RefCountedPtr<Stream> stream);
313
+
314
+ auto HandleMetadataAndMessages(RefCountedPtr<Stream> stream);
315
+
316
+ // Force triggers a transport write cycle
317
+ absl::Status TriggerWriteCycle(DebugLocation whence = {}) {
318
+ GRPC_HTTP2_SERVER_DLOG
319
+ << "Http2ServerTransport::TriggerWriteCycle invoked from "
320
+ << whence.file() << ":" << whence.line();
321
+ return writable_stream_list_.ForceReadyForWrite();
322
+ }
323
+
324
+ // Triggers a write cycle. If successful, returns true.
325
+ // If failed, calls HandleError and returns false.
326
+ bool TriggerWriteCycleOrHandleError(DebugLocation whence = {}) {
327
+ absl::Status status = TriggerWriteCycle(whence);
328
+ if (GPR_LIKELY(status.ok())) return true;
329
+ GRPC_HTTP2_SERVER_DLOG
330
+ << "Http2ServerTransport::TriggerWriteCycleOrHandleError failed with "
331
+ "status: "
332
+ << status << " at " << whence.file() << ":" << whence.line();
333
+ GRPC_UNUSED absl::Status unused_status = HandleError(
334
+ /*stream_id=*/std::nullopt, ToHttpOkOrConnError(status), whence);
335
+ return false;
336
+ }
337
+
338
+ //////////////////////////////////////////////////////////////////////////////
339
+ // Spawn Helpers and Promise Helpers
340
+
341
+ template <typename Promise,
342
+ std::enable_if_t<std::is_same_v<decltype(std::declval<Promise>()()),
343
+ Poll<absl::Status>>,
344
+ bool> = true>
345
+ auto UntilTransportClosed(Promise&& promise) {
346
+ return Race(Map(transport_closed_latch_.Wait(),
347
+ [self = RefAsSubclass<Http2ServerTransport>()](Empty) {
348
+ GRPC_HTTP2_SERVER_DLOG << "Transport closed";
349
+ return absl::CancelledError("Transport closed");
350
+ }),
351
+ std::forward<Promise>(promise));
352
+ }
353
+
354
+ template <typename Promise,
355
+ std::enable_if_t<std::is_same_v<decltype(std::declval<Promise>()()),
356
+ Poll<Empty>>,
357
+ bool> = true>
358
+ auto UntilTransportClosed(Promise&& promise) {
359
+ return Race(Map(transport_closed_latch_.Wait(),
360
+ [self = RefAsSubclass<Http2ServerTransport>()](Empty) {
361
+ GRPC_HTTP2_SERVER_DLOG << "Transport closed";
362
+ return Empty{};
363
+ }),
364
+ std::forward<Promise>(promise));
365
+ }
366
+
367
+ // Spawns an infallible promise on the given party.
368
+ template <typename Factory>
369
+ void SpawnInfallible(RefCountedPtr<Party> party, absl::string_view name,
370
+ Factory&& factory) {
371
+ party->Spawn(name, std::forward<Factory>(factory), [](Empty) {});
372
+ }
373
+
374
+ // Spawns an infallible promise on the transport party.
375
+ template <typename Factory>
376
+ void SpawnInfallibleTransportParty(absl::string_view name,
377
+ Factory&& factory) {
378
+ SpawnInfallible(general_party_, name, std::forward<Factory>(factory));
379
+ }
380
+
381
+ // Spawns a promise on the transport party. If the promise returns a non-ok
382
+ // status, it is handled by closing the transport with the corresponding
383
+ // status.
384
+ template <typename Factory>
385
+ void SpawnGuardedTransportParty(absl::string_view name, Factory&& factory) {
386
+ general_party_->Spawn(
387
+ name, std::forward<Factory>(factory),
388
+ [self = RefAsSubclass<Http2ServerTransport>()](absl::Status status) {
389
+ if (!status.ok()) {
390
+ GRPC_UNUSED absl::Status error = self->HandleError(
391
+ /*stream_id=*/std::nullopt, ToHttpOkOrConnError(status));
392
+ }
393
+ });
394
+ }
395
+
396
+ template <typename Factory, typename OnDone>
397
+ void SpawnWithOnDoneTransportParty(absl::string_view name, Factory&& factory,
398
+ OnDone&& on_done) {
399
+ general_party_->Spawn(name, std::forward<Factory>(factory),
400
+ std::forward<OnDone>(on_done));
401
+ }
402
+
403
+ //////////////////////////////////////////////////////////////////////////////
404
+ // Settings
405
+
406
+ void EnforceLatestIncomingSettings();
407
+ auto WaitForSettingsTimeoutOnDone();
408
+ void MaybeSpawnWaitForSettingsTimeout();
409
+
410
+ //////////////////////////////////////////////////////////////////////////////
411
+ // Flow Control and BDP
412
+
413
+ // Processes the flow control action and take necessary steps.
414
+ void ActOnFlowControlAction(const chttp2::FlowControlAction& action,
415
+ Stream* stream);
416
+
417
+ void MaybeGetWindowUpdateFrames(FrameSender& frame_sender);
418
+
419
+ // On receiving an increase in the initial_window size, update the writability
420
+ // for all active streams. This may un-stall streams that are stalled due to
421
+ // lack of flow control tokens. This is needed as the stream flow control
422
+ // tokens are calculated based on the initial window size.
423
+ absl::Status UpdateAllStreamsWritability();
424
+
425
+ auto FlowControlPeriodicUpdateLoop();
426
+
427
+ // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
428
+ void AddPeriodicUpdatePromiseWaker() {
429
+ periodic_updates_waker_ = GetContext<Activity>()->MakeNonOwningWaker();
430
+ }
431
+
432
+ // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
433
+ void WakeupPeriodicUpdatePromise() { periodic_updates_waker_.Wakeup(); }
434
+
435
+ //////////////////////////////////////////////////////////////////////////////
436
+ // Stream List Operations
437
+
438
+ RefCountedPtr<Stream> LookupStream(uint32_t stream_id);
439
+
440
+ void AddToStreamList(RefCountedPtr<Stream> stream);
441
+
442
+ absl::Status MaybeAddStreamToWritableStreamList(
443
+ RefCountedPtr<Stream> stream,
444
+ StreamDataQueue<ServerMetadataHandle>::StreamWritabilityUpdate result);
445
+
446
+ // Returns the next stream id. If the next stream id is not available, it
447
+ // returns std::nullopt. MUST be called from the transport party.
448
+ // absl::StatusOr<uint32_t> NextStreamId();
449
+
450
+ // Returns the next stream id without incrementing it. MUST be called from the
451
+ // transport party.
452
+ // uint32_t PeekNextStreamId() const { return next_stream_id_; }
453
+
454
+ // Returns the last stream id sent by the transport. If no streams were sent,
455
+ // returns 0. MUST be called from the transport party.
456
+ // uint32_t GetLastStreamId() const {
457
+ // const uint32_t next_stream_id = PeekNextStreamId();
458
+ // return (next_stream_id > 1) ? (next_stream_id - 2) : 0;
459
+ // }
460
+
461
+ // Returns the number of active streams. A stream is removed from the `active`
462
+ // list once both client and server agree to close the stream. The count of
463
+ // stream_list_(even though stream list represents streams open for reads)
464
+ // works here because of the following cases where the stream is closed:
465
+ // 1. Reading a RST_STREAM frame: In this case, the stream is immediately
466
+ // closed for reads and writes and removed from the stream_list_
467
+ // (effectively tracking the number of active streams).
468
+ // 2. Reading a Trailing Metadata frame: In this case, the stream MAY be
469
+ // closed for reads and writes immediately which follows the above case. In
470
+ // other cases, the transport either reads RST_STREAM frame from the server
471
+ // (and follows case 1) or sends a half close frame and closes the stream
472
+ // for reads and writes (in the multiplexer loop).
473
+ // 3. Hitting error condition in the transport: In this case, RST_STREAM is
474
+ // is enqueued and the stream is closed for reads immediately. This means
475
+ // we effectively reduce the number of active streams inline (because we
476
+ // remove the stream from the stream_list_). This is fine because the
477
+ // priority logic in list of writable streams ensures that the RST_STREAM
478
+ // frame is given priority over any new streams being created by the
479
+ // client.
480
+ // 4. Application abort: In this case, multiplexer loop will write RST_STREAM
481
+ // frame to the endpoint and close the stream from reads and writes. This
482
+ // then follows the same reasoning as case 1.
483
+ inline uint32_t GetActiveStreamCountLocked() const
484
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_) {
485
+ // TODO(tjagtap) : [PH2][P1] : Check if impl needs to change for server.
486
+ // TODO(tjagtap) : [PH2][P1] : Check if comment needs to change for server.
487
+ return stream_list_.size();
488
+ }
489
+
490
+ //////////////////////////////////////////////////////////////////////////////
491
+ // Stream Operations
492
+
493
+ absl::Status InitializeStream(Stream& stream);
494
+
495
+ // Runs on the call party.
496
+ std::optional<RefCountedPtr<Stream>> MakeStream(
497
+ CallInitiator&& call_initiator, const uint32_t stream_id);
498
+
499
+ Http2Status IncomingStream(ClientMetadataHandle&& metadata,
500
+ uint32_t stream_id);
501
+
502
+ // void BeginCloseStream(RefCountedPtr<Stream> stream,
503
+ // std::optional<uint32_t> reset_stream_error_code,
504
+ // ServerMetadataHandle&& metadata,
505
+ // DebugLocation whence = {});
506
+
507
+ // This function MUST be idempotent.
508
+ void CloseStream(uint32_t stream_id, absl::Status status,
509
+ DebugLocation whence = {}) {
510
+ LOG(INFO) << "Http2ServerTransport::CloseStream for stream id=" << stream_id
511
+ << " status=" << status << " location=" << whence.file() << ":"
512
+ << whence.line();
513
+ // TODO(akshitpatel) : [PH2][P2] : Implement this.
514
+ }
515
+
516
+ // This function MUST be idempotent.
517
+ // void CloseStream(Stream& stream, CloseStreamArgs args,
518
+ // DebugLocation whence = {});
519
+
520
+ //////////////////////////////////////////////////////////////////////////////
521
+ // Ping Keepalive and Goaway
522
+
523
+ // void MaybeSpawnPingTimeout(std::optional<uint64_t> opaque_data);
524
+ // void MaybeSpawnDelayedPing(std::optional<Duration> delayed_ping_wait);
525
+
526
+ auto SendPing(absl::AnyInvocable<void()> on_initiate, bool important) {
527
+ return ping_manager_->RequestPing(std::move(on_initiate), important);
528
+ }
529
+
530
+ auto WaitForPingAck() { return ping_manager_->WaitForPingAck(); }
531
+
532
+ // Duration NextAllowedPingInterval() {
533
+ // MutexLock lock(&transport_mutex_);
534
+ // return (!keepalive_permit_without_calls_ &&
535
+ // GetActiveStreamCountLocked() == 0)
536
+ // ? Duration::Hours(2)
537
+ // : Duration::Seconds(1);
538
+ // }
539
+
540
+ absl::Status AckPing(uint64_t opaque_data);
541
+
542
+ // void MaybeSpawnKeepaliveLoop();
543
+
544
+ // uint32_t GetMaxAllowedStreamId() const;
545
+ // void SetMaxAllowedStreamId(uint32_t max_allowed_stream_id);
546
+
547
+ //////////////////////////////////////////////////////////////////////////////
548
+ // Error Path and Close Path
549
+
550
+ // void MaybeSpawnCloseTransport(Http2Status http2_status,
551
+ // DebugLocation whence = {});
552
+
553
+ // bool CanCloseTransportLocked() const
554
+ // ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_);
555
+
556
+ // This function MUST run on the transport party.
557
+ void CloseTransport();
558
+
559
+ // Handles the error status and returns the corresponding absl status. Absl
560
+ // Status is returned so that the error can be gracefully handled
561
+ // by promise primitives.
562
+ // If the error is a stream error, it closes the stream and returns an ok
563
+ // status. Ok status is returned because the calling transport promise loops
564
+ // should not be cancelled in case of stream errors.
565
+ // If the error is a connection error, it closes the transport and returns the
566
+ // corresponding (failed) absl status.
567
+ absl::Status HandleError(const std::optional<uint32_t> stream_id,
568
+ Http2Status status, DebugLocation whence = {}) {
569
+ // TODO(akshitpatel) : [PH2][P0] : Implement this. And remove the log.
570
+ GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::HandleError for stream id="
571
+ << (stream_id.has_value() ? absl::StrCat(*stream_id)
572
+ : "nullopt")
573
+ << " status=" << status.DebugString()
574
+ << " location=" << whence.file() << ":"
575
+ << whence.line();
576
+ return absl::OkStatus();
577
+ }
578
+
579
+ //////////////////////////////////////////////////////////////////////////////
580
+ // Misc Transport Stuff
581
+
582
+ void ReportDisconnection(grpc_connectivity_state state,
583
+ const absl::Status& status,
584
+ StateWatcher::DisconnectInfo disconnect_info,
585
+ const char* reason);
586
+
587
+ void ReportDisconnectionLocked(grpc_connectivity_state state,
588
+ const absl::Status& status,
589
+ StateWatcher::DisconnectInfo disconnect_info,
590
+ const char* reason)
591
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_);
592
+
593
+ bool SetOnDone(RefCountedPtr<Stream> stream);
594
+
595
+ void ReadChannelArgs(const ChannelArgs& channel_args,
596
+ TransportChannelArgs& args);
597
+
598
+ auto SecurityFrameLoop() {
599
+ GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::SecurityFrameLoop Factory";
600
+ return AssertResultType<Empty>(Loop([this]() {
601
+ return Map(security_frame_handler_->WaitForSecurityFrameSending(),
602
+ [this](Empty) -> LoopCtl<Empty> {
603
+ if (security_frame_handler_->TriggerWriteSecurityFrame()
604
+ .terminate) {
605
+ return Empty{};
606
+ }
607
+
608
+ if (!TriggerWriteCycleOrHandleError()) {
609
+ return Empty{};
610
+ }
611
+ return Continue();
612
+ });
613
+ }));
614
+ }
615
+
616
+ //////////////////////////////////////////////////////////////////////////////
617
+ // Inner Classes and Structs
618
+
619
+ class PingSystemInterfaceImpl : public PingInterface {
620
+ public:
621
+ static std::unique_ptr<PingInterface> Make(Http2ServerTransport* transport);
622
+ absl::Status TriggerWrite() override;
623
+ Promise<absl::Status> PingTimeout() override;
624
+
625
+ private:
626
+ // Holding a raw pointer to transport works because all the promises
627
+ // invoking the methods of this class are invoked while holding a ref to the
628
+ // transport.
629
+ Http2ServerTransport* transport_;
630
+ explicit PingSystemInterfaceImpl(Http2ServerTransport* transport)
631
+ : transport_(transport) {}
632
+ };
633
+
634
+ class KeepAliveInterfaceImpl : public KeepAliveInterface {
635
+ public:
636
+ static std::unique_ptr<KeepAliveInterface> Make(
637
+ Http2ServerTransport* transport);
638
+
639
+ private:
640
+ explicit KeepAliveInterfaceImpl(Http2ServerTransport* transport)
641
+ : transport_(transport) {}
642
+ Promise<absl::Status> SendPingAndWaitForAck() override;
643
+ Promise<absl::Status> OnKeepAliveTimeout() override;
644
+ bool NeedToSendKeepAlivePing() override;
645
+ // Holding a raw pointer to transport works because all the promises
646
+ // invoking the methods of this class are invoked while holding a ref to the
647
+ // transport.
648
+ Http2ServerTransport* transport_;
649
+ };
650
+
651
+ class GoawayInterfaceImpl : public GoawayInterface {
652
+ public:
653
+ static std::unique_ptr<GoawayInterface> Make(
654
+ Http2ServerTransport* transport);
655
+
656
+ Promise<absl::Status> SendPingAndWaitForAck() override {
657
+ return transport_->ping_manager_->RequestPing(/*on_initiate=*/[] {},
658
+ /*important=*/true);
659
+ }
660
+
661
+ absl::Status TriggerWriteCycle() override {
662
+ return transport_->TriggerWriteCycle();
663
+ }
664
+ uint32_t GetLastAcceptedStreamId() override;
665
+
666
+ private:
667
+ explicit GoawayInterfaceImpl(Http2ServerTransport* transport)
668
+ : transport_(transport) {}
669
+ // Holding a raw pointer to transport works because all the promises
670
+ // invoking the methods of this class are invoked while holding a ref to the
671
+ // transport.
672
+ Http2ServerTransport* transport_;
673
+ };
674
+
675
+ //////////////////////////////////////////////////////////////////////////////
676
+ // All Data Members
677
+
678
+ RefCountedPtr<UnstartedCallDestination> call_destination_;
679
+
680
+ // TODO(akshitpatel) : [PH2][P0] : Remove this when write path is ready.
681
+ MpscReceiver<Http2Frame> outgoing_frames_;
682
+
683
+ // TODO(tjagtap) : [PH2][P0] : These are copied as is from the client
684
+ // transport. Take a look if modifications are needed.
685
+
686
+ RefCountedPtr<Party> general_party_; // Refer Gemini.md for party slot usage
687
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine_;
688
+
689
+ PromiseEndpoint endpoint_;
690
+ RefCountedPtr<SettingsPromiseManager> settings_;
691
+
692
+ Mutex transport_mutex_;
693
+
694
+ absl::flat_hash_map<uint32_t, RefCountedPtr<Stream>> stream_list_
695
+ ABSL_GUARDED_BY(transport_mutex_);
696
+
697
+ GRPC_UNUSED uint32_t next_stream_id_;
698
+ HPackCompressor encoder_;
699
+ bool is_transport_closed_ ABSL_GUARDED_BY(transport_mutex_) = false;
700
+ Latch<void> transport_closed_latch_;
701
+ grpc_closure* on_close_callback_;
702
+
703
+ ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(transport_mutex_){
704
+ "http2_server", GRPC_CHANNEL_READY};
705
+
706
+ RefCountedPtr<StateWatcher> watcher_ ABSL_GUARDED_BY(transport_mutex_);
707
+
708
+ bool should_reset_ping_clock_;
709
+ ReadContext read_context_;
710
+
711
+ // Transport wide write context. This is used to track the state of the
712
+ // transport during write cycles.
713
+ TransportWriteContext transport_write_context_;
714
+
715
+ // Tracks the max allowed stream id. Currently this is only set on receiving a
716
+ // graceful GOAWAY frame.
717
+ GRPC_UNUSED uint32_t max_allowed_stream_id_ = RFC9113::kMaxStreamId31Bit;
718
+
719
+ // Duration between two consecutive keepalive pings.
720
+ Duration keepalive_time_;
721
+ GRPC_UNUSED bool test_only_ack_pings_;
722
+ std::optional<PingManager> ping_manager_;
723
+ std::optional<KeepaliveManager> keepalive_manager_;
724
+
725
+ bool keepalive_permit_without_calls_;
726
+
727
+ GoawayManager goaway_manager_;
728
+
729
+ MemoryOwner memory_owner_;
730
+ chttp2::TransportFlowControl flow_control_;
731
+ WritableStreams<RefCountedPtr<Stream>> writable_stream_list_;
732
+
733
+ RefCountedPtr<SecurityFrameHandler> security_frame_handler_;
734
+ std::shared_ptr<PromiseHttp2ZTraceCollector> ztrace_collector_;
735
+
736
+ // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
737
+ Waker periodic_updates_waker_;
738
+ };
739
+
740
+ // TODO(tjagtap) : [PH2][P1] : Handle the case where a Server receives two
741
+ // header frames. Which means that the client sent trailing metadata. While we
742
+ // dont expect a gRPC C++ peer to send trailing metadata, not handling it might
743
+ // break interop tests and genuine interop cases.
744
+
745
+ } // namespace http2
746
+ } // namespace grpc_core
747
+
748
+ #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SERVER_TRANSPORT_H