grpc 1.46.3 → 1.53.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1803) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +419 -241
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/endpoint_config.h +11 -5
  7. data/include/grpc/event_engine/event_engine.h +129 -39
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  9. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  10. data/include/grpc/event_engine/memory_allocator.h +1 -16
  11. data/include/grpc/event_engine/port.h +1 -1
  12. data/include/grpc/event_engine/slice.h +306 -0
  13. data/include/grpc/event_engine/slice_buffer.h +159 -0
  14. data/include/grpc/fork.h +25 -1
  15. data/include/grpc/grpc.h +4 -14
  16. data/include/grpc/grpc_posix.h +1 -1
  17. data/include/grpc/grpc_security.h +11 -0
  18. data/include/grpc/impl/codegen/atm.h +3 -71
  19. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
  20. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
  21. data/include/grpc/impl/codegen/atm_windows.h +3 -108
  22. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  23. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  24. data/include/grpc/impl/codegen/compression_types.h +5 -83
  25. data/include/grpc/impl/codegen/connectivity_state.h +5 -21
  26. data/include/grpc/impl/codegen/fork.h +4 -25
  27. data/include/grpc/impl/codegen/gpr_types.h +4 -35
  28. data/include/grpc/impl/codegen/grpc_types.h +5 -791
  29. data/include/grpc/impl/codegen/log.h +3 -86
  30. data/include/grpc/impl/codegen/port_platform.h +3 -699
  31. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  32. data/include/grpc/impl/codegen/slice.h +4 -107
  33. data/include/grpc/impl/codegen/status.h +4 -131
  34. data/include/grpc/impl/codegen/sync.h +3 -42
  35. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  36. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  37. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  38. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  39. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  40. data/include/grpc/impl/compression_types.h +109 -0
  41. data/include/grpc/impl/connectivity_state.h +47 -0
  42. data/include/grpc/impl/grpc_types.h +836 -0
  43. data/include/grpc/impl/propagation_bits.h +54 -0
  44. data/include/grpc/impl/slice_type.h +112 -0
  45. data/include/grpc/load_reporting.h +1 -1
  46. data/include/grpc/module.modulemap +5 -1
  47. data/include/grpc/slice.h +1 -1
  48. data/include/grpc/status.h +131 -1
  49. data/include/grpc/support/atm.h +70 -1
  50. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  51. data/include/grpc/support/atm_gcc_sync.h +58 -1
  52. data/include/grpc/support/atm_windows.h +105 -1
  53. data/include/grpc/support/log.h +87 -1
  54. data/include/grpc/support/log_windows.h +1 -1
  55. data/include/grpc/support/port_platform.h +767 -1
  56. data/include/grpc/support/string_util.h +1 -1
  57. data/include/grpc/support/sync.h +35 -2
  58. data/include/grpc/support/sync_abseil.h +11 -1
  59. data/include/grpc/support/sync_custom.h +13 -1
  60. data/include/grpc/support/sync_generic.h +24 -1
  61. data/include/grpc/support/sync_posix.h +27 -1
  62. data/include/grpc/support/sync_windows.h +15 -1
  63. data/include/grpc/support/time.h +31 -6
  64. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
  65. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  66. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  67. data/src/core/ext/filters/census/grpc_context.cc +19 -17
  68. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +67 -61
  69. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +26 -6
  70. data/src/core/ext/filters/channel_idle/idle_filter_state.h +6 -4
  71. data/src/core/ext/filters/client_channel/backend_metric.cc +19 -12
  72. data/src/core/ext/filters/client_channel/backend_metric.h +21 -11
  73. data/src/core/ext/filters/client_channel/backup_poller.cc +34 -34
  74. data/src/core/ext/filters/client_channel/backup_poller.h +26 -28
  75. data/src/core/ext/filters/client_channel/channel_connectivity.cc +89 -44
  76. data/src/core/ext/filters/client_channel/client_channel.cc +401 -451
  77. data/src/core/ext/filters/client_channel/client_channel.h +68 -26
  78. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -23
  79. data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -23
  80. data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -43
  81. data/src/core/ext/filters/client_channel/client_channel_factory.h +11 -11
  82. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +22 -47
  83. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  84. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +33 -27
  85. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  86. data/src/core/ext/filters/client_channel/config_selector.h +29 -23
  87. data/src/core/ext/filters/client_channel/connector.h +19 -10
  88. data/src/core/ext/filters/client_channel/dynamic_filters.cc +40 -54
  89. data/src/core/ext/filters/client_channel/dynamic_filters.h +20 -11
  90. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  91. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +24 -21
  92. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -4
  93. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -3
  94. data/src/core/ext/filters/client_channel/http_proxy.cc +100 -112
  95. data/src/core/ext/filters/client_channel/http_proxy.h +38 -31
  96. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  97. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +8 -5
  98. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +4 -3
  99. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  100. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +37 -16
  101. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +18 -13
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +71 -131
  103. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
  104. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +410 -375
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +9 -7
  108. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  109. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +27 -22
  110. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +28 -19
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +26 -25
  112. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +338 -0
  113. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
  117. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +174 -180
  118. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +366 -407
  119. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +491 -405
  120. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -9
  121. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +619 -634
  122. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +261 -234
  123. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +165 -143
  124. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
  125. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
  127. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +223 -220
  128. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +214 -153
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +19 -15
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +178 -256
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +199 -210
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +382 -368
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
  137. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
  138. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  139. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +22 -21
  140. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +34 -19
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +531 -163
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +50 -44
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +31 -30
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +89 -84
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +300 -209
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +82 -61
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  148. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +20 -19
  149. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  150. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +22 -22
  151. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +54 -22
  152. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +21 -34
  153. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +19 -5
  154. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +135 -63
  155. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +136 -68
  156. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +29 -14
  157. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +21 -27
  158. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +368 -305
  159. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
  160. data/src/core/ext/filters/client_channel/retry_filter.cc +166 -163
  161. data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
  162. data/src/core/ext/filters/client_channel/retry_service_config.cc +197 -229
  163. data/src/core/ext/filters/client_channel/retry_service_config.h +29 -26
  164. data/src/core/ext/filters/client_channel/retry_throttle.cc +28 -37
  165. data/src/core/ext/filters/client_channel/retry_throttle.h +36 -29
  166. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +34 -17
  167. data/src/core/ext/filters/client_channel/subchannel.cc +332 -384
  168. data/src/core/ext/filters/client_channel/subchannel.h +112 -82
  169. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  170. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
  171. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +41 -47
  172. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +34 -108
  173. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +20 -12
  174. data/src/core/ext/filters/deadline/deadline_filter.cc +94 -76
  175. data/src/core/ext/filters/deadline/deadline_filter.h +14 -12
  176. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +44 -22
  177. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +20 -11
  178. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  179. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +34 -13
  180. data/src/core/ext/filters/http/client/http_client_filter.cc +76 -54
  181. data/src/core/ext/filters/http/client/http_client_filter.h +36 -23
  182. data/src/core/ext/filters/http/client_authority_filter.cc +33 -38
  183. data/src/core/ext/filters/http/client_authority_filter.h +27 -24
  184. data/src/core/ext/filters/http/http_filters_plugin.cc +46 -55
  185. data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
  186. data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
  187. data/src/core/ext/filters/http/server/http_server_filter.cc +111 -271
  188. data/src/core/ext/filters/http/server/http_server_filter.h +58 -24
  189. data/src/core/ext/filters/message_size/message_size_filter.cc +117 -137
  190. data/src/core/ext/filters/message_size/message_size_filter.h +34 -17
  191. data/src/core/ext/filters/rbac/rbac_filter.cc +29 -16
  192. data/src/core/ext/filters/rbac/rbac_filter.h +11 -3
  193. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +736 -523
  194. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +18 -7
  195. data/src/core/ext/filters/server_config_selector/server_config_selector.h +20 -8
  196. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +28 -12
  197. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
  198. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -0
  199. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  200. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  201. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  202. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  203. data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
  204. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +185 -241
  205. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
  206. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +204 -211
  207. data/src/core/ext/transport/chttp2/server/chttp2_server.h +26 -26
  208. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +24 -24
  209. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +35 -34
  210. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +43 -38
  211. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +35 -31
  212. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +801 -1067
  213. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +28 -23
  214. data/src/core/ext/transport/chttp2/transport/context_list.cc +23 -19
  215. data/src/core/ext/transport/chttp2/transport/context_list.h +32 -29
  216. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  217. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  218. data/src/core/ext/transport/chttp2/transport/flow_control.cc +350 -300
  219. data/src/core/ext/transport/chttp2/transport/flow_control.h +248 -325
  220. data/src/core/ext/transport/chttp2/transport/frame.h +22 -26
  221. data/src/core/ext/transport/chttp2/transport/frame_data.cc +85 -234
  222. data/src/core/ext/transport/chttp2/transport/frame_data.h +38 -61
  223. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +41 -36
  224. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +24 -22
  225. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +31 -25
  226. data/src/core/ext/transport/chttp2/transport/frame_ping.h +25 -22
  227. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +35 -26
  228. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +24 -21
  229. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +44 -77
  230. data/src/core/ext/transport/chttp2/transport/frame_settings.h +27 -23
  231. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +34 -33
  232. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +24 -21
  233. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
  234. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +221 -372
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +338 -158
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +6 -1
  237. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +16 -5
  238. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +516 -751
  239. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +38 -27
  240. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +86 -76
  241. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +79 -49
  242. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  243. data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -38
  244. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  245. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  246. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  247. data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
  248. data/src/core/ext/transport/chttp2/transport/internal.h +248 -296
  249. data/src/core/ext/transport/chttp2/transport/parsing.cc +363 -132
  250. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +30 -30
  251. data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
  252. data/src/core/ext/transport/chttp2/transport/stream_map.h +34 -33
  253. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  254. data/src/core/ext/transport/chttp2/transport/varint.h +39 -34
  255. data/src/core/ext/transport/chttp2/transport/writing.cc +121 -94
  256. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -18
  257. data/src/core/ext/transport/inproc/inproc_transport.cc +227 -274
  258. data/src/core/ext/transport/inproc/inproc_transport.h +23 -21
  259. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  260. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  261. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +6 -5
  262. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +33 -8
  263. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  264. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  265. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
  266. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
  267. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  268. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  269. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  270. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  271. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  272. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  273. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  274. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  275. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  276. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  277. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  278. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  279. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  280. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  281. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  282. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  283. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +25 -19
  284. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +168 -34
  285. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  286. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  287. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -43
  288. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +195 -116
  289. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  290. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  291. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  293. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  294. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +35 -12
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +179 -14
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +23 -20
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +137 -69
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +23 -21
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +132 -44
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +67 -2
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  327. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  328. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  329. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +15 -9
  330. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +73 -18
  331. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  332. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  333. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  334. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  335. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +39 -13
  336. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +194 -15
  337. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  338. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  339. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
  340. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +28 -2
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  343. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  344. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  345. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  346. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  347. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  348. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  349. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +26 -11
  350. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +124 -14
  351. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +19 -15
  352. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +78 -69
  353. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +168 -82
  354. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +887 -166
  355. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  356. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  357. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  358. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  359. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
  360. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +15 -2
  361. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  362. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  363. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +27 -14
  381. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  382. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  383. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  384. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  385. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  386. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  387. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  389. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
  390. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +29 -2
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +38 -27
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +207 -52
  395. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  396. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  397. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
  398. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
  399. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
  400. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
  402. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
  403. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  404. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  405. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  406. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  407. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  408. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  409. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +13 -11
  410. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +73 -23
  411. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  412. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  413. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  414. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  415. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +133 -16
  416. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +656 -12
  417. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  418. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  419. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  420. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  421. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  422. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  423. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  424. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  425. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
  426. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
  427. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  428. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  429. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  430. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  431. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  444. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  445. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  446. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  447. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  448. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  449. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  450. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  451. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  452. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  453. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  454. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  455. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  456. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  457. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  458. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  459. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  460. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
  461. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  462. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  463. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  464. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  465. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  466. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  467. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  468. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  469. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  470. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  471. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  472. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  473. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  474. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  475. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  476. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  477. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  478. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  479. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  480. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  481. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  482. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  483. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  484. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  485. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  486. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  487. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  488. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  489. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  490. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  491. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  492. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  493. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  494. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  495. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  496. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  497. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  498. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  499. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  500. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  501. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  502. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  503. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  504. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  505. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  506. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  507. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  508. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  509. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  510. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  511. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  512. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  513. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  514. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  515. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  516. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  517. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  518. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  519. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  520. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  521. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  522. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  523. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  524. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  525. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  526. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  527. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  528. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  529. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  530. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  531. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  532. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  533. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  534. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  535. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  536. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  537. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  538. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -2
  539. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
  540. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
  541. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  542. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  543. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  544. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  545. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  546. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  547. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  548. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  549. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  550. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  551. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  552. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  553. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  554. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  555. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  556. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  557. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  558. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  559. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  560. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  561. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -2
  562. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  563. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
  564. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  565. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  566. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
  567. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  568. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  569. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  570. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +199 -187
  571. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -222
  572. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +187 -183
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +190 -186
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
  580. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  581. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
  582. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +164 -137
  583. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
  585. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  586. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -129
  587. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -74
  589. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +2 -2
  590. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +740 -667
  591. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +20 -0
  592. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  593. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
  595. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  598. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
  599. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  600. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
  601. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  602. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  603. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +485 -467
  604. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  605. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  606. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  607. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
  608. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +156 -84
  609. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  610. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  611. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  612. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  613. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  614. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  615. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  616. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  617. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  618. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
  619. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  620. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  621. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  623. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  625. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  627. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  628. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  629. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  630. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  631. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  632. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  633. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  634. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  635. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  636. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  637. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  638. data/src/core/ext/xds/certificate_provider_store.cc +69 -5
  639. data/src/core/ext/xds/certificate_provider_store.h +22 -5
  640. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +17 -10
  641. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +12 -4
  642. data/src/core/ext/xds/upb_utils.h +3 -25
  643. data/src/core/ext/xds/xds_api.cc +90 -196
  644. data/src/core/ext/xds/xds_api.h +41 -39
  645. data/src/core/ext/xds/xds_bootstrap.cc +5 -537
  646. data/src/core/ext/xds/xds_bootstrap.h +41 -96
  647. data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
  648. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  649. data/src/core/ext/xds/xds_certificate_provider.cc +35 -26
  650. data/src/core/ext/xds/xds_certificate_provider.h +29 -5
  651. data/src/core/ext/xds/xds_channel_args.h +3 -3
  652. data/src/core/ext/xds/xds_channel_stack_modifier.cc +17 -7
  653. data/src/core/ext/xds/xds_channel_stack_modifier.h +16 -4
  654. data/src/core/ext/xds/xds_client.cc +849 -1316
  655. data/src/core/ext/xds/xds_client.h +57 -61
  656. data/src/core/ext/xds/xds_client_grpc.cc +235 -0
  657. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  658. data/src/core/ext/xds/xds_client_stats.cc +24 -25
  659. data/src/core/ext/xds/xds_client_stats.h +26 -24
  660. data/src/core/ext/xds/xds_cluster.cc +505 -247
  661. data/src/core/ext/xds/xds_cluster.h +69 -40
  662. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +67 -77
  663. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +47 -29
  664. data/src/core/ext/xds/xds_common_types.cc +238 -123
  665. data/src/core/ext/xds/xds_common_types.h +29 -16
  666. data/src/core/ext/xds/xds_endpoint.cc +265 -162
  667. data/src/core/ext/xds/xds_endpoint.h +19 -15
  668. data/src/core/ext/xds/xds_health_status.cc +80 -0
  669. data/src/core/ext/xds/xds_health_status.h +109 -0
  670. data/src/core/ext/xds/xds_http_fault_filter.cc +67 -58
  671. data/src/core/ext/xds/xds_http_fault_filter.h +19 -25
  672. data/src/core/ext/xds/xds_http_filters.cc +70 -71
  673. data/src/core/ext/xds/xds_http_filters.h +73 -25
  674. data/src/core/ext/xds/xds_http_rbac_filter.cc +168 -225
  675. data/src/core/ext/xds/xds_http_rbac_filter.h +22 -18
  676. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  677. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  678. data/src/core/ext/xds/xds_lb_policy_registry.cc +334 -0
  679. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  680. data/src/core/ext/xds/xds_listener.cc +573 -481
  681. data/src/core/ext/xds/xds_listener.h +57 -51
  682. data/src/core/ext/xds/xds_resource_type.h +28 -22
  683. data/src/core/ext/xds/xds_resource_type_impl.h +18 -17
  684. data/src/core/ext/xds/xds_route_config.cc +592 -570
  685. data/src/core/ext/xds/xds_route_config.h +74 -40
  686. data/src/core/ext/xds/xds_routing.cc +21 -7
  687. data/src/core/ext/xds/xds_routing.h +17 -12
  688. data/src/core/ext/xds/xds_server_config_fetcher.cc +227 -178
  689. data/src/core/ext/xds/xds_transport.h +86 -0
  690. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  691. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  692. data/src/core/lib/address_utils/parse_address.cc +52 -52
  693. data/src/core/lib/address_utils/parse_address.h +46 -42
  694. data/src/core/lib/address_utils/sockaddr_utils.cc +90 -54
  695. data/src/core/lib/address_utils/sockaddr_utils.h +45 -40
  696. data/src/core/lib/avl/avl.h +57 -33
  697. data/src/core/lib/backoff/backoff.cc +19 -21
  698. data/src/core/lib/backoff/backoff.h +21 -21
  699. data/src/core/lib/backoff/random_early_detection.cc +31 -0
  700. data/src/core/lib/backoff/random_early_detection.h +59 -0
  701. data/src/core/lib/channel/call_finalization.h +6 -4
  702. data/src/core/lib/channel/call_tracer.h +23 -8
  703. data/src/core/lib/channel/channel_args.cc +149 -61
  704. data/src/core/lib/channel/channel_args.h +308 -104
  705. data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
  706. data/src/core/lib/channel/channel_args_preconditioning.h +6 -5
  707. data/src/core/lib/channel/channel_fwd.h +26 -0
  708. data/src/core/lib/channel/channel_stack.cc +92 -52
  709. data/src/core/lib/channel/channel_stack.h +184 -135
  710. data/src/core/lib/channel/channel_stack_builder.cc +26 -39
  711. data/src/core/lib/channel/channel_stack_builder.h +33 -40
  712. data/src/core/lib/channel/channel_stack_builder_impl.cc +84 -60
  713. data/src/core/lib/channel/channel_stack_builder_impl.h +9 -9
  714. data/src/core/lib/channel/channel_trace.cc +29 -36
  715. data/src/core/lib/channel/channel_trace.h +27 -24
  716. data/src/core/lib/channel/channelz.cc +50 -65
  717. data/src/core/lib/channel/channelz.h +50 -33
  718. data/src/core/lib/channel/channelz_registry.cc +28 -36
  719. data/src/core/lib/channel/channelz_registry.h +31 -30
  720. data/src/core/lib/channel/connected_channel.cc +1267 -78
  721. data/src/core/lib/channel/connected_channel.h +21 -23
  722. data/src/core/lib/channel/context.h +25 -21
  723. data/src/core/lib/channel/promise_based_filter.cc +1896 -377
  724. data/src/core/lib/channel/promise_based_filter.h +592 -92
  725. data/src/core/lib/channel/status_util.cc +64 -17
  726. data/src/core/lib/channel/status_util.h +38 -24
  727. data/src/core/lib/compression/compression.cc +24 -19
  728. data/src/core/lib/compression/compression_internal.cc +88 -63
  729. data/src/core/lib/compression/compression_internal.h +28 -27
  730. data/src/core/lib/compression/message_compress.cc +28 -26
  731. data/src/core/lib/compression/message_compress.h +28 -29
  732. data/src/core/lib/config/core_configuration.cc +8 -1
  733. data/src/core/lib/config/core_configuration.h +86 -39
  734. data/src/core/lib/debug/event_log.cc +88 -0
  735. data/src/core/lib/debug/event_log.h +81 -0
  736. data/src/core/lib/debug/histogram_view.cc +69 -0
  737. data/src/core/lib/debug/histogram_view.h +37 -0
  738. data/src/core/lib/debug/stats.cc +48 -152
  739. data/src/core/lib/debug/stats.h +50 -57
  740. data/src/core/lib/debug/stats_data.cc +302 -645
  741. data/src/core/lib/debug/stats_data.h +293 -545
  742. data/src/core/lib/debug/trace.cc +18 -20
  743. data/src/core/lib/debug/trace.h +27 -48
  744. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +16 -17
  745. data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -9
  746. data/src/core/lib/event_engine/common_closures.h +71 -0
  747. data/src/core/lib/event_engine/default_event_engine.cc +99 -0
  748. data/src/core/lib/event_engine/default_event_engine.h +73 -0
  749. data/src/core/lib/event_engine/default_event_engine_factory.cc +24 -3
  750. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine_factory.h} +6 -9
  751. data/src/core/lib/event_engine/event_engine.cc +3 -30
  752. data/src/core/lib/event_engine/executor/executor.h +38 -0
  753. data/src/core/lib/event_engine/forkable.cc +106 -0
  754. data/src/core/lib/event_engine/forkable.h +61 -0
  755. data/src/core/lib/event_engine/handle_containers.h +74 -0
  756. data/src/core/lib/event_engine/memory_allocator.cc +11 -3
  757. data/src/core/lib/event_engine/poller.h +62 -0
  758. data/src/core/lib/event_engine/posix.h +158 -0
  759. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
  760. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
  761. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -0
  762. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  763. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  764. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  765. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  766. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  767. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  768. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  769. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  770. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1305 -0
  771. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
  772. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
  773. data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
  774. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  775. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +289 -0
  776. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
  777. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
  778. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  779. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  780. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  781. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  782. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  783. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  784. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  785. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  786. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  787. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  788. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  789. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  790. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  791. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  792. data/src/core/lib/{iomgr/event_engine/promise.h → event_engine/posix_engine/wakeup_fd_pipe.h} +19 -25
  793. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  794. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  795. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  796. data/src/core/lib/event_engine/resolved_address.cc +23 -2
  797. data/src/core/lib/{iomgr/event_engine → event_engine}/resolved_address_internal.h +5 -8
  798. data/src/core/lib/event_engine/shim.cc +56 -0
  799. data/src/core/lib/event_engine/shim.h +33 -0
  800. data/src/core/lib/event_engine/slice.cc +103 -0
  801. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  802. data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
  803. data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
  804. data/src/core/lib/event_engine/thread_local.cc +29 -0
  805. data/src/core/lib/event_engine/thread_local.h +32 -0
  806. data/src/core/lib/event_engine/thread_pool.cc +253 -0
  807. data/src/core/lib/event_engine/thread_pool.h +141 -0
  808. data/src/core/lib/event_engine/time_util.cc +30 -0
  809. data/src/core/lib/event_engine/time_util.h +32 -0
  810. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.cc} +9 -17
  811. data/src/core/lib/event_engine/trace.h +43 -0
  812. data/src/core/lib/event_engine/utils.cc +44 -0
  813. data/src/core/lib/event_engine/utils.h +44 -0
  814. data/src/core/lib/event_engine/windows/iocp.cc +140 -0
  815. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  816. data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
  817. data/src/core/lib/event_engine/windows/win_socket.h +129 -0
  818. data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
  819. data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
  820. data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
  821. data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
  822. data/src/core/lib/experiments/config.cc +161 -0
  823. data/src/core/lib/experiments/config.h +53 -0
  824. data/src/core/lib/experiments/experiments.cc +81 -0
  825. data/src/core/lib/experiments/experiments.h +117 -0
  826. data/src/core/lib/gpr/alloc.cc +19 -25
  827. data/src/core/lib/gpr/alloc.h +20 -20
  828. data/src/core/lib/gpr/atm.cc +17 -17
  829. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  830. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  831. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  832. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  833. data/src/core/lib/gpr/log.cc +30 -17
  834. data/src/core/lib/gpr/log_android.cc +22 -20
  835. data/src/core/lib/gpr/log_linux.cc +24 -24
  836. data/src/core/lib/gpr/log_posix.cc +20 -19
  837. data/src/core/lib/gpr/log_windows.cc +25 -25
  838. data/src/core/lib/gpr/spinlock.h +20 -20
  839. data/src/core/lib/gpr/string.cc +25 -24
  840. data/src/core/lib/gpr/string.h +61 -61
  841. data/src/core/lib/gpr/string_posix.cc +24 -24
  842. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  843. data/src/core/lib/gpr/string_windows.cc +24 -24
  844. data/src/core/lib/gpr/sync.cc +25 -25
  845. data/src/core/lib/gpr/sync_abseil.cc +36 -40
  846. data/src/core/lib/gpr/sync_posix.cc +22 -34
  847. data/src/core/lib/gpr/sync_windows.cc +29 -27
  848. data/src/core/lib/gpr/time.cc +34 -30
  849. data/src/core/lib/gpr/time_posix.cc +41 -45
  850. data/src/core/lib/gpr/time_precise.cc +22 -22
  851. data/src/core/lib/gpr/time_precise.h +21 -22
  852. data/src/core/lib/gpr/time_windows.cc +35 -29
  853. data/src/core/lib/gpr/tmpfile.h +24 -24
  854. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  855. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  856. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  857. data/src/core/lib/gpr/useful.h +83 -30
  858. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  859. data/src/core/lib/gprpp/atomic_utils.h +20 -20
  860. data/src/core/lib/gprpp/bitset.h +35 -17
  861. data/src/core/lib/gprpp/chunked_vector.h +7 -3
  862. data/src/core/lib/gprpp/construct_destruct.h +4 -3
  863. data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
  864. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
  865. data/src/core/lib/gprpp/crash.h +34 -0
  866. data/src/core/lib/gprpp/debug_location.h +60 -31
  867. data/src/core/lib/gprpp/dual_ref_counted.h +4 -7
  868. data/src/core/lib/gprpp/env.h +53 -0
  869. data/src/core/lib/gprpp/env_linux.cc +80 -0
  870. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc → lib/gprpp/env_posix.cc} +25 -9
  871. data/src/core/lib/gprpp/env_windows.cc +56 -0
  872. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  873. data/src/core/lib/gprpp/examine_stack.h +21 -22
  874. data/src/core/lib/gprpp/fork.cc +58 -53
  875. data/src/core/lib/gprpp/fork.h +29 -35
  876. data/src/core/lib/gprpp/global_config.h +22 -24
  877. data/src/core/lib/gprpp/global_config_custom.h +20 -20
  878. data/src/core/lib/gprpp/global_config_env.cc +28 -25
  879. data/src/core/lib/gprpp/global_config_env.h +29 -27
  880. data/src/core/lib/gprpp/global_config_generic.h +21 -25
  881. data/src/core/lib/gprpp/host_port.cc +30 -26
  882. data/src/core/lib/gprpp/host_port.h +32 -31
  883. data/src/core/lib/gprpp/load_file.cc +75 -0
  884. data/src/core/lib/gprpp/load_file.h +33 -0
  885. data/src/core/lib/gprpp/manual_constructor.h +21 -89
  886. data/src/core/lib/gprpp/match.h +5 -3
  887. data/src/core/lib/gprpp/memory.h +22 -26
  888. data/src/core/lib/gprpp/mpscq.cc +17 -17
  889. data/src/core/lib/gprpp/mpscq.h +21 -21
  890. data/src/core/lib/gprpp/no_destruct.h +95 -0
  891. data/src/core/lib/gprpp/notification.h +67 -0
  892. data/src/core/lib/gprpp/orphanable.h +22 -25
  893. data/src/core/lib/gprpp/overload.h +3 -3
  894. data/src/core/lib/gprpp/packed_table.h +40 -0
  895. data/src/core/lib/gprpp/per_cpu.h +46 -0
  896. data/src/core/lib/gprpp/ref_counted.h +22 -24
  897. data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
  898. data/src/core/lib/gprpp/single_set_ptr.h +3 -3
  899. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  900. data/src/core/lib/gprpp/stat.h +3 -5
  901. data/src/core/lib/gprpp/stat_posix.cc +10 -4
  902. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  903. data/src/core/lib/gprpp/status_helper.cc +55 -35
  904. data/src/core/lib/gprpp/status_helper.h +13 -5
  905. data/src/core/lib/gprpp/strerror.cc +43 -0
  906. data/src/core/lib/gprpp/strerror.h +29 -0
  907. data/src/core/lib/gprpp/sync.h +26 -24
  908. data/src/core/lib/gprpp/table.h +22 -4
  909. data/src/core/lib/gprpp/tchar.cc +49 -0
  910. data/src/core/lib/gprpp/tchar.h +33 -0
  911. data/src/core/lib/gprpp/thd.h +25 -28
  912. data/src/core/lib/gprpp/thd_posix.cc +33 -32
  913. data/src/core/lib/gprpp/thd_windows.cc +28 -26
  914. data/src/core/lib/gprpp/time.cc +52 -9
  915. data/src/core/lib/gprpp/time.h +78 -4
  916. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  917. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  918. data/src/core/lib/gprpp/time_util.cc +4 -0
  919. data/src/core/lib/gprpp/time_util.h +3 -3
  920. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  921. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  922. data/src/core/lib/gprpp/validation_errors.h +127 -0
  923. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  924. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
  925. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  926. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  927. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  928. data/src/core/lib/http/format_request.cc +53 -22
  929. data/src/core/lib/http/format_request.h +23 -21
  930. data/src/core/lib/http/httpcli.cc +139 -141
  931. data/src/core/lib/http/httpcli.h +86 -38
  932. data/src/core/lib/http/httpcli_security_connector.cc +50 -42
  933. data/src/core/lib/http/httpcli_ssl_credentials.h +6 -4
  934. data/src/core/lib/http/parser.cc +78 -90
  935. data/src/core/lib/http/parser.h +38 -35
  936. data/src/core/lib/iomgr/block_annotate.h +23 -23
  937. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  938. data/src/core/lib/iomgr/buffer_list.h +123 -101
  939. data/src/core/lib/iomgr/call_combiner.cc +32 -64
  940. data/src/core/lib/iomgr/call_combiner.h +24 -25
  941. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  942. data/src/core/lib/iomgr/cfstream_handle.h +25 -25
  943. data/src/core/lib/iomgr/{event_engine/pollset.h → closure.cc} +9 -7
  944. data/src/core/lib/iomgr/closure.h +95 -58
  945. data/src/core/lib/iomgr/combiner.cc +20 -39
  946. data/src/core/lib/iomgr/combiner.h +20 -20
  947. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  948. data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
  949. data/src/core/lib/iomgr/endpoint.cc +21 -21
  950. data/src/core/lib/iomgr/endpoint.h +53 -51
  951. data/src/core/lib/iomgr/endpoint_cfstream.cc +51 -47
  952. data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
  953. data/src/core/lib/iomgr/endpoint_pair.h +22 -22
  954. data/src/core/lib/iomgr/endpoint_pair_posix.cc +36 -29
  955. data/src/core/lib/iomgr/endpoint_pair_windows.cc +31 -22
  956. data/src/core/lib/iomgr/error.cc +51 -834
  957. data/src/core/lib/iomgr/error.h +45 -317
  958. data/src/core/lib/iomgr/error_cfstream.cc +18 -23
  959. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  960. data/src/core/lib/iomgr/ev_apple.cc +21 -21
  961. data/src/core/lib/iomgr/ev_apple.h +21 -21
  962. data/src/core/lib/iomgr/ev_epoll1_linux.cc +263 -248
  963. data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
  964. data/src/core/lib/iomgr/ev_poll_posix.cc +296 -271
  965. data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
  966. data/src/core/lib/iomgr/ev_posix.cc +88 -121
  967. data/src/core/lib/iomgr/ev_posix.h +93 -87
  968. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  969. data/src/core/lib/iomgr/{event_engine → event_engine_shims}/closure.cc +15 -30
  970. data/src/core/lib/iomgr/{event_engine → event_engine_shims}/closure.h +10 -13
  971. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
  972. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  973. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  974. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  975. data/src/core/lib/iomgr/exec_ctx.cc +34 -56
  976. data/src/core/lib/iomgr/exec_ctx.h +152 -177
  977. data/src/core/lib/iomgr/executor.cc +21 -31
  978. data/src/core/lib/iomgr/executor.h +27 -30
  979. data/src/core/lib/iomgr/fork_posix.cc +30 -27
  980. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  981. data/src/core/lib/iomgr/gethostname.h +20 -20
  982. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  983. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  984. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  985. data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
  986. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  987. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  988. data/src/core/lib/iomgr/internal_errqueue.cc +41 -48
  989. data/src/core/lib/iomgr/internal_errqueue.h +84 -89
  990. data/src/core/lib/iomgr/iocp_windows.cc +23 -23
  991. data/src/core/lib/iomgr/iocp_windows.h +21 -21
  992. data/src/core/lib/iomgr/iomgr.cc +25 -20
  993. data/src/core/lib/iomgr/iomgr.h +35 -35
  994. data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
  995. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  996. data/src/core/lib/iomgr/iomgr_internal.h +28 -28
  997. data/src/core/lib/iomgr/iomgr_posix.cc +21 -20
  998. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -19
  999. data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
  1000. data/src/core/lib/iomgr/load_file.cc +24 -27
  1001. data/src/core/lib/iomgr/load_file.h +22 -22
  1002. data/src/core/lib/iomgr/lockfree_event.cc +114 -131
  1003. data/src/core/lib/iomgr/lockfree_event.h +23 -23
  1004. data/src/core/lib/iomgr/nameser.h +86 -86
  1005. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  1006. data/src/core/lib/iomgr/polling_entity.h +29 -29
  1007. data/src/core/lib/iomgr/pollset.cc +17 -17
  1008. data/src/core/lib/iomgr/pollset.h +55 -55
  1009. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1010. data/src/core/lib/iomgr/pollset_set.h +26 -28
  1011. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  1012. data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
  1013. data/src/core/lib/iomgr/pollset_windows.cc +32 -31
  1014. data/src/core/lib/iomgr/pollset_windows.h +24 -24
  1015. data/src/core/lib/iomgr/port.h +59 -37
  1016. data/src/core/lib/iomgr/python_util.h +24 -24
  1017. data/src/core/lib/iomgr/resolve_address.cc +34 -20
  1018. data/src/core/lib/iomgr/resolve_address.h +73 -43
  1019. data/src/core/lib/iomgr/resolve_address_impl.h +7 -7
  1020. data/src/core/lib/iomgr/resolve_address_posix.cc +81 -62
  1021. data/src/core/lib/iomgr/resolve_address_posix.h +26 -10
  1022. data/src/core/lib/iomgr/resolve_address_windows.cc +64 -38
  1023. data/src/core/lib/iomgr/resolve_address_windows.h +26 -10
  1024. data/src/core/lib/iomgr/resolved_address.h +3 -3
  1025. data/src/core/lib/iomgr/sockaddr.h +25 -26
  1026. data/src/core/lib/iomgr/sockaddr_posix.h +23 -21
  1027. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +20 -18
  1028. data/src/core/lib/iomgr/sockaddr_windows.h +23 -21
  1029. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  1030. data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
  1031. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  1032. data/src/core/lib/iomgr/socket_mutator.h +39 -39
  1033. data/src/core/lib/iomgr/socket_utils.h +27 -27
  1034. data/src/core/lib/iomgr/socket_utils_common_posix.cc +82 -101
  1035. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  1036. data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
  1037. data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
  1038. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  1039. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1040. data/src/core/lib/iomgr/socket_windows.h +59 -61
  1041. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1042. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1043. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1044. data/src/core/lib/iomgr/tcp_client.h +49 -38
  1045. data/src/core/lib/iomgr/tcp_client_cfstream.cc +46 -35
  1046. data/src/core/lib/iomgr/tcp_client_posix.cc +243 -105
  1047. data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
  1048. data/src/core/lib/iomgr/tcp_client_windows.cc +73 -53
  1049. data/src/core/lib/iomgr/tcp_posix.cc +505 -362
  1050. data/src/core/lib/iomgr/tcp_posix.h +32 -30
  1051. data/src/core/lib/iomgr/tcp_server.cc +33 -24
  1052. data/src/core/lib/iomgr/tcp_server.h +78 -69
  1053. data/src/core/lib/iomgr/tcp_server_posix.cc +381 -133
  1054. data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
  1055. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +120 -82
  1056. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +46 -43
  1057. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  1058. data/src/core/lib/iomgr/tcp_server_windows.cc +116 -118
  1059. data/src/core/lib/iomgr/tcp_windows.cc +116 -98
  1060. data/src/core/lib/iomgr/tcp_windows.h +34 -35
  1061. data/src/core/lib/iomgr/timer.cc +17 -17
  1062. data/src/core/lib/iomgr/timer.h +68 -68
  1063. data/src/core/lib/iomgr/timer_generic.cc +125 -134
  1064. data/src/core/lib/iomgr/timer_generic.h +21 -21
  1065. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  1066. data/src/core/lib/iomgr/timer_heap.h +22 -22
  1067. data/src/core/lib/iomgr/timer_manager.cc +31 -31
  1068. data/src/core/lib/iomgr/timer_manager.h +27 -27
  1069. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  1070. data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
  1071. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  1072. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
  1073. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  1074. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  1075. data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
  1076. data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
  1077. data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
  1078. data/src/core/lib/json/json.h +23 -27
  1079. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/json/json_args.h} +13 -10
  1080. data/src/core/lib/json/json_channel_args.h +42 -0
  1081. data/src/core/lib/json/json_object_loader.cc +217 -0
  1082. data/src/core/lib/json/json_object_loader.h +634 -0
  1083. data/src/core/lib/json/json_reader.cc +123 -90
  1084. data/src/core/lib/json/json_util.cc +14 -34
  1085. data/src/core/lib/json/json_util.h +17 -8
  1086. data/src/core/lib/json/json_writer.cc +62 -57
  1087. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +30 -60
  1088. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +47 -62
  1089. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1090. data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
  1091. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1092. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +57 -52
  1093. data/src/core/lib/matchers/matchers.cc +12 -7
  1094. data/src/core/lib/matchers/matchers.h +5 -3
  1095. data/src/core/lib/promise/activity.cc +23 -8
  1096. data/src/core/lib/promise/activity.h +116 -58
  1097. data/src/core/lib/promise/arena_promise.h +115 -72
  1098. data/src/core/lib/promise/context.h +18 -11
  1099. data/src/core/lib/promise/detail/basic_join.h +197 -0
  1100. data/src/core/lib/promise/detail/basic_seq.h +28 -33
  1101. data/src/core/lib/promise/detail/promise_factory.h +61 -14
  1102. data/src/core/lib/promise/detail/promise_like.h +3 -3
  1103. data/src/core/lib/promise/detail/status.h +31 -3
  1104. data/src/core/lib/promise/detail/switch.h +21 -21
  1105. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
  1106. data/src/core/lib/promise/if.h +195 -0
  1107. data/src/core/lib/promise/interceptor_list.h +308 -0
  1108. data/src/core/lib/promise/intra_activity_waiter.h +9 -3
  1109. data/src/core/lib/promise/latch.h +109 -22
  1110. data/src/core/lib/promise/loop.h +13 -9
  1111. data/src/core/lib/promise/map.h +4 -6
  1112. data/src/core/lib/promise/pipe.h +608 -0
  1113. data/src/core/lib/promise/poll.h +129 -11
  1114. data/src/core/lib/promise/promise.h +5 -5
  1115. data/src/core/lib/promise/race.h +6 -10
  1116. data/src/core/lib/promise/seq.h +32 -14
  1117. data/src/core/lib/promise/sleep.cc +58 -42
  1118. data/src/core/lib/promise/sleep.h +44 -26
  1119. data/src/core/lib/promise/trace.cc +20 -0
  1120. data/src/core/lib/promise/trace.h +24 -0
  1121. data/src/core/lib/promise/try_join.h +82 -0
  1122. data/src/core/lib/promise/try_seq.h +41 -23
  1123. data/src/core/lib/resolver/resolver.cc +17 -59
  1124. data/src/core/lib/resolver/resolver.h +21 -18
  1125. data/src/core/lib/resolver/resolver_factory.h +11 -10
  1126. data/src/core/lib/resolver/resolver_registry.cc +17 -9
  1127. data/src/core/lib/resolver/resolver_registry.h +15 -5
  1128. data/src/core/lib/resolver/server_address.cc +46 -34
  1129. data/src/core/lib/resolver/server_address.h +36 -35
  1130. data/src/core/lib/resource_quota/api.cc +23 -2
  1131. data/src/core/lib/resource_quota/api.h +13 -4
  1132. data/src/core/lib/resource_quota/arena.cc +85 -27
  1133. data/src/core/lib/resource_quota/arena.h +197 -25
  1134. data/src/core/lib/resource_quota/memory_quota.cc +322 -101
  1135. data/src/core/lib/resource_quota/memory_quota.h +191 -56
  1136. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1137. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1138. data/src/core/lib/resource_quota/resource_quota.h +12 -4
  1139. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  1140. data/src/core/lib/resource_quota/thread_quota.h +7 -3
  1141. data/src/core/lib/resource_quota/trace.h +3 -3
  1142. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1143. data/src/core/lib/security/authorization/authorization_policy_provider.h +10 -3
  1144. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
  1145. data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
  1146. data/src/core/lib/security/authorization/evaluate_args.h +9 -6
  1147. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +5 -1
  1148. data/src/core/lib/security/authorization/grpc_authorization_engine.h +10 -3
  1149. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +19 -3
  1150. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +16 -5
  1151. data/src/core/lib/security/authorization/matchers.cc +44 -30
  1152. data/src/core/lib/security/authorization/matchers.h +10 -3
  1153. data/src/core/lib/security/authorization/rbac_policy.cc +6 -2
  1154. data/src/core/lib/security/authorization/rbac_policy.h +10 -3
  1155. data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +9 -4
  1156. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1157. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1158. data/src/core/lib/security/context/security_context.cc +27 -25
  1159. data/src/core/lib/security/context/security_context.h +56 -34
  1160. data/src/core/lib/security/credentials/alts/alts_credentials.cc +31 -24
  1161. data/src/core/lib/security/credentials/alts/alts_credentials.h +63 -59
  1162. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  1163. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
  1164. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  1165. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  1166. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  1167. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1168. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1169. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
  1170. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1171. data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
  1172. data/src/core/lib/security/credentials/call_creds_util.h +4 -3
  1173. data/src/core/lib/security/credentials/channel_creds_registry.h +10 -4
  1174. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +13 -3
  1175. data/src/core/lib/security/credentials/composite/composite_credentials.cc +34 -34
  1176. data/src/core/lib/security/credentials/composite/composite_credentials.h +45 -33
  1177. data/src/core/lib/security/credentials/credentials.cc +23 -26
  1178. data/src/core/lib/security/credentials/credentials.h +79 -65
  1179. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +202 -74
  1180. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +21 -3
  1181. data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
  1182. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1183. data/src/core/lib/security/credentials/external/external_account_credentials.cc +86 -68
  1184. data/src/core/lib/security/credentials/external/external_account_credentials.h +14 -3
  1185. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -26
  1186. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
  1187. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +44 -31
  1188. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -3
  1189. data/src/core/lib/security/credentials/fake/fake_credentials.cc +43 -39
  1190. data/src/core/lib/security/credentials/fake/fake_credentials.h +51 -44
  1191. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
  1192. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +146 -114
  1193. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +33 -27
  1194. data/src/core/lib/security/credentials/iam/iam_credentials.cc +31 -21
  1195. data/src/core/lib/security/credentials/iam/iam_credentials.h +33 -23
  1196. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +15 -5
  1197. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +14 -10
  1198. data/src/core/lib/security/credentials/jwt/json_token.cc +40 -29
  1199. data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
  1200. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +32 -29
  1201. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +37 -23
  1202. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +113 -89
  1203. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
  1204. data/src/core/lib/security/credentials/local/local_credentials.cc +32 -26
  1205. data/src/core/lib/security/credentials/local/local_credentials.h +34 -28
  1206. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +95 -87
  1207. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +46 -25
  1208. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +35 -31
  1209. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +48 -24
  1210. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +44 -42
  1211. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +39 -27
  1212. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
  1213. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
  1214. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +65 -48
  1215. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +27 -16
  1216. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +36 -4
  1217. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +37 -14
  1218. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +22 -23
  1219. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
  1220. data/src/core/lib/security/credentials/tls/tls_credentials.cc +46 -44
  1221. data/src/core/lib/security/credentials/tls/tls_credentials.h +30 -27
  1222. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
  1223. data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
  1224. data/src/core/lib/security/credentials/xds/xds_credentials.cc +33 -35
  1225. data/src/core/lib/security/credentials/xds/xds_credentials.h +24 -10
  1226. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +60 -54
  1227. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +49 -47
  1228. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +75 -79
  1229. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +25 -26
  1230. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +15 -6
  1231. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +26 -15
  1232. data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
  1233. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
  1234. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +43 -38
  1235. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1236. data/src/core/lib/security/security_connector/local/local_security_connector.cc +64 -47
  1237. data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
  1238. data/src/core/lib/security/security_connector/security_connector.cc +37 -35
  1239. data/src/core/lib/security/security_connector/security_connector.h +58 -45
  1240. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -46
  1241. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
  1242. data/src/core/lib/security/security_connector/ssl_utils.cc +47 -39
  1243. data/src/core/lib/security/security_connector/ssl_utils.h +45 -42
  1244. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1245. data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
  1246. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +58 -56
  1247. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +48 -28
  1248. data/src/core/lib/security/transport/auth_filters.h +53 -24
  1249. data/src/core/lib/security/transport/client_auth_filter.cc +57 -40
  1250. data/src/core/lib/security/transport/secure_endpoint.cc +130 -75
  1251. data/src/core/lib/security/transport/secure_endpoint.h +28 -27
  1252. data/src/core/lib/security/transport/security_handshaker.cc +144 -114
  1253. data/src/core/lib/security/transport/security_handshaker.h +28 -23
  1254. data/src/core/lib/security/transport/server_auth_filter.cc +157 -266
  1255. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  1256. data/src/core/lib/security/transport/tsi_error.h +20 -20
  1257. data/src/core/lib/security/util/json_util.cc +24 -24
  1258. data/src/core/lib/security/util/json_util.h +21 -23
  1259. data/src/core/lib/service_config/service_config.h +19 -12
  1260. data/src/core/lib/service_config/service_config_call_data.h +15 -5
  1261. data/src/core/lib/service_config/service_config_impl.cc +111 -150
  1262. data/src/core/lib/service_config/service_config_impl.h +27 -27
  1263. data/src/core/lib/service_config/service_config_parser.cc +16 -28
  1264. data/src/core/lib/service_config/service_config_parser.h +18 -19
  1265. data/src/core/lib/slice/b64.cc +26 -26
  1266. data/src/core/lib/slice/b64.h +34 -32
  1267. data/src/core/lib/slice/percent_encoding.cc +24 -30
  1268. data/src/core/lib/slice/percent_encoding.h +28 -34
  1269. data/src/core/lib/slice/slice.cc +59 -46
  1270. data/src/core/lib/slice/slice.h +64 -20
  1271. data/src/core/lib/slice/slice_buffer.cc +136 -76
  1272. data/src/core/lib/slice/slice_buffer.h +168 -0
  1273. data/src/core/lib/slice/slice_internal.h +38 -45
  1274. data/src/core/lib/slice/slice_refcount.cc +3 -18
  1275. data/src/core/lib/slice/slice_refcount.h +53 -19
  1276. data/src/core/lib/slice/slice_string_helpers.cc +17 -33
  1277. data/src/core/lib/slice/slice_string_helpers.h +23 -30
  1278. data/src/core/lib/surface/api_trace.cc +17 -17
  1279. data/src/core/lib/surface/api_trace.h +25 -25
  1280. data/src/core/lib/surface/builtins.cc +7 -2
  1281. data/src/core/lib/surface/builtins.h +3 -3
  1282. data/src/core/lib/surface/byte_buffer.cc +26 -21
  1283. data/src/core/lib/surface/byte_buffer_reader.cc +24 -24
  1284. data/src/core/lib/surface/call.cc +2232 -483
  1285. data/src/core/lib/surface/call.h +135 -42
  1286. data/src/core/lib/surface/call_details.cc +22 -23
  1287. data/src/core/lib/surface/call_log_batch.cc +25 -18
  1288. data/src/core/lib/surface/call_test_only.h +34 -31
  1289. data/src/core/lib/surface/call_trace.cc +123 -0
  1290. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/surface/call_trace.h} +12 -10
  1291. data/src/core/lib/surface/channel.cc +217 -284
  1292. data/src/core/lib/surface/channel.h +137 -90
  1293. data/src/core/lib/surface/channel_init.cc +17 -17
  1294. data/src/core/lib/surface/channel_init.h +22 -20
  1295. data/src/core/lib/surface/channel_ping.cc +26 -20
  1296. data/src/core/lib/surface/channel_stack_type.cc +21 -19
  1297. data/src/core/lib/surface/channel_stack_type.h +22 -22
  1298. data/src/core/lib/surface/completion_queue.cc +200 -222
  1299. data/src/core/lib/surface/completion_queue.h +42 -40
  1300. data/src/core/lib/surface/completion_queue_factory.cc +34 -28
  1301. data/src/core/lib/surface/completion_queue_factory.h +21 -23
  1302. data/src/core/lib/surface/event_string.cc +19 -24
  1303. data/src/core/lib/surface/event_string.h +21 -21
  1304. data/src/core/lib/surface/init.cc +57 -114
  1305. data/src/core/lib/surface/init.h +20 -28
  1306. data/src/core/lib/surface/init_internally.cc +25 -0
  1307. data/src/core/lib/surface/init_internally.h +37 -0
  1308. data/src/core/lib/surface/lame_client.cc +87 -130
  1309. data/src/core/lib/surface/lame_client.h +62 -24
  1310. data/src/core/lib/surface/metadata_array.cc +18 -17
  1311. data/src/core/lib/surface/server.cc +406 -174
  1312. data/src/core/lib/surface/server.h +56 -24
  1313. data/src/core/lib/surface/validate_metadata.cc +64 -77
  1314. data/src/core/lib/surface/validate_metadata.h +33 -21
  1315. data/src/core/lib/surface/version.cc +21 -21
  1316. data/src/core/lib/transport/bdp_estimator.cc +19 -19
  1317. data/src/core/lib/transport/bdp_estimator.h +22 -24
  1318. data/src/core/lib/transport/connectivity_state.cc +24 -23
  1319. data/src/core/lib/transport/connectivity_state.h +24 -25
  1320. data/src/core/lib/transport/error_utils.cc +57 -79
  1321. data/src/core/lib/transport/error_utils.h +29 -25
  1322. data/src/core/lib/{channel → transport}/handshaker.cc +75 -58
  1323. data/src/core/lib/{channel → transport}/handshaker.h +59 -48
  1324. data/src/core/lib/transport/handshaker_factory.h +74 -0
  1325. data/src/core/lib/transport/handshaker_registry.cc +61 -0
  1326. data/src/core/lib/transport/handshaker_registry.h +69 -0
  1327. data/src/core/lib/transport/http2_errors.h +22 -22
  1328. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +78 -65
  1329. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1330. data/src/core/lib/transport/metadata_batch.cc +305 -0
  1331. data/src/core/lib/transport/metadata_batch.h +405 -304
  1332. data/src/core/lib/transport/parsed_metadata.cc +2 -4
  1333. data/src/core/lib/transport/parsed_metadata.h +33 -14
  1334. data/src/core/lib/transport/pid_controller.cc +20 -20
  1335. data/src/core/lib/transport/pid_controller.h +27 -27
  1336. data/src/core/lib/transport/status_conversion.cc +23 -23
  1337. data/src/core/lib/transport/status_conversion.h +24 -24
  1338. data/src/core/lib/transport/tcp_connect_handshaker.cc +245 -0
  1339. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1340. data/src/core/lib/transport/timeout_encoding.cc +24 -28
  1341. data/src/core/lib/transport/timeout_encoding.h +25 -21
  1342. data/src/core/lib/transport/transport.cc +97 -57
  1343. data/src/core/lib/transport/transport.h +243 -213
  1344. data/src/core/lib/transport/transport_fwd.h +20 -0
  1345. data/src/core/lib/transport/transport_impl.h +55 -45
  1346. data/src/core/lib/transport/transport_op_string.cc +40 -39
  1347. data/src/core/lib/uri/uri_parser.cc +12 -4
  1348. data/src/core/lib/uri/uri_parser.h +3 -5
  1349. data/src/core/plugin_registry/grpc_plugin_registry.cc +60 -69
  1350. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +20 -39
  1351. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  1352. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  1353. data/src/core/tsi/alts/crypt/gsec.h +336 -336
  1354. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1355. data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
  1356. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1357. data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
  1358. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  1359. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
  1360. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1361. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
  1362. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1363. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1364. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  1365. data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
  1366. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +117 -97
  1367. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
  1368. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  1369. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
  1370. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +51 -43
  1371. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
  1372. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
  1373. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  1374. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
  1375. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  1376. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
  1377. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  1378. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
  1379. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1380. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
  1381. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
  1382. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  1383. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
  1384. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  1385. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
  1386. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
  1387. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
  1388. data/src/core/tsi/fake_transport_security.cc +146 -110
  1389. data/src/core/tsi/fake_transport_security.h +36 -30
  1390. data/src/core/tsi/local_transport_security.cc +43 -38
  1391. data/src/core/tsi/local_transport_security.h +33 -33
  1392. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
  1393. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
  1394. data/src/core/tsi/ssl/session_cache/ssl_session.h +23 -21
  1395. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +21 -19
  1396. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  1397. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +31 -22
  1398. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +27 -20
  1399. data/src/core/tsi/ssl_transport_security.cc +299 -370
  1400. data/src/core/tsi/ssl_transport_security.h +206 -203
  1401. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1402. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1403. data/src/core/tsi/ssl_types.h +27 -27
  1404. data/src/core/tsi/transport_security.cc +44 -32
  1405. data/src/core/tsi/transport_security.h +49 -48
  1406. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1407. data/src/core/tsi/transport_security_grpc.h +44 -41
  1408. data/src/core/tsi/transport_security_interface.h +344 -332
  1409. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1410. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1411. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1412. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1413. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1414. data/src/ruby/ext/grpc/extconf.rb +98 -20
  1415. data/src/ruby/ext/grpc/rb_call.c +1 -0
  1416. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1417. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1418. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  1419. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1420. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  1421. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +60 -60
  1422. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1423. data/src/ruby/lib/grpc/errors.rb +1 -1
  1424. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1425. data/src/ruby/lib/grpc/version.rb +1 -1
  1426. data/src/ruby/pb/generate_proto_ruby.sh +0 -6
  1427. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  1428. data/src/ruby/spec/channel_spec.rb +5 -43
  1429. data/src/ruby/spec/client_server_spec.rb +20 -8
  1430. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  1431. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  1432. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1433. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1434. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
  1435. data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
  1436. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  1437. data/third_party/abseil-cpp/absl/base/config.h +221 -39
  1438. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1439. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
  1440. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  1441. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
  1442. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  1443. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  1444. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  1445. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  1446. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  1447. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  1448. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1449. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
  1450. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
  1451. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
  1452. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
  1453. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  1454. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  1455. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1456. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1457. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
  1458. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  1459. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  1460. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  1461. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  1462. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
  1463. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  1464. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1465. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  1466. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  1467. data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
  1468. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  1469. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  1470. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  1471. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1472. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1473. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -5
  1474. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  1475. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  1476. data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
  1477. data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
  1478. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  1479. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
  1480. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  1481. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
  1482. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
  1483. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
  1484. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
  1485. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
  1486. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  1487. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  1488. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  1489. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  1490. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  1491. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  1492. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  1493. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  1494. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  1495. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  1496. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  1497. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  1498. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  1499. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  1500. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  1501. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  1502. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  1503. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  1504. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  1505. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  1506. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  1507. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  1508. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
  1509. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  1510. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
  1511. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  1512. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  1513. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  1514. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  1515. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
  1516. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  1517. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
  1518. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
  1519. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  1520. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  1521. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
  1522. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  1523. data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
  1524. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  1525. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  1526. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  1527. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  1528. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  1529. data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
  1530. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  1531. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  1532. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  1533. data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
  1534. data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
  1535. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  1536. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
  1537. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  1538. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  1539. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  1540. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -2
  1541. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  1542. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  1543. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +3 -24
  1544. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
  1545. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  1546. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  1547. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  1548. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  1549. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
  1550. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  1551. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  1552. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  1553. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  1554. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  1555. data/third_party/abseil-cpp/absl/random/random.h +6 -6
  1556. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  1557. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  1558. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  1559. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  1560. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1561. data/third_party/abseil-cpp/absl/status/status.cc +193 -14
  1562. data/third_party/abseil-cpp/absl/status/status.h +24 -14
  1563. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  1564. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  1565. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1566. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  1567. data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
  1568. data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
  1569. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1570. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1571. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1572. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  1573. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  1574. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  1575. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  1576. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  1577. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1578. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1579. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  1580. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
  1581. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
  1582. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
  1583. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
  1584. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  1585. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  1586. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  1587. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  1588. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  1589. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  1590. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  1591. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  1592. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  1593. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  1594. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
  1595. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  1596. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
  1597. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  1598. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  1599. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  1600. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
  1601. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  1602. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  1603. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  1604. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  1605. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  1606. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  1607. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
  1608. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  1609. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
  1610. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
  1611. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  1612. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1613. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
  1614. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  1615. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  1616. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  1617. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
  1618. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1619. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  1620. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  1621. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  1622. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  1623. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1624. data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
  1625. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  1626. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  1627. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
  1628. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  1629. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1630. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  1631. data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
  1632. data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
  1633. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1634. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  1635. data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
  1636. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  1637. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1638. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  1639. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  1640. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  1641. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  1642. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  1643. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  1644. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  1645. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
  1646. data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
  1647. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  1648. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
  1649. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  1650. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  1651. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  1652. data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
  1653. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1654. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  1655. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1656. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  1657. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  1658. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  1659. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  1660. data/third_party/abseil-cpp/absl/time/time.h +268 -169
  1661. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1662. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  1663. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  1664. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  1665. data/third_party/abseil-cpp/absl/types/span.h +31 -8
  1666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
  1667. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
  1668. data/third_party/re2/re2/bitstate.cc +3 -3
  1669. data/third_party/re2/re2/dfa.cc +13 -13
  1670. data/third_party/re2/re2/nfa.cc +4 -4
  1671. data/third_party/re2/re2/onepass.cc +2 -2
  1672. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  1673. data/third_party/re2/re2/prefilter_tree.h +3 -2
  1674. data/third_party/re2/re2/prog.cc +11 -2
  1675. data/third_party/re2/re2/prog.h +17 -5
  1676. data/third_party/re2/re2/re2.cc +6 -11
  1677. data/third_party/re2/re2/re2.h +1 -1
  1678. data/third_party/re2/re2/regexp.cc +1 -2
  1679. data/third_party/re2/re2/stringpiece.h +10 -7
  1680. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  1681. data/third_party/re2/re2/unicode_groups.cc +319 -151
  1682. data/third_party/re2/re2/walker-inl.h +3 -2
  1683. data/third_party/re2/util/mutex.h +4 -4
  1684. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  1685. data/third_party/upb/upb/arena.c +277 -0
  1686. data/third_party/upb/upb/arena.h +225 -0
  1687. data/third_party/upb/upb/array.c +114 -0
  1688. data/third_party/upb/upb/array.h +83 -0
  1689. data/third_party/upb/upb/collections.h +36 -0
  1690. data/third_party/upb/upb/decode.c +161 -65
  1691. data/third_party/upb/upb/decode.h +1 -0
  1692. data/third_party/upb/upb/decode_fast.c +1 -1
  1693. data/third_party/upb/upb/def.c +10 -2
  1694. data/third_party/upb/upb/def.h +8 -1
  1695. data/third_party/upb/upb/def.hpp +7 -4
  1696. data/third_party/upb/upb/encode.c +29 -20
  1697. data/third_party/upb/upb/encode.h +16 -6
  1698. data/third_party/upb/upb/extension_registry.c +93 -0
  1699. data/third_party/upb/upb/extension_registry.h +84 -0
  1700. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  1701. data/third_party/upb/upb/internal/table.h +385 -0
  1702. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  1703. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  1704. data/third_party/upb/upb/json_decode.c +1512 -0
  1705. data/third_party/upb/upb/json_decode.h +47 -0
  1706. data/third_party/upb/upb/json_encode.c +7 -3
  1707. data/third_party/upb/upb/json_encode.h +6 -3
  1708. data/third_party/upb/upb/map.c +108 -0
  1709. data/third_party/upb/upb/map.h +117 -0
  1710. data/third_party/upb/upb/message_value.h +66 -0
  1711. data/third_party/upb/upb/mini_table.c +1147 -0
  1712. data/third_party/upb/upb/mini_table.h +189 -0
  1713. data/third_party/upb/upb/mini_table.hpp +112 -0
  1714. data/third_party/upb/upb/msg.c +2 -62
  1715. data/third_party/upb/upb/msg.h +2 -45
  1716. data/third_party/upb/upb/msg_internal.h +28 -22
  1717. data/third_party/upb/upb/port_def.inc +2 -1
  1718. data/third_party/upb/upb/port_undef.inc +1 -0
  1719. data/third_party/upb/upb/reflection.c +2 -159
  1720. data/third_party/upb/upb/reflection.h +2 -112
  1721. data/third_party/upb/upb/status.c +86 -0
  1722. data/third_party/upb/upb/status.h +66 -0
  1723. data/third_party/upb/upb/table.c +2 -2
  1724. data/third_party/upb/upb/table_internal.h +3 -352
  1725. data/third_party/upb/upb/text_encode.c +3 -2
  1726. data/third_party/upb/upb/upb.c +4 -290
  1727. data/third_party/upb/upb/upb.h +7 -196
  1728. data/third_party/zlib/compress.c +3 -3
  1729. data/third_party/zlib/crc32.c +21 -12
  1730. data/third_party/zlib/deflate.c +112 -106
  1731. data/third_party/zlib/deflate.h +2 -2
  1732. data/third_party/zlib/gzlib.c +1 -1
  1733. data/third_party/zlib/gzread.c +3 -5
  1734. data/third_party/zlib/gzwrite.c +1 -1
  1735. data/third_party/zlib/infback.c +10 -7
  1736. data/third_party/zlib/inflate.c +5 -2
  1737. data/third_party/zlib/inftrees.c +2 -2
  1738. data/third_party/zlib/inftrees.h +1 -1
  1739. data/third_party/zlib/trees.c +61 -62
  1740. data/third_party/zlib/uncompr.c +2 -2
  1741. data/third_party/zlib/zconf.h +16 -3
  1742. data/third_party/zlib/zlib.h +10 -10
  1743. data/third_party/zlib/zutil.c +9 -7
  1744. data/third_party/zlib/zutil.h +1 -0
  1745. metadata +372 -102
  1746. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  1747. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
  1748. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
  1749. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
  1750. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
  1751. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  1752. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
  1753. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
  1754. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -186
  1755. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -179
  1756. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -456
  1757. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  1758. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -386
  1759. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -61
  1760. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  1761. data/src/core/ext/xds/certificate_provider_registry.h +0 -57
  1762. data/src/core/lib/channel/handshaker_factory.h +0 -50
  1763. data/src/core/lib/channel/handshaker_registry.cc +0 -50
  1764. data/src/core/lib/channel/handshaker_registry.h +0 -71
  1765. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  1766. data/src/core/lib/event_engine/sockaddr.h +0 -44
  1767. data/src/core/lib/gpr/env.h +0 -40
  1768. data/src/core/lib/gpr/env_linux.cc +0 -75
  1769. data/src/core/lib/gpr/env_posix.cc +0 -46
  1770. data/src/core/lib/gpr/env_windows.cc +0 -74
  1771. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1772. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1773. data/src/core/lib/gpr/string_windows.h +0 -32
  1774. data/src/core/lib/gpr/tls.h +0 -158
  1775. data/src/core/lib/gprpp/capture.h +0 -76
  1776. data/src/core/lib/iomgr/error_internal.h +0 -66
  1777. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  1778. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  1779. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  1780. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  1781. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  1782. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  1783. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  1784. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  1785. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
  1786. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  1787. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  1788. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  1789. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  1790. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  1791. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  1792. data/src/core/lib/profiling/basic_timers.cc +0 -295
  1793. data/src/core/lib/profiling/stap_timers.cc +0 -50
  1794. data/src/core/lib/profiling/timers.h +0 -94
  1795. data/src/core/lib/promise/call_push_pull.h +0 -144
  1796. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
  1797. data/src/core/lib/slice/slice_api.cc +0 -39
  1798. data/src/core/lib/slice/slice_refcount_base.h +0 -61
  1799. data/src/core/lib/slice/slice_split.cc +0 -100
  1800. data/src/core/lib/slice/slice_split.h +0 -40
  1801. data/src/core/lib/transport/byte_stream.cc +0 -164
  1802. data/src/core/lib/transport/byte_stream.h +0 -166
  1803. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -1,37 +1,46 @@
1
- /*
2
- *
3
- * Copyright 2017 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_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
20
- #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
1
+ //
2
+ //
3
+ // Copyright 2017 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_FLOW_CONTROL_H
20
+ #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <limits.h>
24
25
  #include <stdint.h>
25
26
 
27
+ #include <iosfwd>
28
+ #include <string>
29
+ #include <utility>
30
+
31
+ #include "absl/functional/function_ref.h"
32
+ #include "absl/status/status.h"
33
+ #include "absl/types/optional.h"
34
+
35
+ #include <grpc/support/log.h>
36
+
26
37
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
27
- #include "src/core/lib/gpr/useful.h"
28
- #include "src/core/lib/gprpp/manual_constructor.h"
38
+ #include "src/core/lib/debug/trace.h"
39
+ #include "src/core/lib/gprpp/time.h"
40
+ #include "src/core/lib/resource_quota/memory_quota.h"
29
41
  #include "src/core/lib/transport/bdp_estimator.h"
30
42
  #include "src/core/lib/transport/pid_controller.h"
31
43
 
32
- struct grpc_chttp2_transport;
33
- struct grpc_chttp2_stream;
34
-
35
44
  extern grpc_core::TraceFlag grpc_flowctl_trace;
36
45
 
37
46
  namespace grpc {
@@ -44,23 +53,28 @@ namespace grpc_core {
44
53
  namespace chttp2 {
45
54
 
46
55
  static constexpr uint32_t kDefaultWindow = 65535;
56
+ static constexpr uint32_t kDefaultFrameSize = 16384;
47
57
  static constexpr int64_t kMaxWindow = static_cast<int64_t>((1u << 31) - 1);
48
- // TODO(ncteisen): Tune this
49
- static constexpr uint32_t kFrameSize = 1024 * 1024;
50
- static constexpr const uint32_t kMinInitialWindowSize = 128;
58
+ // If smaller than this, advertise zero window.
59
+ static constexpr uint32_t kMinPositiveInitialWindowSize = 1024;
51
60
  static constexpr const uint32_t kMaxInitialWindowSize = (1u << 30);
52
61
  // The maximum per-stream flow control window delta to advertise.
53
- static constexpr const uint32_t kMaxWindowDelta = (1u << 20);
62
+ static constexpr const int64_t kMaxWindowDelta = (1u << 20);
63
+ static constexpr const int kDefaultPreferredRxCryptoFrameSize = INT_MAX;
64
+
65
+ // TODO(ctiller): clean up when flow_control_fixes is enabled by default
66
+ static constexpr uint32_t kFrameSize = 1024 * 1024;
67
+ static constexpr const uint32_t kMinInitialWindowSize = 128;
54
68
 
55
69
  class TransportFlowControl;
56
70
  class StreamFlowControl;
57
71
 
58
- extern bool g_test_only_transport_flow_control_window_check;
72
+ enum class StallEdge { kNoChange, kStalled, kUnstalled };
59
73
 
60
74
  // Encapsulates a collections of actions the transport needs to take with
61
75
  // regard to flow control. Each action comes with urgencies that tell the
62
76
  // transport how quickly the action must take place.
63
- class FlowControlAction {
77
+ class GRPC_MUST_USE_RESULT FlowControlAction {
64
78
  public:
65
79
  enum class Urgency : uint8_t {
66
80
  // Nothing to be done.
@@ -80,8 +94,14 @@ class FlowControlAction {
80
94
  Urgency send_max_frame_size_update() const {
81
95
  return send_max_frame_size_update_;
82
96
  }
97
+ Urgency preferred_rx_crypto_frame_size_update() const {
98
+ return preferred_rx_crypto_frame_size_update_;
99
+ }
83
100
  uint32_t initial_window_size() const { return initial_window_size_; }
84
101
  uint32_t max_frame_size() const { return max_frame_size_; }
102
+ uint32_t preferred_rx_crypto_frame_size() const {
103
+ return preferred_rx_crypto_frame_size_;
104
+ }
85
105
 
86
106
  FlowControlAction& set_send_stream_update(Urgency u) {
87
107
  send_stream_update_ = u;
@@ -103,133 +123,54 @@ class FlowControlAction {
103
123
  max_frame_size_ = update;
104
124
  return *this;
105
125
  }
126
+ FlowControlAction& set_preferred_rx_crypto_frame_size_update(
127
+ Urgency u, uint32_t update) {
128
+ preferred_rx_crypto_frame_size_update_ = u;
129
+ preferred_rx_crypto_frame_size_ = update;
130
+ return *this;
131
+ }
106
132
 
107
133
  static const char* UrgencyString(Urgency u);
108
- void Trace(grpc_chttp2_transport* t) const;
134
+ std::string DebugString() const;
135
+
136
+ void AssertEmpty() { GPR_ASSERT(*this == FlowControlAction()); }
137
+
138
+ bool operator==(const FlowControlAction& other) const {
139
+ return send_stream_update_ == other.send_stream_update_ &&
140
+ send_transport_update_ == other.send_transport_update_ &&
141
+ send_initial_window_update_ == other.send_initial_window_update_ &&
142
+ send_max_frame_size_update_ == other.send_max_frame_size_update_ &&
143
+ (send_initial_window_update_ == Urgency::NO_ACTION_NEEDED ||
144
+ initial_window_size_ == other.initial_window_size_) &&
145
+ (send_max_frame_size_update_ == Urgency::NO_ACTION_NEEDED ||
146
+ max_frame_size_ == other.max_frame_size_) &&
147
+ (preferred_rx_crypto_frame_size_update_ ==
148
+ Urgency::NO_ACTION_NEEDED ||
149
+ preferred_rx_crypto_frame_size_ ==
150
+ other.preferred_rx_crypto_frame_size_);
151
+ }
109
152
 
110
153
  private:
111
154
  Urgency send_stream_update_ = Urgency::NO_ACTION_NEEDED;
112
155
  Urgency send_transport_update_ = Urgency::NO_ACTION_NEEDED;
113
156
  Urgency send_initial_window_update_ = Urgency::NO_ACTION_NEEDED;
114
157
  Urgency send_max_frame_size_update_ = Urgency::NO_ACTION_NEEDED;
158
+ Urgency preferred_rx_crypto_frame_size_update_ = Urgency::NO_ACTION_NEEDED;
115
159
  uint32_t initial_window_size_ = 0;
116
160
  uint32_t max_frame_size_ = 0;
161
+ uint32_t preferred_rx_crypto_frame_size_ = 0;
117
162
  };
118
163
 
119
- class FlowControlTrace {
120
- public:
121
- FlowControlTrace(const char* reason, TransportFlowControl* tfc,
122
- StreamFlowControl* sfc) {
123
- if (enabled_) Init(reason, tfc, sfc);
124
- }
125
-
126
- ~FlowControlTrace() {
127
- if (enabled_) Finish();
128
- }
129
-
130
- private:
131
- void Init(const char* reason, TransportFlowControl* tfc,
132
- StreamFlowControl* sfc);
133
- void Finish();
134
-
135
- const bool enabled_ = GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace);
136
-
137
- TransportFlowControl* tfc_;
138
- StreamFlowControl* sfc_;
139
- const char* reason_;
140
- int64_t remote_window_;
141
- int64_t target_window_;
142
- int64_t announced_window_;
143
- int64_t remote_window_delta_;
144
- int64_t local_window_delta_;
145
- int64_t announced_window_delta_;
146
- };
147
-
148
- // Fat interface with all methods a flow control implementation needs to
149
- // support.
150
- class TransportFlowControlBase {
151
- public:
152
- TransportFlowControlBase() {}
153
- virtual ~TransportFlowControlBase() {}
154
-
155
- // Is flow control enabled? This is needed in other codepaths like the checks
156
- // in parsing and in writing.
157
- virtual bool flow_control_enabled() const = 0;
158
-
159
- // Called to check if the transport needs to send a WINDOW_UPDATE frame
160
- virtual uint32_t MaybeSendUpdate(bool /* writing_anyway */) = 0;
161
-
162
- // Using the protected members, returns and Action to be taken by the
163
- // tranport.
164
- virtual FlowControlAction MakeAction() = 0;
165
-
166
- // Using the protected members, returns and Action to be taken by the
167
- // tranport. Also checks for updates to our BDP estimate and acts
168
- // accordingly.
169
- virtual FlowControlAction PeriodicUpdate() = 0;
170
-
171
- // Called to do bookkeeping when a stream owned by this transport sends
172
- // data on the wire
173
- virtual void StreamSentData(int64_t /* size */) = 0;
174
-
175
- // Called to do bookkeeping when a stream owned by this transport receives
176
- // data from the wire. Also does error checking for frame size.
177
- virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0;
178
-
179
- // Called to do bookkeeping when we receive a WINDOW_UPDATE frame.
180
- virtual void RecvUpdate(uint32_t /* size */) = 0;
181
-
182
- // Returns the BdpEstimator held by this object. Caller is responsible for
183
- // checking for nullptr. TODO(ncteisen): consider fully encapsulating all
184
- // bdp estimator actions inside TransportFlowControl
185
- virtual BdpEstimator* bdp_estimator() { return nullptr; }
186
-
187
- // Getters
188
- int64_t remote_window() const { return remote_window_; }
189
- virtual int64_t target_window() const { return target_initial_window_size_; }
190
- int64_t announced_window() const { return announced_window_; }
191
-
192
- // Used in certain benchmarks in which we don't want FlowControl to be a
193
- // factor
194
- virtual void TestOnlyForceHugeWindow() {}
195
-
196
- protected:
197
- friend class grpc::testing::TrickledCHTTP2;
198
- int64_t remote_window_ = kDefaultWindow;
199
- int64_t target_initial_window_size_ = kDefaultWindow;
200
- int64_t announced_window_ = kDefaultWindow;
201
- };
202
-
203
- // Implementation of flow control that does NOTHING. Always returns maximum
204
- // values, never initiates writes, and assumes that the remote peer is doing
205
- // the same. To be used to narrow down on flow control as the cause of negative
206
- // performance.
207
- class TransportFlowControlDisabled final : public TransportFlowControlBase {
208
- public:
209
- // Maxes out all values
210
- explicit TransportFlowControlDisabled(grpc_chttp2_transport* t);
211
-
212
- bool flow_control_enabled() const override { return false; }
213
-
214
- // Never do anything.
215
- uint32_t MaybeSendUpdate(bool /* writing_anyway */) override { return 0; }
216
- FlowControlAction MakeAction() override { return FlowControlAction(); }
217
- FlowControlAction PeriodicUpdate() override { return FlowControlAction(); }
218
- void StreamSentData(int64_t /* size */) override {}
219
- grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override {
220
- return GRPC_ERROR_NONE;
221
- }
222
- void RecvUpdate(uint32_t /* size */) override {}
223
- };
164
+ std::ostream& operator<<(std::ostream& out, FlowControlAction::Urgency urgency);
165
+ std::ostream& operator<<(std::ostream& out, const FlowControlAction& action);
224
166
 
225
167
  // Implementation of flow control that abides to HTTP/2 spec and attempts
226
168
  // to be as performant as possible.
227
- class TransportFlowControl final : public TransportFlowControlBase {
169
+ class TransportFlowControl final {
228
170
  public:
229
- TransportFlowControl(const grpc_chttp2_transport* t, bool enable_bdp_probe);
230
- ~TransportFlowControl() override {}
231
-
232
- bool flow_control_enabled() const override { return true; }
171
+ explicit TransportFlowControl(const char* name, bool enable_bdp_probe,
172
+ MemoryOwner* memory_owner);
173
+ ~TransportFlowControl() {}
233
174
 
234
175
  bool bdp_probe() const { return enable_bdp_probe_; }
235
176
 
@@ -237,239 +178,221 @@ class TransportFlowControl final : public TransportFlowControlBase {
237
178
  // else returns zero; writing_anyway indicates if a write would happen
238
179
  // regardless of the send - if it is false and this function returns non-zero,
239
180
  // this announce will cause a write to occur
240
- uint32_t MaybeSendUpdate(bool writing_anyway) override;
181
+ uint32_t MaybeSendUpdate(bool writing_anyway);
182
+
183
+ // Track an update to the incoming flow control counters - that is how many
184
+ // tokens we report to our peer that we're willing to accept.
185
+ // Instantiators *must* call MakeAction before destruction of this value.
186
+ class IncomingUpdateContext {
187
+ public:
188
+ explicit IncomingUpdateContext(TransportFlowControl* tfc) : tfc_(tfc) {}
189
+ ~IncomingUpdateContext() { GPR_ASSERT(tfc_ == nullptr); }
190
+
191
+ IncomingUpdateContext(const IncomingUpdateContext&) = delete;
192
+ IncomingUpdateContext& operator=(const IncomingUpdateContext&) = delete;
193
+
194
+ // Reads the flow control data and returns an actionable struct that will
195
+ // tell chttp2 exactly what it needs to do
196
+ FlowControlAction MakeAction() {
197
+ return std::exchange(tfc_, nullptr)->UpdateAction(FlowControlAction());
198
+ }
241
199
 
242
- // Reads the flow control data and returns and actionable struct that will
243
- // tell chttp2 exactly what it needs to do
244
- FlowControlAction MakeAction() override {
245
- return UpdateAction(FlowControlAction());
246
- }
200
+ // Notify of data receipt. Returns OkStatus if the data was accepted,
201
+ // else an error status if the connection should be closed.
202
+ absl::Status RecvData(
203
+ int64_t incoming_frame_size, absl::FunctionRef<absl::Status()> stream =
204
+ []() { return absl::OkStatus(); });
205
+
206
+ // Update a stream announce window delta, keeping track of how much total
207
+ // positive delta is present on the transport.
208
+ void UpdateAnnouncedWindowDelta(int64_t* delta, int64_t change) {
209
+ if (change == 0) return;
210
+ if (*delta > 0) {
211
+ tfc_->announced_stream_total_over_incoming_window_ -= *delta;
212
+ }
213
+ *delta += change;
214
+ if (*delta > 0) {
215
+ tfc_->announced_stream_total_over_incoming_window_ += *delta;
216
+ }
217
+ }
218
+
219
+ private:
220
+ TransportFlowControl* tfc_;
221
+ };
222
+
223
+ // Track an update to the outgoing flow control counters - that is how many
224
+ // tokens our peer has said we can send.
225
+ class OutgoingUpdateContext {
226
+ public:
227
+ explicit OutgoingUpdateContext(TransportFlowControl* tfc) : tfc_(tfc) {}
228
+ void StreamSentData(int64_t size) { tfc_->remote_window_ -= size; }
229
+
230
+ // we have received a WINDOW_UPDATE frame for a transport
231
+ void RecvUpdate(uint32_t size) { tfc_->remote_window_ += size; }
232
+
233
+ // Finish the update and check whether we became stalled or unstalled.
234
+ StallEdge Finish() {
235
+ bool is_stalled = tfc_->remote_window_ <= 0;
236
+ if (is_stalled != was_stalled_) {
237
+ return is_stalled ? StallEdge::kStalled : StallEdge::kUnstalled;
238
+ } else {
239
+ return StallEdge::kNoChange;
240
+ }
241
+ }
242
+
243
+ private:
244
+ TransportFlowControl* tfc_;
245
+ const bool was_stalled_ = tfc_->remote_window_ <= 0;
246
+ };
247
247
 
248
248
  // Call periodically (at a low-ish rate, 100ms - 10s makes sense)
249
249
  // to perform more complex flow control calculations and return an action
250
250
  // to let chttp2 change its parameters
251
- FlowControlAction PeriodicUpdate() override;
252
-
253
- void StreamSentData(int64_t size) override { remote_window_ -= size; }
251
+ FlowControlAction PeriodicUpdate();
254
252
 
255
- grpc_error_handle ValidateRecvData(int64_t incoming_frame_size);
256
- void CommitRecvData(int64_t incoming_frame_size) {
257
- announced_window_ -= incoming_frame_size;
253
+ int64_t target_window() const;
254
+ int64_t target_frame_size() const { return target_frame_size_; }
255
+ int64_t target_preferred_rx_crypto_frame_size() const {
256
+ return target_preferred_rx_crypto_frame_size_;
258
257
  }
259
258
 
260
- grpc_error_handle RecvData(int64_t incoming_frame_size) override {
261
- FlowControlTrace trace(" data recv", this, nullptr);
262
- grpc_error_handle error = ValidateRecvData(incoming_frame_size);
263
- if (error != GRPC_ERROR_NONE) return error;
264
- CommitRecvData(incoming_frame_size);
265
- return GRPC_ERROR_NONE;
266
- }
259
+ BdpEstimator* bdp_estimator() { return &bdp_estimator_; }
267
260
 
268
- // we have received a WINDOW_UPDATE frame for a transport
269
- void RecvUpdate(uint32_t size) override {
270
- FlowControlTrace trace("t updt recv", this, nullptr);
271
- remote_window_ += size;
272
- }
261
+ uint32_t acked_init_window() const { return acked_init_window_; }
262
+ uint32_t sent_init_window() const { return target_initial_window_size_; }
273
263
 
274
- // See comment above announced_stream_total_over_incoming_window_ for the
275
- // logic behind this decision.
276
- int64_t target_window() const override {
277
- return static_cast<uint32_t>(
278
- std::min(static_cast<int64_t>((1u << 31) - 1),
279
- announced_stream_total_over_incoming_window_ +
280
- target_initial_window_size_));
281
- }
264
+ FlowControlAction SetAckedInitialWindow(uint32_t value);
282
265
 
283
- const grpc_chttp2_transport* transport() const { return t_; }
266
+ // Getters
267
+ int64_t remote_window() const { return remote_window_; }
268
+ int64_t announced_window() const { return announced_window_; }
284
269
 
285
- void PreUpdateAnnouncedWindowOverIncomingWindow(int64_t delta) {
286
- if (delta > 0) {
287
- announced_stream_total_over_incoming_window_ -= delta;
288
- }
270
+ int64_t announced_stream_total_over_incoming_window() const {
271
+ return announced_stream_total_over_incoming_window_;
289
272
  }
290
273
 
291
- void PostUpdateAnnouncedWindowOverIncomingWindow(int64_t delta) {
274
+ void RemoveAnnouncedWindowDelta(int64_t delta) {
292
275
  if (delta > 0) {
293
- announced_stream_total_over_incoming_window_ += delta;
276
+ announced_stream_total_over_incoming_window_ -= delta;
294
277
  }
295
278
  }
296
279
 
297
- BdpEstimator* bdp_estimator() override { return &bdp_estimator_; }
298
-
299
- void TestOnlyForceHugeWindow() override {
300
- announced_window_ = 1024 * 1024 * 1024;
301
- remote_window_ = 1024 * 1024 * 1024;
302
- }
303
-
304
280
  private:
305
281
  double TargetLogBdp();
306
282
  double SmoothLogBdp(double value);
307
- FlowControlAction::Urgency DeltaUrgency(int64_t value,
308
- grpc_chttp2_setting_id setting_id);
309
-
310
- FlowControlAction UpdateAction(FlowControlAction action) {
311
- if (announced_window_ < target_window() / 2) {
312
- action.set_send_transport_update(
313
- FlowControlAction::Urgency::UPDATE_IMMEDIATELY);
314
- }
315
- return action;
316
- }
317
-
318
- const grpc_chttp2_transport* const t_;
319
-
320
- /** calculating what we should give for local window:
321
- we track the total amount of flow control over initial window size
322
- across all streams: this is data that we want to receive right now (it
323
- has an outstanding read)
324
- and the total amount of flow control under initial window size across all
325
- streams: this is data we've read early
326
- we want to adjust incoming_window such that:
327
- incoming_window = total_over - max(bdp - total_under, 0) */
283
+ double TargetInitialWindowSizeBasedOnMemoryPressureAndBdp() const;
284
+ static void UpdateSetting(grpc_chttp2_setting_id id, int64_t* desired_value,
285
+ uint32_t new_desired_value,
286
+ FlowControlAction* action,
287
+ FlowControlAction& (FlowControlAction::*set)(
288
+ FlowControlAction::Urgency, uint32_t));
289
+
290
+ FlowControlAction UpdateAction(FlowControlAction action);
291
+
292
+ MemoryOwner* const memory_owner_;
293
+
294
+ /// calculating what we should give for local window:
295
+ /// we track the total amount of flow control over initial window size
296
+ /// across all streams: this is data that we want to receive right now (it
297
+ /// has an outstanding read)
298
+ /// and the total amount of flow control under initial window size across all
299
+ /// streams: this is data we've read early
300
+ /// we want to adjust incoming_window such that:
301
+ /// incoming_window = total_over - max(bdp - total_under, 0)
328
302
  int64_t announced_stream_total_over_incoming_window_ = 0;
329
303
 
330
- /** should we probe bdp? */
304
+ /// should we probe bdp?
331
305
  const bool enable_bdp_probe_;
332
306
 
333
- /* bdp estimation */
307
+ // bdp estimation
334
308
  BdpEstimator bdp_estimator_;
335
309
 
336
- /* pid controller */
310
+ // pid controller
337
311
  PidController pid_controller_;
338
312
  Timestamp last_pid_update_;
313
+
314
+ int64_t remote_window_ = kDefaultWindow;
315
+ int64_t target_initial_window_size_ = kDefaultWindow;
316
+ int64_t target_frame_size_ = kDefaultFrameSize;
317
+ int64_t target_preferred_rx_crypto_frame_size_ =
318
+ kDefaultPreferredRxCryptoFrameSize;
319
+ int64_t announced_window_ = kDefaultWindow;
320
+ uint32_t acked_init_window_ = kDefaultWindow;
339
321
  };
340
322
 
341
- // Fat interface with all methods a stream flow control implementation needs
342
- // to support.
343
- class StreamFlowControlBase {
323
+ // Implementation of flow control that abides to HTTP/2 spec and attempts
324
+ // to be as performant as possible.
325
+ class StreamFlowControl final {
344
326
  public:
345
- StreamFlowControlBase() {}
346
- virtual ~StreamFlowControlBase() {}
347
-
348
- // Updates an action using the protected members.
349
- virtual FlowControlAction UpdateAction(FlowControlAction /* action */) {
350
- abort();
327
+ explicit StreamFlowControl(TransportFlowControl* tfc);
328
+ ~StreamFlowControl() {
329
+ tfc_->RemoveAnnouncedWindowDelta(announced_window_delta_);
351
330
  }
352
331
 
353
- // Using the protected members, returns an Action for this stream to be
354
- // taken by the tranport.
355
- virtual FlowControlAction MakeAction() = 0;
356
-
357
- // Bookkeeping for when data is sent on this stream.
358
- virtual void SentData(int64_t /* outgoing_frame_size */) = 0;
332
+ // Track an update to the incoming flow control counters - that is how many
333
+ // tokens we report to our peer that we're willing to accept.
334
+ // Instantiators *must* call MakeAction before destruction of this value.
335
+ class IncomingUpdateContext {
336
+ public:
337
+ explicit IncomingUpdateContext(StreamFlowControl* sfc)
338
+ : tfc_upd_(sfc->tfc_), sfc_(sfc) {}
359
339
 
360
- // Bookkeeping and error checking for when data is received by this stream.
361
- virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0;
362
-
363
- // Called to check if this stream needs to send a WINDOW_UPDATE frame.
364
- virtual uint32_t MaybeSendUpdate() = 0;
365
-
366
- // Bookkeeping for receiving a WINDOW_UPDATE from for this stream.
367
- virtual void RecvUpdate(uint32_t /* size */) = 0;
368
-
369
- // Bookkeeping for when a call pulls bytes out of the transport. At this
370
- // point we consider the data 'used' and can thus let out peer know we are
371
- // ready for more data.
372
- virtual void IncomingByteStreamUpdate(size_t /* max_size_hint */,
373
- size_t /* have_already */) {
374
- abort();
375
- }
376
-
377
- // Used in certain benchmarks in which we don't want FlowControl to be a
378
- // factor
379
- virtual void TestOnlyForceHugeWindow() {}
380
-
381
- // Getters
382
- int64_t remote_window_delta() const { return remote_window_delta_; }
383
- int64_t local_window_delta() const { return local_window_delta_; }
384
- int64_t announced_window_delta() const { return announced_window_delta_; }
340
+ FlowControlAction MakeAction() {
341
+ return sfc_->UpdateAction(tfc_upd_.MakeAction());
342
+ }
385
343
 
386
- protected:
387
- friend class grpc::testing::TrickledCHTTP2;
388
- int64_t remote_window_delta_ = 0;
389
- int64_t local_window_delta_ = 0;
390
- int64_t announced_window_delta_ = 0;
391
- };
344
+ // we have received data from the wire
345
+ absl::Status RecvData(int64_t incoming_frame_size);
392
346
 
393
- // Implementation of flow control that does NOTHING. Always returns maximum
394
- // values, never initiates writes, and assumes that the remote peer is doing
395
- // the same. To be used to narrow down on flow control as the cause of negative
396
- // performance.
397
- class StreamFlowControlDisabled : public StreamFlowControlBase {
398
- public:
399
- FlowControlAction UpdateAction(FlowControlAction action) override {
400
- return action;
401
- }
402
- FlowControlAction MakeAction() override { return FlowControlAction(); }
403
- void SentData(int64_t /* outgoing_frame_size */) override {}
404
- grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override {
405
- return GRPC_ERROR_NONE;
406
- }
407
- uint32_t MaybeSendUpdate() override { return 0; }
408
- void RecvUpdate(uint32_t /* size */) override {}
409
- void IncomingByteStreamUpdate(size_t /* max_size_hint */,
410
- size_t /* have_already */) override {}
411
- };
347
+ // the application is asking for a certain amount of bytes
348
+ void SetMinProgressSize(int64_t min_progress_size) {
349
+ sfc_->min_progress_size_ = min_progress_size;
350
+ }
412
351
 
413
- // Implementation of flow control that abides to HTTP/2 spec and attempts
414
- // to be as performant as possible.
415
- class StreamFlowControl final : public StreamFlowControlBase {
416
- public:
417
- StreamFlowControl(TransportFlowControl* tfc, const grpc_chttp2_stream* s);
418
- ~StreamFlowControl() override {
419
- tfc_->PreUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
420
- }
352
+ void SetPendingSize(int64_t pending_size);
421
353
 
422
- FlowControlAction UpdateAction(FlowControlAction action) override;
423
- FlowControlAction MakeAction() override {
424
- return UpdateAction(tfc_->MakeAction());
425
- }
354
+ private:
355
+ TransportFlowControl::IncomingUpdateContext tfc_upd_;
356
+ StreamFlowControl* const sfc_;
357
+ };
426
358
 
427
- // we have sent data on the wire, we must track this in our bookkeeping for
428
- // the remote peer's flow control.
429
- void SentData(int64_t outgoing_frame_size) override {
430
- FlowControlTrace tracer(" data sent", tfc_, this);
431
- tfc_->StreamSentData(outgoing_frame_size);
432
- remote_window_delta_ -= outgoing_frame_size;
433
- }
359
+ // Track an update to the outgoing flow control counters - that is how many
360
+ // tokens our peer has said we can send.
361
+ class OutgoingUpdateContext {
362
+ public:
363
+ explicit OutgoingUpdateContext(StreamFlowControl* sfc)
364
+ : tfc_upd_(sfc->tfc_), sfc_(sfc) {}
365
+ // we have received a WINDOW_UPDATE frame for a stream
366
+ void RecvUpdate(uint32_t size) { sfc_->remote_window_delta_ += size; }
367
+ // we have sent data on the wire, we must track this in our bookkeeping for
368
+ // the remote peer's flow control.
369
+ void SentData(int64_t outgoing_frame_size) {
370
+ tfc_upd_.StreamSentData(outgoing_frame_size);
371
+ sfc_->remote_window_delta_ -= outgoing_frame_size;
372
+ }
434
373
 
435
- // we have received data from the wire
436
- grpc_error_handle RecvData(int64_t incoming_frame_size) override;
374
+ private:
375
+ TransportFlowControl::OutgoingUpdateContext tfc_upd_;
376
+ StreamFlowControl* const sfc_;
377
+ };
437
378
 
438
379
  // returns an announce if we should send a stream update to our peer, else
439
380
  // returns zero
440
- uint32_t MaybeSendUpdate() override;
441
-
442
- // we have received a WINDOW_UPDATE frame for a stream
443
- void RecvUpdate(uint32_t size) override {
444
- FlowControlTrace trace("s updt recv", tfc_, this);
445
- remote_window_delta_ += size;
446
- }
447
-
448
- // the application is asking for a certain amount of bytes
449
- void IncomingByteStreamUpdate(size_t max_size_hint,
450
- size_t have_already) override;
381
+ uint32_t MaybeSendUpdate();
451
382
 
452
383
  int64_t remote_window_delta() const { return remote_window_delta_; }
453
- int64_t local_window_delta() const { return local_window_delta_; }
454
384
  int64_t announced_window_delta() const { return announced_window_delta_; }
455
-
456
- const grpc_chttp2_stream* stream() const { return s_; }
457
-
458
- void TestOnlyForceHugeWindow() override {
459
- announced_window_delta_ = 1024 * 1024 * 1024;
460
- local_window_delta_ = 1024 * 1024 * 1024;
461
- remote_window_delta_ = 1024 * 1024 * 1024;
462
- }
385
+ int64_t min_progress_size() const { return min_progress_size_; }
463
386
 
464
387
  private:
465
388
  TransportFlowControl* const tfc_;
466
- const grpc_chttp2_stream* const s_;
389
+ int64_t min_progress_size_ = 0;
390
+ int64_t remote_window_delta_ = 0;
391
+ int64_t announced_window_delta_ = 0;
392
+ absl::optional<int64_t> pending_size_;
467
393
 
468
- void UpdateAnnouncedWindowDelta(TransportFlowControl* tfc, int64_t change) {
469
- tfc->PreUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
470
- announced_window_delta_ += change;
471
- tfc->PostUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
472
- }
394
+ FlowControlAction UpdateAction(FlowControlAction action);
395
+ int64_t DesiredAnnounceSize() const;
473
396
  };
474
397
 
475
398
  class TestOnlyTransportTargetWindowEstimatesMocker {
@@ -485,4 +408,4 @@ extern TestOnlyTransportTargetWindowEstimatesMocker*
485
408
  } // namespace chttp2
486
409
  } // namespace grpc_core
487
410
 
488
- #endif // GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
411
+ #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H