grpc 1.47.0 → 1.53.0

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

Potentially problematic release.


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

Files changed (1777) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +386 -162
  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 +87 -32
  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 -1
  11. data/include/grpc/event_engine/slice.h +24 -4
  12. data/include/grpc/event_engine/slice_buffer.h +52 -5
  13. data/include/grpc/fork.h +25 -1
  14. data/include/grpc/grpc.h +4 -14
  15. data/include/grpc/grpc_posix.h +1 -1
  16. data/include/grpc/impl/codegen/atm.h +3 -71
  17. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
  18. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
  19. data/include/grpc/impl/codegen/atm_windows.h +3 -108
  20. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  21. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  22. data/include/grpc/impl/codegen/compression_types.h +5 -83
  23. data/include/grpc/impl/codegen/connectivity_state.h +5 -21
  24. data/include/grpc/impl/codegen/fork.h +4 -25
  25. data/include/grpc/impl/codegen/gpr_types.h +4 -35
  26. data/include/grpc/impl/codegen/grpc_types.h +5 -791
  27. data/include/grpc/impl/codegen/log.h +3 -86
  28. data/include/grpc/impl/codegen/port_platform.h +3 -763
  29. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  30. data/include/grpc/impl/codegen/slice.h +3 -106
  31. data/include/grpc/impl/codegen/status.h +4 -131
  32. data/include/grpc/impl/codegen/sync.h +3 -42
  33. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  34. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  35. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  36. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  37. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  38. data/include/grpc/impl/compression_types.h +109 -0
  39. data/include/grpc/impl/connectivity_state.h +47 -0
  40. data/include/grpc/impl/grpc_types.h +827 -0
  41. data/include/grpc/impl/propagation_bits.h +54 -0
  42. data/include/grpc/impl/slice_type.h +112 -0
  43. data/include/grpc/load_reporting.h +1 -1
  44. data/include/grpc/module.modulemap +5 -1
  45. data/include/grpc/slice.h +1 -1
  46. data/include/grpc/status.h +131 -1
  47. data/include/grpc/support/atm.h +70 -1
  48. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  49. data/include/grpc/support/atm_gcc_sync.h +58 -1
  50. data/include/grpc/support/atm_windows.h +105 -1
  51. data/include/grpc/support/log.h +87 -1
  52. data/include/grpc/support/log_windows.h +1 -1
  53. data/include/grpc/support/port_platform.h +767 -1
  54. data/include/grpc/support/string_util.h +1 -1
  55. data/include/grpc/support/sync.h +35 -2
  56. data/include/grpc/support/sync_abseil.h +11 -1
  57. data/include/grpc/support/sync_custom.h +13 -1
  58. data/include/grpc/support/sync_generic.h +24 -1
  59. data/include/grpc/support/sync_posix.h +27 -1
  60. data/include/grpc/support/sync_windows.h +15 -1
  61. data/include/grpc/support/time.h +31 -6
  62. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
  63. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  64. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  65. data/src/core/ext/filters/census/grpc_context.cc +19 -17
  66. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +49 -31
  67. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +22 -5
  68. data/src/core/ext/filters/channel_idle/idle_filter_state.h +6 -4
  69. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  70. data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
  71. data/src/core/ext/filters/client_channel/backup_poller.cc +30 -30
  72. data/src/core/ext/filters/client_channel/backup_poller.h +24 -24
  73. data/src/core/ext/filters/client_channel/channel_connectivity.cc +52 -29
  74. data/src/core/ext/filters/client_channel/client_channel.cc +348 -441
  75. data/src/core/ext/filters/client_channel/client_channel.h +46 -24
  76. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
  77. data/src/core/ext/filters/client_channel/client_channel_channelz.h +22 -22
  78. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -46
  79. data/src/core/ext/filters/client_channel/client_channel_factory.h +5 -13
  80. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -34
  81. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  82. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -26
  83. data/src/core/ext/filters/client_channel/config_selector.h +27 -23
  84. data/src/core/ext/filters/client_channel/connector.h +13 -10
  85. data/src/core/ext/filters/client_channel/dynamic_filters.cc +29 -54
  86. data/src/core/ext/filters/client_channel/dynamic_filters.h +10 -11
  87. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +21 -21
  88. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
  89. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  90. data/src/core/ext/filters/client_channel/http_proxy.cc +90 -110
  91. data/src/core/ext/filters/client_channel/http_proxy.h +36 -32
  92. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  93. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -5
  94. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
  95. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +21 -21
  96. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +27 -18
  97. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +14 -14
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +66 -132
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +361 -366
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -4
  103. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +9 -7
  104. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +21 -22
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +19 -19
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +22 -24
  108. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +28 -98
  109. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +5 -5
  110. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  111. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +418 -327
  112. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +46 -6
  113. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +140 -154
  114. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +304 -387
  115. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +388 -363
  116. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -11
  117. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +578 -628
  118. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +154 -138
  119. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +134 -115
  120. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
  121. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  122. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
  123. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +202 -224
  124. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +124 -139
  125. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  126. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  127. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  128. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +154 -258
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +183 -214
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +361 -411
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
  134. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +21 -21
  135. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +15 -18
  136. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +452 -175
  137. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +42 -43
  138. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
  139. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +88 -83
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +276 -202
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +69 -57
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  144. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +20 -21
  145. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +32 -23
  146. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +9 -21
  147. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +15 -4
  148. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +83 -57
  149. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +123 -67
  150. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +25 -17
  151. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +9 -19
  152. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +293 -286
  153. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
  154. data/src/core/ext/filters/client_channel/retry_filter.cc +135 -172
  155. data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
  156. data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -224
  157. data/src/core/ext/filters/client_channel/retry_service_config.h +22 -28
  158. data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
  159. data/src/core/ext/filters/client_channel/retry_throttle.h +29 -28
  160. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +13 -13
  161. data/src/core/ext/filters/client_channel/subchannel.cc +275 -323
  162. data/src/core/ext/filters/client_channel/subchannel.h +45 -75
  163. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +4 -4
  164. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  165. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +37 -46
  166. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +23 -111
  167. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -12
  168. data/src/core/ext/filters/deadline/deadline_filter.cc +90 -76
  169. data/src/core/ext/filters/deadline/deadline_filter.h +14 -12
  170. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +43 -18
  171. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +20 -11
  172. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  173. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +34 -13
  174. data/src/core/ext/filters/http/client/http_client_filter.cc +61 -48
  175. data/src/core/ext/filters/http/client/http_client_filter.h +29 -22
  176. data/src/core/ext/filters/http/client_authority_filter.cc +28 -28
  177. data/src/core/ext/filters/http/client_authority_filter.h +27 -24
  178. data/src/core/ext/filters/http/http_filters_plugin.cc +43 -51
  179. data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
  180. data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
  181. data/src/core/ext/filters/http/server/http_server_filter.cc +63 -56
  182. data/src/core/ext/filters/http/server/http_server_filter.h +28 -23
  183. data/src/core/ext/filters/message_size/message_size_filter.cc +109 -123
  184. data/src/core/ext/filters/message_size/message_size_filter.h +34 -17
  185. data/src/core/ext/filters/rbac/rbac_filter.cc +28 -16
  186. data/src/core/ext/filters/rbac/rbac_filter.h +11 -3
  187. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +736 -523
  188. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +18 -7
  189. data/src/core/ext/filters/server_config_selector/server_config_selector.h +20 -8
  190. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +28 -12
  191. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
  192. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -0
  193. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  194. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  195. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  196. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  197. data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
  198. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +109 -131
  199. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +30 -24
  200. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +167 -203
  201. data/src/core/ext/transport/chttp2/server/chttp2_server.h +25 -27
  202. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
  203. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -33
  204. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +30 -30
  205. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
  206. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +714 -1060
  207. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -24
  208. data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
  209. data/src/core/ext/transport/chttp2/transport/context_list.h +28 -28
  210. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  211. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  212. data/src/core/ext/transport/chttp2/transport/flow_control.cc +347 -301
  213. data/src/core/ext/transport/chttp2/transport/flow_control.h +245 -326
  214. data/src/core/ext/transport/chttp2/transport/frame.h +21 -21
  215. data/src/core/ext/transport/chttp2/transport/frame_data.cc +84 -239
  216. data/src/core/ext/transport/chttp2/transport/frame_data.h +36 -62
  217. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +38 -36
  218. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +20 -20
  219. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +27 -26
  220. data/src/core/ext/transport/chttp2/transport/frame_ping.h +22 -22
  221. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +30 -25
  222. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +21 -21
  223. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +35 -77
  224. data/src/core/ext/transport/chttp2/transport/frame_settings.h +22 -22
  225. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +31 -33
  226. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +21 -21
  227. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
  228. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +159 -208
  229. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +46 -61
  230. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -2
  231. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +11 -5
  232. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +96 -542
  233. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +23 -23
  234. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +28 -38
  235. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +32 -27
  236. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  237. data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -37
  238. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  239. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  240. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  241. data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
  242. data/src/core/ext/transport/chttp2/transport/internal.h +225 -296
  243. data/src/core/ext/transport/chttp2/transport/parsing.cc +333 -129
  244. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -23
  245. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  246. data/src/core/ext/transport/chttp2/transport/stream_map.h +33 -33
  247. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  248. data/src/core/ext/transport/chttp2/transport/varint.h +37 -34
  249. data/src/core/ext/transport/chttp2/transport/writing.cc +85 -94
  250. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -18
  251. data/src/core/ext/transport/inproc/inproc_transport.cc +223 -273
  252. data/src/core/ext/transport/inproc/inproc_transport.h +23 -21
  253. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  254. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  255. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +6 -5
  256. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +33 -8
  257. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  258. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  259. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
  260. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
  261. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  263. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  264. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  265. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  266. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  267. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  269. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  270. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  271. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  272. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  273. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  274. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  275. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  276. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  277. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +25 -19
  278. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +168 -34
  279. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  280. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  281. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -43
  282. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +195 -116
  283. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  284. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  285. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  286. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  287. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  288. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +35 -12
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +179 -14
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +23 -20
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +137 -69
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +23 -21
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +132 -44
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +67 -2
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  321. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  322. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  323. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +15 -9
  324. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +73 -18
  325. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  326. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  327. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  328. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  329. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +39 -13
  330. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +194 -15
  331. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  332. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  333. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
  334. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +28 -2
  335. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  336. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  337. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  338. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  339. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  340. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  341. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  342. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  343. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +26 -11
  344. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +124 -14
  345. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +19 -15
  346. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +78 -69
  347. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +168 -82
  348. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +887 -166
  349. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  350. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  351. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  352. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  353. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
  354. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +15 -2
  355. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  356. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  357. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  358. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  359. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  360. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  361. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  362. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  363. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +27 -14
  375. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  376. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  377. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  378. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  379. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  380. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  381. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  382. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  383. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
  384. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +29 -2
  385. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  386. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  387. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +38 -27
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +207 -52
  389. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  390. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  391. 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
  392. 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
  393. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
  394. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
  395. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
  396. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
  397. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  398. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  399. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  400. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  401. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  402. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  403. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +13 -11
  404. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +73 -23
  405. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  406. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  407. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  408. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  409. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +133 -16
  410. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +656 -12
  411. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  412. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  413. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  414. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  415. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  416. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  417. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  418. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  419. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
  420. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
  421. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  422. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  423. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  424. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  425. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  426. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  427. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  428. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  429. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  430. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  431. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  441. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  442. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  443. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  444. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  445. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  446. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  447. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  448. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  449. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  450. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  451. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  452. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  453. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  454. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
  455. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  456. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  457. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  458. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  459. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  460. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  461. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  462. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  463. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  464. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  465. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  466. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  467. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  468. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  469. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  470. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  471. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  472. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  473. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  474. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  475. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  476. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  477. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  478. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  479. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  480. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  481. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  482. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  483. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  484. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  485. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  486. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  487. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  488. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  489. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  490. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  491. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  492. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  493. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  494. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  495. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  496. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  497. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  498. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  499. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  500. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  501. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  502. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  503. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  504. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  505. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  506. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  507. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  508. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  509. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  510. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  511. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  512. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  513. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  514. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  515. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  516. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  517. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  518. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  519. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  520. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  521. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  522. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  523. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  524. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  525. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  526. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  527. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  528. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  529. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  530. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  531. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  532. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -2
  533. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -2
  534. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  535. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  536. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  537. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  538. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  539. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  540. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  541. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  542. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  543. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  544. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  545. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  546. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  547. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  548. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  549. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  550. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  551. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  552. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  553. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  554. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  555. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -2
  556. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  557. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
  558. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  559. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  560. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
  561. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  562. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  563. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  564. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +199 -187
  565. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -222
  566. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +187 -183
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +190 -186
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  575. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
  576. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +164 -137
  577. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  578. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
  579. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  580. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -129
  581. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  582. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -74
  583. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +2 -2
  584. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +740 -667
  585. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +20 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  587. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
  589. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  592. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
  593. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  594. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
  595. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  596. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  597. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +485 -467
  598. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  599. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  600. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  601. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
  602. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +156 -84
  603. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  604. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  605. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  606. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  607. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  608. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  609. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  610. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  611. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  612. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
  613. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  614. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  615. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  617. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  618. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  619. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  620. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  621. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  623. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  624. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  625. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  626. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  627. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  628. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  629. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  630. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  631. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  632. data/src/core/ext/xds/certificate_provider_store.cc +65 -3
  633. data/src/core/ext/xds/certificate_provider_store.h +21 -4
  634. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +17 -10
  635. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +12 -4
  636. data/src/core/ext/xds/upb_utils.h +3 -25
  637. data/src/core/ext/xds/xds_api.cc +90 -196
  638. data/src/core/ext/xds/xds_api.h +41 -39
  639. data/src/core/ext/xds/xds_bootstrap.cc +5 -537
  640. data/src/core/ext/xds/xds_bootstrap.h +41 -96
  641. data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
  642. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  643. data/src/core/ext/xds/xds_certificate_provider.cc +31 -25
  644. data/src/core/ext/xds/xds_certificate_provider.h +28 -4
  645. data/src/core/ext/xds/xds_channel_args.h +3 -3
  646. data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -5
  647. data/src/core/ext/xds/xds_channel_stack_modifier.h +16 -4
  648. data/src/core/ext/xds/xds_client.cc +833 -1324
  649. data/src/core/ext/xds/xds_client.h +57 -61
  650. data/src/core/ext/xds/xds_client_grpc.cc +235 -0
  651. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  652. data/src/core/ext/xds/xds_client_stats.cc +24 -25
  653. data/src/core/ext/xds/xds_client_stats.h +26 -24
  654. data/src/core/ext/xds/xds_cluster.cc +413 -245
  655. data/src/core/ext/xds/xds_cluster.h +66 -40
  656. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +67 -77
  657. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +47 -29
  658. data/src/core/ext/xds/xds_common_types.cc +238 -123
  659. data/src/core/ext/xds/xds_common_types.h +29 -16
  660. data/src/core/ext/xds/xds_endpoint.cc +265 -162
  661. data/src/core/ext/xds/xds_endpoint.h +19 -15
  662. data/src/core/ext/xds/xds_health_status.cc +80 -0
  663. data/src/core/ext/xds/xds_health_status.h +109 -0
  664. data/src/core/ext/xds/xds_http_fault_filter.cc +66 -57
  665. data/src/core/ext/xds/xds_http_fault_filter.h +19 -25
  666. data/src/core/ext/xds/xds_http_filters.cc +70 -71
  667. data/src/core/ext/xds/xds_http_filters.h +73 -25
  668. data/src/core/ext/xds/xds_http_rbac_filter.cc +168 -225
  669. data/src/core/ext/xds/xds_http_rbac_filter.h +22 -18
  670. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  671. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  672. data/src/core/ext/xds/xds_lb_policy_registry.cc +334 -0
  673. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  674. data/src/core/ext/xds/xds_listener.cc +557 -475
  675. data/src/core/ext/xds/xds_listener.h +57 -51
  676. data/src/core/ext/xds/xds_resource_type.h +28 -22
  677. data/src/core/ext/xds/xds_resource_type_impl.h +18 -17
  678. data/src/core/ext/xds/xds_route_config.cc +592 -570
  679. data/src/core/ext/xds/xds_route_config.h +74 -40
  680. data/src/core/ext/xds/xds_routing.cc +21 -7
  681. data/src/core/ext/xds/xds_routing.h +17 -12
  682. data/src/core/ext/xds/xds_server_config_fetcher.cc +227 -179
  683. data/src/core/ext/xds/xds_transport.h +86 -0
  684. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  685. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  686. data/src/core/lib/address_utils/parse_address.cc +52 -52
  687. data/src/core/lib/address_utils/parse_address.h +46 -42
  688. data/src/core/lib/address_utils/sockaddr_utils.cc +38 -35
  689. data/src/core/lib/address_utils/sockaddr_utils.h +38 -36
  690. data/src/core/lib/avl/avl.h +54 -32
  691. data/src/core/lib/backoff/backoff.cc +19 -21
  692. data/src/core/lib/backoff/backoff.h +21 -21
  693. data/src/core/lib/channel/call_finalization.h +4 -6
  694. data/src/core/lib/channel/call_tracer.h +17 -8
  695. data/src/core/lib/channel/channel_args.cc +108 -39
  696. data/src/core/lib/channel/channel_args.h +285 -111
  697. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  698. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  699. data/src/core/lib/channel/channel_fwd.h +26 -0
  700. data/src/core/lib/channel/channel_stack.cc +60 -58
  701. data/src/core/lib/channel/channel_stack.h +149 -146
  702. data/src/core/lib/channel/channel_stack_builder.cc +21 -24
  703. data/src/core/lib/channel/channel_stack_builder.h +19 -14
  704. data/src/core/lib/channel/channel_stack_builder_impl.cc +55 -26
  705. data/src/core/lib/channel/channel_stack_builder_impl.h +6 -3
  706. data/src/core/lib/channel/channel_trace.cc +24 -26
  707. data/src/core/lib/channel/channel_trace.h +22 -22
  708. data/src/core/lib/channel/channelz.cc +44 -54
  709. data/src/core/lib/channel/channelz.h +40 -32
  710. data/src/core/lib/channel/channelz_registry.cc +21 -22
  711. data/src/core/lib/channel/channelz_registry.h +21 -21
  712. data/src/core/lib/channel/connected_channel.cc +1264 -65
  713. data/src/core/lib/channel/connected_channel.h +21 -24
  714. data/src/core/lib/channel/context.h +25 -21
  715. data/src/core/lib/channel/promise_based_filter.cc +1544 -280
  716. data/src/core/lib/channel/promise_based_filter.h +466 -99
  717. data/src/core/lib/channel/status_util.cc +62 -17
  718. data/src/core/lib/channel/status_util.h +39 -22
  719. data/src/core/lib/compression/compression.cc +24 -19
  720. data/src/core/lib/compression/compression_internal.cc +43 -53
  721. data/src/core/lib/compression/compression_internal.h +27 -26
  722. data/src/core/lib/compression/message_compress.cc +28 -26
  723. data/src/core/lib/compression/message_compress.h +28 -29
  724. data/src/core/lib/config/core_configuration.cc +5 -1
  725. data/src/core/lib/config/core_configuration.h +84 -38
  726. data/src/core/lib/debug/event_log.cc +88 -0
  727. data/src/core/lib/debug/event_log.h +81 -0
  728. data/src/core/lib/debug/histogram_view.cc +69 -0
  729. data/src/core/lib/debug/histogram_view.h +37 -0
  730. data/src/core/lib/debug/stats.cc +48 -152
  731. data/src/core/lib/debug/stats.h +50 -57
  732. data/src/core/lib/debug/stats_data.cc +302 -645
  733. data/src/core/lib/debug/stats_data.h +293 -545
  734. data/src/core/lib/debug/trace.cc +18 -20
  735. data/src/core/lib/debug/trace.h +27 -48
  736. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +15 -18
  737. data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -10
  738. data/src/core/lib/event_engine/common_closures.h +71 -0
  739. data/src/core/lib/event_engine/default_event_engine.cc +99 -0
  740. data/src/core/lib/event_engine/default_event_engine.h +73 -0
  741. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -5
  742. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine_factory.h} +4 -12
  743. data/src/core/lib/event_engine/event_engine.cc +3 -40
  744. data/src/core/lib/event_engine/executor/executor.h +38 -0
  745. data/src/core/lib/event_engine/forkable.cc +106 -0
  746. data/src/core/lib/event_engine/forkable.h +61 -0
  747. data/src/core/lib/event_engine/handle_containers.h +10 -3
  748. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  749. data/src/core/lib/event_engine/poller.h +62 -0
  750. data/src/core/lib/event_engine/posix.h +158 -0
  751. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
  752. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
  753. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -0
  754. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  755. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  756. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  757. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  758. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  759. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  760. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  761. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  762. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1305 -0
  763. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
  764. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
  765. data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
  766. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  767. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +289 -0
  768. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
  769. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
  770. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  771. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  772. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  773. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  774. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  775. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  776. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  777. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  778. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  779. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  780. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  781. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  782. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  783. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  784. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  785. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  786. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  787. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  788. data/src/core/lib/event_engine/resolved_address.cc +19 -0
  789. data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
  790. data/src/core/lib/event_engine/shim.cc +56 -0
  791. data/src/core/lib/event_engine/shim.h +33 -0
  792. data/src/core/lib/event_engine/slice.cc +8 -7
  793. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  794. data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
  795. data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
  796. data/src/core/lib/event_engine/thread_local.cc +29 -0
  797. data/src/core/lib/event_engine/thread_local.h +32 -0
  798. data/src/core/lib/event_engine/thread_pool.cc +253 -0
  799. data/src/core/lib/event_engine/thread_pool.h +141 -0
  800. data/src/core/lib/event_engine/time_util.cc +30 -0
  801. data/src/core/lib/event_engine/time_util.h +32 -0
  802. data/src/core/lib/event_engine/trace.cc +6 -0
  803. data/src/core/lib/event_engine/trace.h +16 -3
  804. data/src/core/lib/event_engine/utils.cc +44 -0
  805. data/src/core/lib/event_engine/utils.h +44 -0
  806. data/src/core/lib/event_engine/windows/iocp.cc +140 -0
  807. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  808. data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
  809. data/src/core/lib/event_engine/windows/win_socket.h +129 -0
  810. data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
  811. data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
  812. data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
  813. data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
  814. data/src/core/lib/experiments/config.cc +161 -0
  815. data/src/core/lib/experiments/config.h +53 -0
  816. data/src/core/lib/experiments/experiments.cc +81 -0
  817. data/src/core/lib/experiments/experiments.h +117 -0
  818. data/src/core/lib/gpr/alloc.cc +19 -25
  819. data/src/core/lib/gpr/alloc.h +20 -20
  820. data/src/core/lib/gpr/atm.cc +17 -17
  821. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  822. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  823. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  824. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  825. data/src/core/lib/gpr/log.cc +27 -19
  826. data/src/core/lib/gpr/log_android.cc +22 -20
  827. data/src/core/lib/gpr/log_linux.cc +24 -24
  828. data/src/core/lib/gpr/log_posix.cc +20 -19
  829. data/src/core/lib/gpr/log_windows.cc +25 -25
  830. data/src/core/lib/gpr/spinlock.h +20 -20
  831. data/src/core/lib/gpr/string.cc +25 -24
  832. data/src/core/lib/gpr/string.h +61 -61
  833. data/src/core/lib/gpr/string_posix.cc +24 -24
  834. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  835. data/src/core/lib/gpr/string_windows.cc +24 -24
  836. data/src/core/lib/gpr/sync.cc +25 -25
  837. data/src/core/lib/gpr/sync_abseil.cc +36 -40
  838. data/src/core/lib/gpr/sync_posix.cc +22 -34
  839. data/src/core/lib/gpr/sync_windows.cc +29 -27
  840. data/src/core/lib/gpr/time.cc +34 -30
  841. data/src/core/lib/gpr/time_posix.cc +41 -45
  842. data/src/core/lib/gpr/time_precise.cc +22 -22
  843. data/src/core/lib/gpr/time_precise.h +21 -22
  844. data/src/core/lib/gpr/time_windows.cc +35 -29
  845. data/src/core/lib/gpr/tmpfile.h +24 -24
  846. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  847. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  848. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  849. data/src/core/lib/gpr/useful.h +83 -30
  850. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  851. data/src/core/lib/gprpp/atomic_utils.h +20 -20
  852. data/src/core/lib/gprpp/bitset.h +30 -16
  853. data/src/core/lib/gprpp/chunked_vector.h +3 -3
  854. data/src/core/lib/gprpp/construct_destruct.h +3 -3
  855. data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
  856. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
  857. data/src/core/lib/gprpp/crash.h +34 -0
  858. data/src/core/lib/gprpp/debug_location.h +60 -31
  859. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  860. data/src/core/lib/gprpp/env.h +53 -0
  861. data/src/core/lib/gprpp/env_linux.cc +80 -0
  862. data/src/core/lib/gprpp/env_posix.cc +47 -0
  863. data/src/core/lib/gprpp/env_windows.cc +56 -0
  864. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  865. data/src/core/lib/gprpp/examine_stack.h +21 -21
  866. data/src/core/lib/gprpp/fork.cc +56 -48
  867. data/src/core/lib/gprpp/fork.h +29 -35
  868. data/src/core/lib/gprpp/global_config.h +20 -20
  869. data/src/core/lib/gprpp/global_config_custom.h +20 -20
  870. data/src/core/lib/gprpp/global_config_env.cc +25 -23
  871. data/src/core/lib/gprpp/global_config_env.h +26 -26
  872. data/src/core/lib/gprpp/global_config_generic.h +21 -21
  873. data/src/core/lib/gprpp/host_port.cc +28 -26
  874. data/src/core/lib/gprpp/host_port.h +32 -31
  875. data/src/core/lib/gprpp/load_file.cc +75 -0
  876. data/src/core/lib/gprpp/load_file.h +33 -0
  877. data/src/core/lib/gprpp/manual_constructor.h +21 -88
  878. data/src/core/lib/gprpp/match.h +3 -3
  879. data/src/core/lib/gprpp/memory.h +21 -21
  880. data/src/core/lib/gprpp/mpscq.cc +17 -17
  881. data/src/core/lib/gprpp/mpscq.h +21 -21
  882. data/src/core/lib/gprpp/no_destruct.h +95 -0
  883. data/src/core/lib/gprpp/notification.h +67 -0
  884. data/src/core/lib/gprpp/orphanable.h +21 -21
  885. data/src/core/lib/gprpp/overload.h +3 -3
  886. data/src/core/lib/gprpp/packed_table.h +40 -0
  887. data/src/core/lib/gprpp/per_cpu.h +46 -0
  888. data/src/core/lib/gprpp/ref_counted.h +21 -21
  889. data/src/core/lib/gprpp/ref_counted_ptr.h +41 -54
  890. data/src/core/lib/gprpp/single_set_ptr.h +3 -3
  891. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  892. data/src/core/lib/gprpp/stat.h +3 -3
  893. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  894. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  895. data/src/core/lib/gprpp/status_helper.cc +49 -33
  896. data/src/core/lib/gprpp/status_helper.h +9 -5
  897. data/src/core/lib/gprpp/strerror.cc +43 -0
  898. data/src/core/lib/gprpp/strerror.h +29 -0
  899. data/src/core/lib/gprpp/sync.h +23 -23
  900. data/src/core/lib/gprpp/table.h +12 -4
  901. data/src/core/lib/gprpp/tchar.cc +49 -0
  902. data/src/core/lib/gprpp/tchar.h +33 -0
  903. data/src/core/lib/gprpp/thd.h +23 -23
  904. data/src/core/lib/gprpp/thd_posix.cc +30 -31
  905. data/src/core/lib/gprpp/thd_windows.cc +26 -26
  906. data/src/core/lib/gprpp/time.cc +44 -9
  907. data/src/core/lib/gprpp/time.h +73 -4
  908. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  909. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  910. data/src/core/lib/gprpp/time_util.h +4 -4
  911. data/src/core/lib/gprpp/unique_type_name.h +21 -21
  912. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  913. data/src/core/lib/gprpp/validation_errors.h +127 -0
  914. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  915. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
  916. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  917. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  918. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  919. data/src/core/lib/http/format_request.cc +24 -22
  920. data/src/core/lib/http/format_request.h +21 -21
  921. data/src/core/lib/http/httpcli.cc +79 -88
  922. data/src/core/lib/http/httpcli.h +47 -31
  923. data/src/core/lib/http/httpcli_security_connector.cc +47 -38
  924. data/src/core/lib/http/httpcli_ssl_credentials.h +6 -4
  925. data/src/core/lib/http/parser.cc +78 -90
  926. data/src/core/lib/http/parser.h +38 -35
  927. data/src/core/lib/iomgr/block_annotate.h +23 -23
  928. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  929. data/src/core/lib/iomgr/buffer_list.h +123 -101
  930. data/src/core/lib/iomgr/call_combiner.cc +32 -64
  931. data/src/core/lib/iomgr/call_combiner.h +24 -25
  932. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  933. data/src/core/lib/iomgr/cfstream_handle.h +25 -25
  934. data/src/core/lib/iomgr/closure.cc +27 -0
  935. data/src/core/lib/iomgr/closure.h +95 -58
  936. data/src/core/lib/iomgr/combiner.cc +20 -39
  937. data/src/core/lib/iomgr/combiner.h +20 -20
  938. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  939. data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
  940. data/src/core/lib/iomgr/endpoint.cc +17 -17
  941. data/src/core/lib/iomgr/endpoint.h +49 -49
  942. data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
  943. data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
  944. data/src/core/lib/iomgr/endpoint_pair.h +20 -20
  945. data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -28
  946. data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
  947. data/src/core/lib/iomgr/error.cc +51 -834
  948. data/src/core/lib/iomgr/error.h +45 -317
  949. data/src/core/lib/iomgr/error_cfstream.cc +18 -23
  950. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  951. data/src/core/lib/iomgr/ev_apple.cc +21 -21
  952. data/src/core/lib/iomgr/ev_apple.h +21 -21
  953. data/src/core/lib/iomgr/ev_epoll1_linux.cc +263 -248
  954. data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
  955. data/src/core/lib/iomgr/ev_poll_posix.cc +296 -271
  956. data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
  957. data/src/core/lib/iomgr/ev_posix.cc +87 -117
  958. data/src/core/lib/iomgr/ev_posix.h +93 -87
  959. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  960. data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
  961. data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
  962. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
  963. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  964. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  965. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  966. data/src/core/lib/iomgr/exec_ctx.cc +34 -56
  967. data/src/core/lib/iomgr/exec_ctx.h +151 -175
  968. data/src/core/lib/iomgr/executor.cc +21 -31
  969. data/src/core/lib/iomgr/executor.h +27 -30
  970. data/src/core/lib/iomgr/fork_posix.cc +30 -27
  971. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  972. data/src/core/lib/iomgr/gethostname.h +20 -20
  973. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  974. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  975. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  976. data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
  977. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  978. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  979. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  980. data/src/core/lib/iomgr/internal_errqueue.h +83 -83
  981. data/src/core/lib/iomgr/iocp_windows.cc +23 -23
  982. data/src/core/lib/iomgr/iocp_windows.h +21 -21
  983. data/src/core/lib/iomgr/iomgr.cc +25 -19
  984. data/src/core/lib/iomgr/iomgr.h +35 -35
  985. data/src/core/lib/iomgr/iomgr_fwd.h +4 -3
  986. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  987. data/src/core/lib/iomgr/iomgr_internal.h +28 -28
  988. data/src/core/lib/iomgr/iomgr_posix.cc +21 -20
  989. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -19
  990. data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
  991. data/src/core/lib/iomgr/load_file.cc +24 -27
  992. data/src/core/lib/iomgr/load_file.h +22 -22
  993. data/src/core/lib/iomgr/lockfree_event.cc +114 -131
  994. data/src/core/lib/iomgr/lockfree_event.h +23 -23
  995. data/src/core/lib/iomgr/nameser.h +86 -86
  996. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  997. data/src/core/lib/iomgr/polling_entity.h +29 -29
  998. data/src/core/lib/iomgr/pollset.cc +17 -17
  999. data/src/core/lib/iomgr/pollset.h +55 -55
  1000. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1001. data/src/core/lib/iomgr/pollset_set.h +25 -26
  1002. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  1003. data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
  1004. data/src/core/lib/iomgr/pollset_windows.cc +32 -31
  1005. data/src/core/lib/iomgr/pollset_windows.h +24 -24
  1006. data/src/core/lib/iomgr/port.h +34 -31
  1007. data/src/core/lib/iomgr/python_util.h +24 -24
  1008. data/src/core/lib/iomgr/resolve_address.cc +26 -20
  1009. data/src/core/lib/iomgr/resolve_address.h +54 -31
  1010. data/src/core/lib/iomgr/resolve_address_impl.h +5 -4
  1011. data/src/core/lib/iomgr/resolve_address_posix.cc +74 -49
  1012. data/src/core/lib/iomgr/resolve_address_posix.h +23 -10
  1013. data/src/core/lib/iomgr/resolve_address_windows.cc +59 -26
  1014. data/src/core/lib/iomgr/resolve_address_windows.h +23 -10
  1015. data/src/core/lib/iomgr/resolved_address.h +3 -3
  1016. data/src/core/lib/iomgr/sockaddr.h +23 -23
  1017. data/src/core/lib/iomgr/sockaddr_posix.h +21 -21
  1018. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +20 -18
  1019. data/src/core/lib/iomgr/sockaddr_windows.h +21 -21
  1020. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  1021. data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
  1022. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  1023. data/src/core/lib/iomgr/socket_mutator.h +39 -39
  1024. data/src/core/lib/iomgr/socket_utils.h +27 -27
  1025. data/src/core/lib/iomgr/socket_utils_common_posix.cc +80 -100
  1026. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  1027. data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
  1028. data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
  1029. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  1030. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1031. data/src/core/lib/iomgr/socket_windows.h +59 -61
  1032. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1033. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1034. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1035. data/src/core/lib/iomgr/tcp_client.h +49 -38
  1036. data/src/core/lib/iomgr/tcp_client_cfstream.cc +39 -36
  1037. data/src/core/lib/iomgr/tcp_client_posix.cc +236 -105
  1038. data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
  1039. data/src/core/lib/iomgr/tcp_client_windows.cc +64 -51
  1040. data/src/core/lib/iomgr/tcp_posix.cc +502 -341
  1041. data/src/core/lib/iomgr/tcp_posix.h +32 -30
  1042. data/src/core/lib/iomgr/tcp_server.cc +33 -24
  1043. data/src/core/lib/iomgr/tcp_server.h +78 -69
  1044. data/src/core/lib/iomgr/tcp_server_posix.cc +358 -124
  1045. data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
  1046. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +93 -58
  1047. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
  1048. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  1049. data/src/core/lib/iomgr/tcp_server_windows.cc +106 -116
  1050. data/src/core/lib/iomgr/tcp_windows.cc +109 -94
  1051. data/src/core/lib/iomgr/tcp_windows.h +34 -35
  1052. data/src/core/lib/iomgr/timer.cc +17 -17
  1053. data/src/core/lib/iomgr/timer.h +68 -68
  1054. data/src/core/lib/iomgr/timer_generic.cc +125 -134
  1055. data/src/core/lib/iomgr/timer_generic.h +21 -21
  1056. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  1057. data/src/core/lib/iomgr/timer_heap.h +22 -22
  1058. data/src/core/lib/iomgr/timer_manager.cc +31 -31
  1059. data/src/core/lib/iomgr/timer_manager.h +27 -27
  1060. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  1061. data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
  1062. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  1063. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
  1064. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  1065. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  1066. data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
  1067. data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
  1068. data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
  1069. data/src/core/lib/json/json.h +22 -25
  1070. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/json/json_args.h} +13 -10
  1071. data/src/core/lib/json/json_channel_args.h +42 -0
  1072. data/src/core/lib/json/json_object_loader.cc +217 -0
  1073. data/src/core/lib/json/json_object_loader.h +634 -0
  1074. data/src/core/lib/json/json_reader.cc +115 -90
  1075. data/src/core/lib/json/json_util.cc +14 -41
  1076. data/src/core/lib/json/json_util.h +7 -7
  1077. data/src/core/lib/json/json_writer.cc +56 -56
  1078. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +26 -58
  1079. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +32 -41
  1080. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1081. data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
  1082. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1083. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +18 -31
  1084. data/src/core/lib/matchers/matchers.cc +12 -7
  1085. data/src/core/lib/matchers/matchers.h +5 -3
  1086. data/src/core/lib/promise/activity.cc +22 -7
  1087. data/src/core/lib/promise/activity.h +110 -52
  1088. data/src/core/lib/promise/arena_promise.h +105 -72
  1089. data/src/core/lib/promise/context.h +17 -10
  1090. data/src/core/lib/promise/detail/basic_join.h +197 -0
  1091. data/src/core/lib/promise/detail/basic_seq.h +27 -32
  1092. data/src/core/lib/promise/detail/promise_factory.h +61 -13
  1093. data/src/core/lib/promise/detail/promise_like.h +3 -3
  1094. data/src/core/lib/promise/detail/status.h +31 -3
  1095. data/src/core/lib/promise/detail/switch.h +21 -21
  1096. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
  1097. data/src/core/lib/promise/if.h +195 -0
  1098. data/src/core/lib/promise/interceptor_list.h +308 -0
  1099. data/src/core/lib/promise/intra_activity_waiter.h +9 -3
  1100. data/src/core/lib/promise/latch.h +110 -22
  1101. data/src/core/lib/promise/loop.h +12 -9
  1102. data/src/core/lib/promise/map.h +4 -6
  1103. data/src/core/lib/promise/pipe.h +608 -0
  1104. data/src/core/lib/promise/poll.h +129 -11
  1105. data/src/core/lib/promise/promise.h +5 -5
  1106. data/src/core/lib/promise/race.h +6 -9
  1107. data/src/core/lib/promise/seq.h +32 -12
  1108. data/src/core/lib/promise/sleep.cc +56 -42
  1109. data/src/core/lib/promise/sleep.h +40 -32
  1110. data/src/core/lib/promise/trace.cc +20 -0
  1111. data/src/core/lib/promise/trace.h +24 -0
  1112. data/src/core/lib/promise/try_join.h +82 -0
  1113. data/src/core/lib/promise/try_seq.h +39 -21
  1114. data/src/core/lib/resolver/resolver.cc +17 -59
  1115. data/src/core/lib/resolver/resolver.h +21 -18
  1116. data/src/core/lib/resolver/resolver_factory.h +10 -8
  1117. data/src/core/lib/resolver/resolver_registry.cc +17 -9
  1118. data/src/core/lib/resolver/resolver_registry.h +15 -5
  1119. data/src/core/lib/resolver/server_address.cc +38 -32
  1120. data/src/core/lib/resolver/server_address.h +32 -31
  1121. data/src/core/lib/resource_quota/api.cc +10 -2
  1122. data/src/core/lib/resource_quota/api.h +10 -4
  1123. data/src/core/lib/resource_quota/arena.cc +85 -21
  1124. data/src/core/lib/resource_quota/arena.h +196 -23
  1125. data/src/core/lib/resource_quota/memory_quota.cc +287 -108
  1126. data/src/core/lib/resource_quota/memory_quota.h +175 -59
  1127. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1128. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1129. data/src/core/lib/resource_quota/resource_quota.h +4 -4
  1130. data/src/core/lib/resource_quota/thread_quota.h +3 -3
  1131. data/src/core/lib/resource_quota/trace.h +3 -3
  1132. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1133. data/src/core/lib/security/authorization/authorization_policy_provider.h +10 -3
  1134. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
  1135. data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
  1136. data/src/core/lib/security/authorization/evaluate_args.h +9 -6
  1137. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +5 -1
  1138. data/src/core/lib/security/authorization/grpc_authorization_engine.h +10 -3
  1139. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +16 -3
  1140. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +16 -5
  1141. data/src/core/lib/security/authorization/matchers.cc +44 -30
  1142. data/src/core/lib/security/authorization/matchers.h +10 -3
  1143. data/src/core/lib/security/authorization/rbac_policy.cc +6 -2
  1144. data/src/core/lib/security/authorization/rbac_policy.h +10 -3
  1145. data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +9 -4
  1146. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1147. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1148. data/src/core/lib/security/context/security_context.cc +27 -25
  1149. data/src/core/lib/security/context/security_context.h +56 -34
  1150. data/src/core/lib/security/credentials/alts/alts_credentials.cc +23 -22
  1151. data/src/core/lib/security/credentials/alts/alts_credentials.h +61 -57
  1152. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  1153. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
  1154. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  1155. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  1156. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  1157. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1158. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1159. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
  1160. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1161. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  1162. data/src/core/lib/security/credentials/call_creds_util.h +4 -3
  1163. data/src/core/lib/security/credentials/channel_creds_registry.h +9 -4
  1164. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +13 -3
  1165. data/src/core/lib/security/credentials/composite/composite_credentials.cc +27 -31
  1166. data/src/core/lib/security/credentials/composite/composite_credentials.h +40 -29
  1167. data/src/core/lib/security/credentials/credentials.cc +23 -26
  1168. data/src/core/lib/security/credentials/credentials.h +62 -55
  1169. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +123 -76
  1170. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -3
  1171. data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
  1172. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1173. data/src/core/lib/security/credentials/external/external_account_credentials.cc +83 -68
  1174. data/src/core/lib/security/credentials/external/external_account_credentials.h +14 -3
  1175. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -26
  1176. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
  1177. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +42 -31
  1178. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -3
  1179. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -36
  1180. data/src/core/lib/security/credentials/fake/fake_credentials.h +49 -42
  1181. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
  1182. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +129 -107
  1183. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +31 -25
  1184. data/src/core/lib/security/credentials/iam/iam_credentials.cc +27 -20
  1185. data/src/core/lib/security/credentials/iam/iam_credentials.h +31 -21
  1186. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
  1187. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +10 -6
  1188. data/src/core/lib/security/credentials/jwt/json_token.cc +40 -29
  1189. data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
  1190. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +29 -27
  1191. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +35 -21
  1192. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +113 -89
  1193. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
  1194. data/src/core/lib/security/credentials/local/local_credentials.cc +24 -24
  1195. data/src/core/lib/security/credentials/local/local_credentials.h +32 -26
  1196. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +85 -81
  1197. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +42 -21
  1198. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +31 -30
  1199. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +47 -23
  1200. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -40
  1201. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +35 -23
  1202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
  1203. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
  1204. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +55 -48
  1205. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +22 -9
  1206. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +10 -3
  1207. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -10
  1208. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +22 -23
  1209. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
  1210. data/src/core/lib/security/credentials/tls/tls_credentials.cc +36 -44
  1211. data/src/core/lib/security/credentials/tls/tls_credentials.h +28 -25
  1212. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
  1213. data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
  1214. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -32
  1215. data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
  1216. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +60 -54
  1217. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +49 -47
  1218. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +74 -78
  1219. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +25 -26
  1220. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +15 -6
  1221. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +26 -15
  1222. data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
  1223. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
  1224. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +43 -38
  1225. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1226. data/src/core/lib/security/security_connector/local/local_security_connector.cc +64 -47
  1227. data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
  1228. data/src/core/lib/security/security_connector/security_connector.cc +37 -35
  1229. data/src/core/lib/security/security_connector/security_connector.h +57 -44
  1230. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +54 -45
  1231. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
  1232. data/src/core/lib/security/security_connector/ssl_utils.cc +47 -39
  1233. data/src/core/lib/security/security_connector/ssl_utils.h +45 -42
  1234. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1235. data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
  1236. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +58 -56
  1237. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +48 -28
  1238. data/src/core/lib/security/transport/auth_filters.h +53 -24
  1239. data/src/core/lib/security/transport/client_auth_filter.cc +51 -32
  1240. data/src/core/lib/security/transport/secure_endpoint.cc +112 -68
  1241. data/src/core/lib/security/transport/secure_endpoint.h +28 -27
  1242. data/src/core/lib/security/transport/security_handshaker.cc +139 -109
  1243. data/src/core/lib/security/transport/security_handshaker.h +27 -22
  1244. data/src/core/lib/security/transport/server_auth_filter.cc +157 -267
  1245. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  1246. data/src/core/lib/security/transport/tsi_error.h +20 -20
  1247. data/src/core/lib/security/util/json_util.cc +24 -24
  1248. data/src/core/lib/security/util/json_util.h +21 -23
  1249. data/src/core/lib/service_config/service_config.h +15 -4
  1250. data/src/core/lib/service_config/service_config_call_data.h +11 -4
  1251. data/src/core/lib/service_config/service_config_impl.cc +107 -153
  1252. data/src/core/lib/service_config/service_config_impl.h +19 -26
  1253. data/src/core/lib/service_config/service_config_parser.cc +10 -30
  1254. data/src/core/lib/service_config/service_config_parser.h +13 -21
  1255. data/src/core/lib/slice/b64.cc +26 -26
  1256. data/src/core/lib/slice/b64.h +32 -32
  1257. data/src/core/lib/slice/percent_encoding.cc +21 -30
  1258. data/src/core/lib/slice/percent_encoding.h +28 -28
  1259. data/src/core/lib/slice/slice.cc +57 -45
  1260. data/src/core/lib/slice/slice.h +57 -18
  1261. data/src/core/lib/slice/slice_buffer.cc +93 -60
  1262. data/src/core/lib/slice/slice_buffer.h +72 -10
  1263. data/src/core/lib/slice/slice_internal.h +34 -42
  1264. data/src/core/lib/slice/slice_refcount.cc +3 -18
  1265. data/src/core/lib/slice/slice_refcount.h +53 -18
  1266. data/src/core/lib/slice/slice_string_helpers.cc +17 -37
  1267. data/src/core/lib/slice/slice_string_helpers.h +21 -25
  1268. data/src/core/lib/surface/api_trace.cc +17 -17
  1269. data/src/core/lib/surface/api_trace.h +25 -25
  1270. data/src/core/lib/surface/builtins.h +3 -3
  1271. data/src/core/lib/surface/byte_buffer.cc +22 -23
  1272. data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
  1273. data/src/core/lib/surface/call.cc +2205 -471
  1274. data/src/core/lib/surface/call.h +121 -42
  1275. data/src/core/lib/surface/call_details.cc +20 -21
  1276. data/src/core/lib/surface/call_log_batch.cc +19 -18
  1277. data/src/core/lib/surface/call_test_only.h +33 -33
  1278. data/src/core/lib/surface/call_trace.cc +123 -0
  1279. data/src/core/lib/surface/call_trace.h +30 -0
  1280. data/src/core/lib/surface/channel.cc +65 -69
  1281. data/src/core/lib/surface/channel.h +45 -35
  1282. data/src/core/lib/surface/channel_init.cc +17 -17
  1283. data/src/core/lib/surface/channel_init.h +20 -20
  1284. data/src/core/lib/surface/channel_ping.cc +20 -20
  1285. data/src/core/lib/surface/channel_stack_type.cc +21 -17
  1286. data/src/core/lib/surface/channel_stack_type.h +22 -20
  1287. data/src/core/lib/surface/completion_queue.cc +188 -218
  1288. data/src/core/lib/surface/completion_queue.h +39 -41
  1289. data/src/core/lib/surface/completion_queue_factory.cc +33 -28
  1290. data/src/core/lib/surface/completion_queue_factory.h +22 -22
  1291. data/src/core/lib/surface/event_string.cc +18 -17
  1292. data/src/core/lib/surface/event_string.h +22 -22
  1293. data/src/core/lib/surface/init.cc +44 -73
  1294. data/src/core/lib/surface/init.h +20 -20
  1295. data/src/core/lib/surface/init_internally.cc +25 -0
  1296. data/src/core/lib/surface/init_internally.h +37 -0
  1297. data/src/core/lib/surface/lame_client.cc +33 -30
  1298. data/src/core/lib/surface/lame_client.h +23 -23
  1299. data/src/core/lib/surface/metadata_array.cc +17 -18
  1300. data/src/core/lib/surface/server.cc +349 -130
  1301. data/src/core/lib/surface/server.h +24 -22
  1302. data/src/core/lib/surface/validate_metadata.cc +32 -43
  1303. data/src/core/lib/surface/validate_metadata.h +21 -21
  1304. data/src/core/lib/surface/version.cc +21 -21
  1305. data/src/core/lib/transport/bdp_estimator.cc +18 -20
  1306. data/src/core/lib/transport/bdp_estimator.h +21 -22
  1307. data/src/core/lib/transport/connectivity_state.cc +19 -20
  1308. data/src/core/lib/transport/connectivity_state.h +23 -23
  1309. data/src/core/lib/transport/error_utils.cc +54 -78
  1310. data/src/core/lib/transport/error_utils.h +24 -24
  1311. data/src/core/lib/transport/handshaker.cc +66 -54
  1312. data/src/core/lib/transport/handshaker.h +51 -47
  1313. data/src/core/lib/transport/handshaker_factory.h +49 -24
  1314. data/src/core/lib/transport/handshaker_registry.cc +27 -20
  1315. data/src/core/lib/transport/handshaker_registry.h +25 -28
  1316. data/src/core/lib/transport/http2_errors.h +22 -22
  1317. data/src/core/lib/transport/http_connect_handshaker.cc +56 -57
  1318. data/src/core/lib/transport/http_connect_handshaker.h +21 -21
  1319. data/src/core/lib/transport/metadata_batch.cc +22 -4
  1320. data/src/core/lib/transport/metadata_batch.h +129 -35
  1321. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  1322. data/src/core/lib/transport/parsed_metadata.h +7 -5
  1323. data/src/core/lib/transport/pid_controller.cc +20 -20
  1324. data/src/core/lib/transport/pid_controller.h +27 -27
  1325. data/src/core/lib/transport/status_conversion.cc +23 -25
  1326. data/src/core/lib/transport/status_conversion.h +22 -22
  1327. data/src/core/lib/transport/tcp_connect_handshaker.cc +34 -42
  1328. data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
  1329. data/src/core/lib/transport/timeout_encoding.cc +22 -22
  1330. data/src/core/lib/transport/timeout_encoding.h +20 -20
  1331. data/src/core/lib/transport/transport.cc +85 -46
  1332. data/src/core/lib/transport/transport.h +219 -215
  1333. data/src/core/lib/transport/transport_fwd.h +20 -0
  1334. data/src/core/lib/transport/transport_impl.h +46 -46
  1335. data/src/core/lib/transport/transport_op_string.cc +32 -30
  1336. data/src/core/lib/uri/uri_parser.cc +1 -1
  1337. data/src/core/lib/uri/uri_parser.h +3 -3
  1338. data/src/core/plugin_registry/grpc_plugin_registry.cc +53 -73
  1339. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +20 -39
  1340. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  1341. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  1342. data/src/core/tsi/alts/crypt/gsec.h +336 -336
  1343. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1344. data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
  1345. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1346. data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
  1347. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  1348. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
  1349. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1350. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
  1351. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1352. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1353. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  1354. data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
  1355. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +117 -97
  1356. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
  1357. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  1358. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
  1359. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +51 -43
  1360. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
  1361. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
  1362. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  1363. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
  1364. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  1365. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
  1366. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  1367. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
  1368. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1369. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
  1370. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
  1371. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  1372. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
  1373. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  1374. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
  1375. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
  1376. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
  1377. data/src/core/tsi/fake_transport_security.cc +146 -110
  1378. data/src/core/tsi/fake_transport_security.h +36 -30
  1379. data/src/core/tsi/local_transport_security.cc +43 -38
  1380. data/src/core/tsi/local_transport_security.h +33 -33
  1381. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
  1382. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
  1383. data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
  1384. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
  1385. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  1386. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +31 -22
  1387. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
  1388. data/src/core/tsi/ssl_transport_security.cc +299 -370
  1389. data/src/core/tsi/ssl_transport_security.h +206 -203
  1390. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1391. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1392. data/src/core/tsi/ssl_types.h +27 -27
  1393. data/src/core/tsi/transport_security.cc +44 -32
  1394. data/src/core/tsi/transport_security.h +49 -48
  1395. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1396. data/src/core/tsi/transport_security_grpc.h +44 -41
  1397. data/src/core/tsi/transport_security_interface.h +344 -332
  1398. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1399. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1400. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1401. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1402. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1403. data/src/ruby/ext/grpc/extconf.rb +97 -19
  1404. data/src/ruby/ext/grpc/rb_call.c +1 -0
  1405. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1406. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1407. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  1408. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1409. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  1410. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +60 -60
  1411. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1412. data/src/ruby/lib/grpc/errors.rb +1 -1
  1413. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1414. data/src/ruby/lib/grpc/version.rb +1 -1
  1415. data/src/ruby/pb/generate_proto_ruby.sh +0 -6
  1416. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  1417. data/src/ruby/spec/channel_spec.rb +5 -43
  1418. data/src/ruby/spec/client_server_spec.rb +20 -8
  1419. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  1420. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  1421. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1422. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1423. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
  1424. data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
  1425. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  1426. data/third_party/abseil-cpp/absl/base/config.h +221 -39
  1427. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1428. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
  1429. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  1430. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
  1431. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  1432. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  1433. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  1434. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  1435. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  1436. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  1437. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1438. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
  1439. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
  1440. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
  1441. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
  1442. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  1443. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  1444. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1445. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1446. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
  1447. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  1448. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  1449. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  1450. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  1451. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
  1452. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  1453. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1454. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  1455. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  1456. data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
  1457. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  1458. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  1459. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  1460. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -5
  1461. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  1462. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -16
  1463. data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
  1464. data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
  1465. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  1466. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
  1467. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  1468. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
  1469. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
  1470. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
  1471. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
  1472. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
  1473. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  1474. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  1475. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  1476. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  1477. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  1478. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  1479. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  1480. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  1481. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  1482. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  1483. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  1484. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  1485. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  1486. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  1487. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  1488. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  1489. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  1490. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  1491. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  1492. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  1493. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  1494. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  1495. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
  1496. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  1497. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
  1498. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  1499. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  1500. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  1501. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  1502. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
  1503. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  1504. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
  1505. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
  1506. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  1507. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  1508. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
  1509. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  1510. data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
  1511. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  1512. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  1513. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  1514. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  1515. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  1516. data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
  1517. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  1518. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  1519. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  1520. data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
  1521. data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
  1522. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  1523. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
  1524. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  1525. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  1526. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  1527. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -2
  1528. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  1529. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  1530. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +3 -24
  1531. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
  1532. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  1533. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  1534. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  1535. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  1536. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
  1537. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  1538. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  1539. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  1540. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  1541. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  1542. data/third_party/abseil-cpp/absl/random/random.h +6 -6
  1543. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  1544. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  1545. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  1546. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  1547. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1548. data/third_party/abseil-cpp/absl/status/status.cc +193 -14
  1549. data/third_party/abseil-cpp/absl/status/status.h +24 -14
  1550. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  1551. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  1552. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1553. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  1554. data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
  1555. data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
  1556. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1557. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1558. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1559. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  1560. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  1561. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  1562. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  1563. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  1564. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1565. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1566. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  1567. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
  1568. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
  1569. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
  1570. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
  1571. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  1572. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  1573. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  1574. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  1575. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  1576. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  1577. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  1578. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  1579. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  1580. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  1581. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
  1582. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  1583. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
  1584. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  1585. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  1586. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  1587. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
  1588. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  1589. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  1590. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  1591. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  1592. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  1593. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  1594. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
  1595. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  1596. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
  1597. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
  1598. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  1599. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1600. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
  1601. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  1602. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  1603. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  1604. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
  1605. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1606. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  1607. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  1608. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  1609. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  1610. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1611. data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
  1612. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  1613. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  1614. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
  1615. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  1616. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1617. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  1618. data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
  1619. data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
  1620. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1621. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  1622. data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
  1623. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  1624. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1625. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  1626. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  1627. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  1628. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  1629. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  1630. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  1631. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  1632. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
  1633. data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
  1634. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  1635. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
  1636. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  1637. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  1638. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  1639. data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
  1640. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1641. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  1642. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1643. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  1644. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  1645. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  1646. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  1647. data/third_party/abseil-cpp/absl/time/time.h +268 -169
  1648. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1649. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  1650. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  1651. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  1652. data/third_party/abseil-cpp/absl/types/span.h +31 -8
  1653. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
  1654. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
  1655. data/third_party/re2/re2/bitstate.cc +3 -3
  1656. data/third_party/re2/re2/dfa.cc +13 -13
  1657. data/third_party/re2/re2/nfa.cc +4 -4
  1658. data/third_party/re2/re2/onepass.cc +2 -2
  1659. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  1660. data/third_party/re2/re2/prefilter_tree.h +3 -2
  1661. data/third_party/re2/re2/prog.cc +11 -2
  1662. data/third_party/re2/re2/prog.h +17 -5
  1663. data/third_party/re2/re2/re2.cc +6 -11
  1664. data/third_party/re2/re2/re2.h +1 -1
  1665. data/third_party/re2/re2/regexp.cc +1 -2
  1666. data/third_party/re2/re2/stringpiece.h +10 -7
  1667. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  1668. data/third_party/re2/re2/unicode_groups.cc +319 -151
  1669. data/third_party/re2/re2/walker-inl.h +3 -2
  1670. data/third_party/re2/util/mutex.h +4 -4
  1671. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  1672. data/third_party/upb/upb/arena.c +277 -0
  1673. data/third_party/upb/upb/arena.h +225 -0
  1674. data/third_party/upb/upb/array.c +114 -0
  1675. data/third_party/upb/upb/array.h +83 -0
  1676. data/third_party/upb/upb/collections.h +36 -0
  1677. data/third_party/upb/upb/decode.c +161 -65
  1678. data/third_party/upb/upb/decode.h +1 -0
  1679. data/third_party/upb/upb/decode_fast.c +1 -1
  1680. data/third_party/upb/upb/def.c +10 -2
  1681. data/third_party/upb/upb/def.h +8 -1
  1682. data/third_party/upb/upb/def.hpp +7 -4
  1683. data/third_party/upb/upb/encode.c +29 -20
  1684. data/third_party/upb/upb/encode.h +16 -6
  1685. data/third_party/upb/upb/extension_registry.c +93 -0
  1686. data/third_party/upb/upb/extension_registry.h +84 -0
  1687. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  1688. data/third_party/upb/upb/internal/table.h +385 -0
  1689. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  1690. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  1691. data/third_party/upb/upb/json_decode.c +1512 -0
  1692. data/third_party/upb/upb/json_decode.h +47 -0
  1693. data/third_party/upb/upb/json_encode.c +7 -3
  1694. data/third_party/upb/upb/json_encode.h +6 -3
  1695. data/third_party/upb/upb/map.c +108 -0
  1696. data/third_party/upb/upb/map.h +117 -0
  1697. data/third_party/upb/upb/message_value.h +66 -0
  1698. data/third_party/upb/upb/mini_table.c +1147 -0
  1699. data/third_party/upb/upb/mini_table.h +189 -0
  1700. data/third_party/upb/upb/mini_table.hpp +112 -0
  1701. data/third_party/upb/upb/msg.c +2 -62
  1702. data/third_party/upb/upb/msg.h +2 -45
  1703. data/third_party/upb/upb/msg_internal.h +28 -22
  1704. data/third_party/upb/upb/port_def.inc +2 -1
  1705. data/third_party/upb/upb/port_undef.inc +1 -0
  1706. data/third_party/upb/upb/reflection.c +2 -159
  1707. data/third_party/upb/upb/reflection.h +2 -112
  1708. data/third_party/upb/upb/status.c +86 -0
  1709. data/third_party/upb/upb/status.h +66 -0
  1710. data/third_party/upb/upb/table.c +2 -2
  1711. data/third_party/upb/upb/table_internal.h +3 -352
  1712. data/third_party/upb/upb/text_encode.c +3 -2
  1713. data/third_party/upb/upb/upb.c +4 -290
  1714. data/third_party/upb/upb/upb.h +7 -196
  1715. data/third_party/zlib/compress.c +3 -3
  1716. data/third_party/zlib/crc32.c +21 -12
  1717. data/third_party/zlib/deflate.c +112 -106
  1718. data/third_party/zlib/deflate.h +2 -2
  1719. data/third_party/zlib/gzlib.c +1 -1
  1720. data/third_party/zlib/gzread.c +3 -5
  1721. data/third_party/zlib/gzwrite.c +1 -1
  1722. data/third_party/zlib/infback.c +10 -7
  1723. data/third_party/zlib/inflate.c +5 -2
  1724. data/third_party/zlib/inftrees.c +2 -2
  1725. data/third_party/zlib/inftrees.h +1 -1
  1726. data/third_party/zlib/trees.c +61 -62
  1727. data/third_party/zlib/uncompr.c +2 -2
  1728. data/third_party/zlib/zconf.h +16 -3
  1729. data/third_party/zlib/zlib.h +10 -10
  1730. data/third_party/zlib/zutil.c +9 -7
  1731. data/third_party/zlib/zutil.h +1 -0
  1732. metadata +339 -78
  1733. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  1734. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  1735. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -192
  1736. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
  1737. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  1738. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -91
  1739. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
  1740. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -180
  1741. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -179
  1742. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -457
  1743. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  1744. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -388
  1745. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -61
  1746. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  1747. data/src/core/ext/xds/certificate_provider_registry.h +0 -57
  1748. data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
  1749. data/src/core/lib/event_engine/iomgr_engine.h +0 -118
  1750. data/src/core/lib/gpr/env.h +0 -40
  1751. data/src/core/lib/gpr/env_linux.cc +0 -75
  1752. data/src/core/lib/gpr/env_posix.cc +0 -46
  1753. data/src/core/lib/gpr/env_windows.cc +0 -74
  1754. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1755. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1756. data/src/core/lib/gpr/string_windows.h +0 -32
  1757. data/src/core/lib/gpr/tls.h +0 -156
  1758. data/src/core/lib/iomgr/error_internal.h +0 -66
  1759. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  1760. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  1761. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  1762. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  1763. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  1764. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  1765. data/src/core/lib/profiling/basic_timers.cc +0 -295
  1766. data/src/core/lib/profiling/stap_timers.cc +0 -50
  1767. data/src/core/lib/profiling/timers.h +0 -94
  1768. data/src/core/lib/promise/call_push_pull.h +0 -148
  1769. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
  1770. data/src/core/lib/slice/slice_api.cc +0 -39
  1771. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  1772. data/src/core/lib/slice/slice_refcount_base.h +0 -60
  1773. data/src/core/lib/slice/slice_split.cc +0 -103
  1774. data/src/core/lib/slice/slice_split.h +0 -36
  1775. data/src/core/lib/transport/byte_stream.cc +0 -165
  1776. data/src/core/lib/transport/byte_stream.h +0 -170
  1777. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -0,0 +1,717 @@
1
+ // Copyright 2022 gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENDPOINT_H
16
+ #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENDPOINT_H
17
+
18
+ #include <grpc/support/port_platform.h>
19
+
20
+ // IWYU pragma: no_include <bits/types/struct_iovec.h>
21
+
22
+ #include <atomic>
23
+ #include <cstdint>
24
+ #include <memory>
25
+ #include <new>
26
+ #include <utility>
27
+
28
+ #include "absl/base/thread_annotations.h"
29
+ #include "absl/container/flat_hash_map.h"
30
+ #include "absl/functional/any_invocable.h"
31
+ #include "absl/hash/hash.h"
32
+ #include "absl/meta/type_traits.h"
33
+ #include "absl/status/status.h"
34
+ #include "absl/status/statusor.h"
35
+
36
+ #include <grpc/event_engine/event_engine.h>
37
+ #include <grpc/event_engine/memory_allocator.h>
38
+ #include <grpc/event_engine/slice_buffer.h>
39
+ #include <grpc/support/alloc.h>
40
+ #include <grpc/support/log.h>
41
+
42
+ #include "src/core/lib/event_engine/posix.h"
43
+ #include "src/core/lib/event_engine/posix_engine/event_poller.h"
44
+ #include "src/core/lib/event_engine/posix_engine/posix_engine_closure.h"
45
+ #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
46
+ #include "src/core/lib/event_engine/posix_engine/traced_buffer_list.h"
47
+ #include "src/core/lib/gprpp/crash.h"
48
+ #include "src/core/lib/gprpp/ref_counted.h"
49
+ #include "src/core/lib/gprpp/sync.h"
50
+ #include "src/core/lib/iomgr/port.h"
51
+ #include "src/core/lib/resource_quota/memory_quota.h"
52
+
53
+ #ifdef GRPC_POSIX_SOCKET_TCP
54
+
55
+ #include <sys/socket.h> // IWYU pragma: keep
56
+ #include <sys/types.h> // IWYU pragma: keep
57
+
58
+ #ifdef GRPC_MSG_IOVLEN_TYPE
59
+ typedef GRPC_MSG_IOVLEN_TYPE msg_iovlen_type;
60
+ #else
61
+ typedef size_t msg_iovlen_type;
62
+ #endif
63
+
64
+ #endif // GRPC_POSIX_SOCKET_TCP
65
+
66
+ namespace grpc_event_engine {
67
+ namespace experimental {
68
+
69
+ #ifdef GRPC_POSIX_SOCKET_TCP
70
+
71
+ class TcpZerocopySendRecord {
72
+ public:
73
+ TcpZerocopySendRecord() { buf_.Clear(); };
74
+
75
+ ~TcpZerocopySendRecord() { DebugAssertEmpty(); }
76
+
77
+ // TcpZerocopySendRecord contains a slice buffer holding the slices to be
78
+ // sent. Given the slices that we wish to send, and the current offset into
79
+ // the slice buffer (indicating which have already been sent), populate an
80
+ // iovec array that will be used for a zerocopy enabled sendmsg().
81
+ // unwind_slice_idx - input/output parameter. It indicates the index of last
82
+ // slice whose contents were partially sent in the previous sendmsg. After
83
+ // this function returns, it gets updated to to a new offset
84
+ // depending on the number of bytes which are decided to be sent in the
85
+ // current sendmsg.
86
+ // unwind_byte_idx - input/output parameter. It indicates the byte offset
87
+ // within the last slice whose contents were partially sent in the previous
88
+ // sendmsg. After this function returns, it gets updated to a new offset
89
+ // depending on the number of bytes which are decided to be sent in the
90
+ // current sendmsg.
91
+ // sending_length - total number of bytes to be sent in the current sendmsg.
92
+ // iov - An iovec array containing the bytes to be sent in the current
93
+ // sendmsg.
94
+ // Returns: the number of entries in the iovec array.
95
+ //
96
+ msg_iovlen_type PopulateIovs(size_t* unwind_slice_idx,
97
+ size_t* unwind_byte_idx, size_t* sending_length,
98
+ iovec* iov);
99
+
100
+ // A sendmsg() may not be able to send the bytes that we requested at this
101
+ // time, returning EAGAIN (possibly due to backpressure). In this case,
102
+ // unwind the offset into the slice buffer so we retry sending these bytes.
103
+ void UnwindIfThrottled(size_t unwind_slice_idx, size_t unwind_byte_idx) {
104
+ out_offset_.byte_idx = unwind_byte_idx;
105
+ out_offset_.slice_idx = unwind_slice_idx;
106
+ }
107
+
108
+ // Update the offset into the slice buffer based on how much we wanted to sent
109
+ // vs. what sendmsg() actually sent (which may be lower, possibly due to
110
+ // backpressure).
111
+ void UpdateOffsetForBytesSent(size_t sending_length, size_t actually_sent);
112
+
113
+ // Indicates whether all underlying data has been sent or not.
114
+ bool AllSlicesSent() { return out_offset_.slice_idx == buf_.Count(); }
115
+
116
+ // Reset this structure for a new tcp_write() with zerocopy.
117
+ void PrepareForSends(
118
+ grpc_event_engine::experimental::SliceBuffer& slices_to_send) {
119
+ DebugAssertEmpty();
120
+ out_offset_.slice_idx = 0;
121
+ out_offset_.byte_idx = 0;
122
+ buf_.Swap(slices_to_send);
123
+ Ref();
124
+ }
125
+
126
+ // References: 1 reference per sendmsg(), and 1 for the tcp_write().
127
+ void Ref() { ref_.fetch_add(1, std::memory_order_relaxed); }
128
+
129
+ // Unref: called when we get an error queue notification for a sendmsg(), if a
130
+ // sendmsg() failed or when tcp_write() is done.
131
+ bool Unref() {
132
+ const intptr_t prior = ref_.fetch_sub(1, std::memory_order_acq_rel);
133
+ GPR_DEBUG_ASSERT(prior > 0);
134
+ if (prior == 1) {
135
+ AllSendsComplete();
136
+ return true;
137
+ }
138
+ return false;
139
+ }
140
+
141
+ private:
142
+ struct OutgoingOffset {
143
+ size_t slice_idx = 0;
144
+ size_t byte_idx = 0;
145
+ };
146
+
147
+ void DebugAssertEmpty() {
148
+ GPR_DEBUG_ASSERT(buf_.Count() == 0);
149
+ GPR_DEBUG_ASSERT(buf_.Length() == 0);
150
+ GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0);
151
+ }
152
+
153
+ // When all sendmsg() calls associated with this tcp_write() have been
154
+ // completed (ie. we have received the notifications for each sequence number
155
+ // for each sendmsg()) and all reference counts have been dropped, drop our
156
+ // reference to the underlying data since we no longer need it.
157
+ void AllSendsComplete() {
158
+ GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0);
159
+ buf_.Clear();
160
+ }
161
+
162
+ grpc_event_engine::experimental::SliceBuffer buf_;
163
+ std::atomic<intptr_t> ref_{0};
164
+ OutgoingOffset out_offset_;
165
+ };
166
+
167
+ class TcpZerocopySendCtx {
168
+ public:
169
+ static constexpr int kDefaultMaxSends = 4;
170
+ static constexpr size_t kDefaultSendBytesThreshold = 16 * 1024; // 16KB
171
+
172
+ explicit TcpZerocopySendCtx(
173
+ bool zerocopy_enabled, int max_sends = kDefaultMaxSends,
174
+ size_t send_bytes_threshold = kDefaultSendBytesThreshold)
175
+ : max_sends_(max_sends),
176
+ free_send_records_size_(max_sends),
177
+ threshold_bytes_(send_bytes_threshold) {
178
+ send_records_ = static_cast<TcpZerocopySendRecord*>(
179
+ gpr_malloc(max_sends * sizeof(*send_records_)));
180
+ free_send_records_ = static_cast<TcpZerocopySendRecord**>(
181
+ gpr_malloc(max_sends * sizeof(*free_send_records_)));
182
+ if (send_records_ == nullptr || free_send_records_ == nullptr) {
183
+ gpr_free(send_records_);
184
+ gpr_free(free_send_records_);
185
+ gpr_log(GPR_INFO, "Disabling TCP TX zerocopy due to memory pressure.\n");
186
+ memory_limited_ = true;
187
+ enabled_ = false;
188
+ } else {
189
+ for (int idx = 0; idx < max_sends_; ++idx) {
190
+ new (send_records_ + idx) TcpZerocopySendRecord();
191
+ free_send_records_[idx] = send_records_ + idx;
192
+ }
193
+ enabled_ = zerocopy_enabled;
194
+ }
195
+ }
196
+
197
+ ~TcpZerocopySendCtx() {
198
+ if (send_records_ != nullptr) {
199
+ for (int idx = 0; idx < max_sends_; ++idx) {
200
+ send_records_[idx].~TcpZerocopySendRecord();
201
+ }
202
+ }
203
+ gpr_free(send_records_);
204
+ gpr_free(free_send_records_);
205
+ }
206
+
207
+ // True if we were unable to allocate the various bookkeeping structures at
208
+ // transport initialization time. If memory limited, we do not zerocopy.
209
+ bool MemoryLimited() const { return memory_limited_; }
210
+
211
+ // TCP send zerocopy maintains an implicit sequence number for every
212
+ // successful sendmsg() with zerocopy enabled; the kernel later gives us an
213
+ // error queue notification with this sequence number indicating that the
214
+ // underlying data buffers that we sent can now be released. Once that
215
+ // notification is received, we can release the buffers associated with this
216
+ // zerocopy send record. Here, we associate the sequence number with the data
217
+ // buffers that were sent with the corresponding call to sendmsg().
218
+ void NoteSend(TcpZerocopySendRecord* record) {
219
+ record->Ref();
220
+ {
221
+ grpc_core::MutexLock lock(&mu_);
222
+ is_in_write_ = true;
223
+ AssociateSeqWithSendRecordLocked(last_send_, record);
224
+ }
225
+ ++last_send_;
226
+ }
227
+
228
+ // If sendmsg() actually failed, though, we need to revert the sequence number
229
+ // that we speculatively bumped before calling sendmsg(). Note that we bump
230
+ // this sequence number and perform relevant bookkeeping (see: NoteSend())
231
+ // *before* calling sendmsg() since, if we called it *after* sendmsg(), then
232
+ // there is a possible race with the release notification which could occur on
233
+ // another thread before we do the necessary bookkeeping. Hence, calling
234
+ // NoteSend() *before* sendmsg() and implementing an undo function is needed.
235
+ void UndoSend() {
236
+ --last_send_;
237
+ if (ReleaseSendRecord(last_send_)->Unref()) {
238
+ // We should still be holding the ref taken by tcp_write().
239
+ GPR_DEBUG_ASSERT(0);
240
+ }
241
+ }
242
+
243
+ // Simply associate this send record (and the underlying sent data buffers)
244
+ // with the implicit sequence number for this zerocopy sendmsg().
245
+ void AssociateSeqWithSendRecordLocked(uint32_t seq,
246
+ TcpZerocopySendRecord* record)
247
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
248
+ ctx_lookup_.emplace(seq, record);
249
+ }
250
+
251
+ // Get a send record for a send that we wish to do with zerocopy.
252
+ TcpZerocopySendRecord* GetSendRecord() {
253
+ grpc_core::MutexLock lock(&mu_);
254
+ return TryGetSendRecordLocked();
255
+ }
256
+
257
+ // A given send record corresponds to a single tcp_write() with zerocopy
258
+ // enabled. This can result in several sendmsg() calls to flush all of the
259
+ // data to wire. Each sendmsg() takes a reference on the
260
+ // TcpZerocopySendRecord, and corresponds to a single sequence number.
261
+ // ReleaseSendRecord releases a reference on TcpZerocopySendRecord for a
262
+ // single sequence number. This is called either when we receive the relevant
263
+ // error queue notification (saying that we can discard the underlying
264
+ // buffers for this sendmsg()) is received from the kernel - or, in case
265
+ // sendmsg() was unsuccessful to begin with.
266
+ TcpZerocopySendRecord* ReleaseSendRecord(uint32_t seq) {
267
+ grpc_core::MutexLock lock(&mu_);
268
+ return ReleaseSendRecordLocked(seq);
269
+ }
270
+
271
+ // After all the references to a TcpZerocopySendRecord are released, we can
272
+ // add it back to the pool (of size max_sends_). Note that we can only have
273
+ // max_sends_ tcp_write() instances with zerocopy enabled in flight at the
274
+ // same time.
275
+ void PutSendRecord(TcpZerocopySendRecord* record) {
276
+ grpc_core::MutexLock lock(&mu_);
277
+ GPR_DEBUG_ASSERT(record >= send_records_ &&
278
+ record < send_records_ + max_sends_);
279
+ PutSendRecordLocked(record);
280
+ }
281
+
282
+ // Indicate that we are disposing of this zerocopy context. This indicator
283
+ // will prevent new zerocopy writes from being issued.
284
+ void Shutdown() { shutdown_.store(true, std::memory_order_release); }
285
+
286
+ // Indicates that there are no inflight tcp_write() instances with zerocopy
287
+ // enabled.
288
+ bool AllSendRecordsEmpty() {
289
+ grpc_core::MutexLock lock(&mu_);
290
+ return free_send_records_size_ == max_sends_;
291
+ }
292
+
293
+ bool Enabled() const { return enabled_; }
294
+
295
+ // Only use zerocopy if we are sending at least this many bytes. The
296
+ // additional overhead of reading the error queue for notifications means that
297
+ // zerocopy is not useful for small transfers.
298
+ size_t ThresholdBytes() const { return threshold_bytes_; }
299
+
300
+ // Expected to be called by handler reading messages from the err queue.
301
+ // It is used to indicate that some optmem memory is now available. It returns
302
+ // true to tell the caller to mark the file descriptor as immediately
303
+ // writable.
304
+ //
305
+ // OptMem (controlled by the kernel option optmem_max) refers to the memory
306
+ // allocated to the cmsg list maintained by the kernel that contains "extra"
307
+ // packet information like SCM_RIGHTS or IP_TTL. Increasing this option allows
308
+ // the kernel to allocate more memory as needed for more control messages that
309
+ // need to be sent for each socket connected.
310
+ //
311
+ // If a write is currently in progress on the socket (ie. we have issued a
312
+ // sendmsg() and are about to check its return value) then we set omem state
313
+ // to CHECK to make the sending thread know that some tcp_omem was
314
+ // concurrently freed even if sendmsg() returns ENOBUFS. In this case, since
315
+ // there is already an active send thread, we do not need to mark the
316
+ // socket writeable, so we return false.
317
+ //
318
+ // If there was no write in progress on the socket, and the socket was not
319
+ // marked as FULL, then we need not mark the socket writeable now that some
320
+ // tcp_omem memory is freed since it was not considered as blocked on
321
+ // tcp_omem to begin with. So in this case, return false.
322
+ //
323
+ // But, if a write was not in progress and the omem state was FULL, then we
324
+ // need to mark the socket writeable since it is no longer blocked by
325
+ // tcp_omem. In this case, return true.
326
+ //
327
+ // Please refer to the STATE TRANSITION DIAGRAM below for more details.
328
+ //
329
+ bool UpdateZeroCopyOptMemStateAfterFree() {
330
+ grpc_core::MutexLock lock(&mu_);
331
+ if (is_in_write_) {
332
+ zcopy_enobuf_state_ = OptMemState::kCheck;
333
+ return false;
334
+ }
335
+ GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OptMemState::kCheck);
336
+ if (zcopy_enobuf_state_ == OptMemState::kFull) {
337
+ // A previous sendmsg attempt was blocked by ENOBUFS. Return true to
338
+ // mark the fd as writable so the next write attempt could be made.
339
+ zcopy_enobuf_state_ = OptMemState::kOpen;
340
+ return true;
341
+ } else if (zcopy_enobuf_state_ == OptMemState::kOpen) {
342
+ // No need to mark the fd as writable because the previous write
343
+ // attempt did not encounter ENOBUFS.
344
+ return false;
345
+ } else {
346
+ // This state should never be reached because it implies that the previous
347
+ // state was CHECK and is_in_write is false. This means that after the
348
+ // previous sendmsg returned and set is_in_write to false, it did
349
+ // not update the z-copy change from CHECK to OPEN.
350
+ grpc_core::Crash("OMem state error!");
351
+ }
352
+ }
353
+
354
+ // Expected to be called by the thread calling sendmsg after the syscall
355
+ // invocation. is complete. If an ENOBUF is seen, it checks if the error
356
+ // handler (Tx0cp completions) has already run and free'ed up some OMem. It
357
+ // returns true indicating that the write can be attempted again immediately.
358
+ // If ENOBUFS was seen but no Tx0cp completions have been received between the
359
+ // sendmsg() and us taking this lock, then tcp_omem is still full from our
360
+ // point of view. Therefore, we do not signal that the socket is writeable
361
+ // with respect to the availability of tcp_omem. Therefore the function
362
+ // returns false. This indicates that another write should not be attempted
363
+ // immediately and the calling thread should wait until the socket is writable
364
+ // again. If ENOBUFS was not seen, then again return false because the next
365
+ // write should be attempted only when the socket is writable again.
366
+ //
367
+ // Please refer to the STATE TRANSITION DIAGRAM below for more details.
368
+ //
369
+ bool UpdateZeroCopyOptMemStateAfterSend(bool seen_enobuf, bool& constrained) {
370
+ grpc_core::MutexLock lock(&mu_);
371
+ is_in_write_ = false;
372
+ constrained = false;
373
+ if (seen_enobuf) {
374
+ if (ctx_lookup_.size() == 1) {
375
+ // There is no un-acked z-copy record. Set constrained to true to
376
+ // indicate that we are re-source constrained because we're seeing
377
+ // ENOBUFS even for the first record. This indicates that either
378
+ // the process does not have hard memlock ulimit or RLIMIT_MEMLOCK
379
+ // configured correctly.
380
+ constrained = true;
381
+ }
382
+ if (zcopy_enobuf_state_ == OptMemState::kCheck) {
383
+ zcopy_enobuf_state_ = OptMemState::kOpen;
384
+ return true;
385
+ } else {
386
+ zcopy_enobuf_state_ = OptMemState::kFull;
387
+ }
388
+ } else if (zcopy_enobuf_state_ != OptMemState::kOpen) {
389
+ zcopy_enobuf_state_ = OptMemState::kOpen;
390
+ }
391
+ return false;
392
+ }
393
+
394
+ private:
395
+ // STATE TRANSITION DIAGRAM
396
+ //
397
+ // sendmsg succeeds Tx-zero copy succeeds and there is no active sendmsg
398
+ // ----<<--+ +------<<-------------------------------------+
399
+ // | | | |
400
+ // | | v sendmsg returns ENOBUFS |
401
+ // +-----> OPEN ------------->>-------------------------> FULL
402
+ // ^ |
403
+ // | |
404
+ // | sendmsg completes |
405
+ // +----<<---------- CHECK <-------<<-------------+
406
+ // Tx-zero copy succeeds and there is
407
+ // an active sendmsg
408
+ //
409
+ // OptMem (controlled by the kernel option optmem_max) refers to the memory
410
+ // allocated to the cmsg list maintained by the kernel that contains "extra"
411
+ // packet information like SCM_RIGHTS or IP_TTL. Increasing this option allows
412
+ // the kernel to allocate more memory as needed for more control messages that
413
+ // need to be sent for each socket connected. Each tx zero copy sendmsg has
414
+ // a corresponding entry added into the Optmem queue. The entry is popped
415
+ // from the Optmem queue when the zero copy send is complete.
416
+ enum class OptMemState : int8_t {
417
+ kOpen, // Everything is clear and omem is not full.
418
+ kFull, // The last sendmsg() has returned with an errno of ENOBUFS.
419
+ kCheck, // Error queue is read while is_in_write_ was true, so we should
420
+ // check this state after the sendmsg.
421
+ };
422
+
423
+ TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq)
424
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
425
+ auto iter = ctx_lookup_.find(seq);
426
+ GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
427
+ TcpZerocopySendRecord* record = iter->second;
428
+ ctx_lookup_.erase(iter);
429
+ return record;
430
+ }
431
+
432
+ TcpZerocopySendRecord* TryGetSendRecordLocked()
433
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
434
+ if (shutdown_.load(std::memory_order_acquire)) {
435
+ return nullptr;
436
+ }
437
+ if (free_send_records_size_ == 0) {
438
+ return nullptr;
439
+ }
440
+ free_send_records_size_--;
441
+ return free_send_records_[free_send_records_size_];
442
+ }
443
+
444
+ void PutSendRecordLocked(TcpZerocopySendRecord* record)
445
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
446
+ GPR_DEBUG_ASSERT(free_send_records_size_ < max_sends_);
447
+ free_send_records_[free_send_records_size_] = record;
448
+ free_send_records_size_++;
449
+ }
450
+
451
+ TcpZerocopySendRecord* send_records_ ABSL_GUARDED_BY(mu_);
452
+ TcpZerocopySendRecord** free_send_records_ ABSL_GUARDED_BY(mu_);
453
+ int max_sends_;
454
+ int free_send_records_size_ ABSL_GUARDED_BY(mu_);
455
+ grpc_core::Mutex mu_;
456
+ uint32_t last_send_ = 0;
457
+ std::atomic<bool> shutdown_{false};
458
+ bool enabled_ = false;
459
+ size_t threshold_bytes_ = kDefaultSendBytesThreshold;
460
+ absl::flat_hash_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_
461
+ ABSL_GUARDED_BY(mu_);
462
+ bool memory_limited_ = false;
463
+ bool is_in_write_ ABSL_GUARDED_BY(mu_) = false;
464
+ OptMemState zcopy_enobuf_state_ ABSL_GUARDED_BY(mu_) = OptMemState::kOpen;
465
+ };
466
+
467
+ class PosixEndpointImpl : public grpc_core::RefCounted<PosixEndpointImpl> {
468
+ public:
469
+ PosixEndpointImpl(
470
+ EventHandle* handle, PosixEngineClosure* on_done,
471
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine,
472
+ grpc_event_engine::experimental::MemoryAllocator&& allocator,
473
+ const PosixTcpOptions& options);
474
+ ~PosixEndpointImpl() override;
475
+ void Read(
476
+ absl::AnyInvocable<void(absl::Status)> on_read,
477
+ grpc_event_engine::experimental::SliceBuffer* buffer,
478
+ const grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs*
479
+ args);
480
+ void Write(
481
+ absl::AnyInvocable<void(absl::Status)> on_writable,
482
+ grpc_event_engine::experimental::SliceBuffer* data,
483
+ const grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs*
484
+ args);
485
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
486
+ GetPeerAddress() const {
487
+ return peer_address_;
488
+ }
489
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
490
+ GetLocalAddress() const {
491
+ return local_address_;
492
+ }
493
+
494
+ int GetWrappedFd() { return fd_; }
495
+
496
+ void MaybeShutdown(
497
+ absl::Status why,
498
+ absl::AnyInvocable<void(absl::StatusOr<int> release_fd)> on_release_fd);
499
+
500
+ private:
501
+ void UpdateRcvLowat() ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_);
502
+ void HandleWrite(absl::Status status);
503
+ void HandleError(absl::Status status);
504
+ void HandleRead(absl::Status status);
505
+ void MaybeMakeReadSlices() ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_);
506
+ bool TcpDoRead(absl::Status& status) ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_);
507
+ void FinishEstimate();
508
+ void AddToEstimate(size_t bytes);
509
+ void MaybePostReclaimer() ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_);
510
+ void PerformReclamation() ABSL_LOCKS_EXCLUDED(read_mu_);
511
+ // Zero copy related helper methods.
512
+ TcpZerocopySendRecord* TcpGetSendZerocopyRecord(
513
+ grpc_event_engine::experimental::SliceBuffer& buf);
514
+ bool DoFlushZerocopy(TcpZerocopySendRecord* record, absl::Status& status);
515
+ bool TcpFlushZerocopy(TcpZerocopySendRecord* record, absl::Status& status);
516
+ bool TcpFlush(absl::Status& status);
517
+ void TcpShutdownTracedBufferList();
518
+ void UnrefMaybePutZerocopySendRecord(TcpZerocopySendRecord* record);
519
+ void ZerocopyDisableAndWaitForRemaining();
520
+ bool WriteWithTimestamps(struct msghdr* msg, size_t sending_length,
521
+ ssize_t* sent_length, int* saved_errno,
522
+ int additional_flags);
523
+ absl::Status TcpAnnotateError(absl::Status src_error);
524
+ #ifdef GRPC_LINUX_ERRQUEUE
525
+ bool ProcessErrors();
526
+ // Reads a cmsg to process zerocopy control messages.
527
+ void ProcessZerocopy(struct cmsghdr* cmsg);
528
+ // Reads a cmsg to derive timestamps from the control messages.
529
+ struct cmsghdr* ProcessTimestamp(msghdr* msg, struct cmsghdr* cmsg);
530
+ #endif // GRPC_LINUX_ERRQUEUE
531
+ grpc_core::Mutex read_mu_;
532
+ PosixSocketWrapper sock_;
533
+ int fd_;
534
+ bool is_first_read_ = true;
535
+ bool has_posted_reclaimer_ ABSL_GUARDED_BY(read_mu_) = false;
536
+ double target_length_;
537
+ int min_read_chunk_size_;
538
+ int max_read_chunk_size_;
539
+ int set_rcvlowat_ = 0;
540
+ double bytes_read_this_round_ = 0;
541
+ std::atomic<int> ref_count_{1};
542
+
543
+ // garbage after the last read.
544
+ grpc_event_engine::experimental::SliceBuffer last_read_buffer_;
545
+
546
+ grpc_event_engine::experimental::SliceBuffer* incoming_buffer_
547
+ ABSL_GUARDED_BY(read_mu_) = nullptr;
548
+ // bytes pending on the socket from the last read.
549
+ int inq_ = 1;
550
+ // cache whether kernel supports inq.
551
+ bool inq_capable_ = false;
552
+
553
+ grpc_event_engine::experimental::SliceBuffer* outgoing_buffer_ = nullptr;
554
+ // byte within outgoing_buffer's slices[0] to write next.
555
+ size_t outgoing_byte_idx_ = 0;
556
+
557
+ PosixEngineClosure* on_read_ = nullptr;
558
+ PosixEngineClosure* on_write_ = nullptr;
559
+ PosixEngineClosure* on_error_ = nullptr;
560
+ PosixEngineClosure* on_done_ = nullptr;
561
+ absl::AnyInvocable<void(absl::Status)> read_cb_ ABSL_GUARDED_BY(read_mu_);
562
+ absl::AnyInvocable<void(absl::Status)> write_cb_;
563
+
564
+ grpc_event_engine::experimental::EventEngine::ResolvedAddress peer_address_;
565
+ grpc_event_engine::experimental::EventEngine::ResolvedAddress local_address_;
566
+
567
+ // Maintain a shared_ptr to mem_quota_ to ensure the underlying basic memory
568
+ // quota is not deleted until the endpoint is destroyed.
569
+ grpc_core::MemoryQuotaRefPtr mem_quota_;
570
+ grpc_core::MemoryOwner memory_owner_;
571
+ grpc_core::MemoryAllocator::Reservation self_reservation_;
572
+
573
+ void* outgoing_buffer_arg_ = nullptr;
574
+
575
+ absl::AnyInvocable<void(absl::StatusOr<int>)> on_release_fd_ = nullptr;
576
+
577
+ // A counter which starts at 0. It is initialized the first time the
578
+ // socket options for collecting timestamps are set, and is incremented
579
+ // with each byte sent.
580
+ int bytes_counter_ = -1;
581
+ // True if timestamping options are set on the socket.
582
+ #ifdef GRPC_LINUX_ERRQUEUE
583
+ bool socket_ts_enabled_ = false;
584
+ #endif // GRPC_LINUX_ERRQUEUE
585
+ // Cache whether we can set timestamping options
586
+ bool ts_capable_ = true;
587
+ // Set to 1 if we do not want to be notified on errors anymore.
588
+ std::atomic<bool> stop_error_notification_{false};
589
+ std::unique_ptr<TcpZerocopySendCtx> tcp_zerocopy_send_ctx_;
590
+ TcpZerocopySendRecord* current_zerocopy_send_ = nullptr;
591
+ // A hint from upper layers specifying the minimum number of bytes that need
592
+ // to be read to make meaningful progress.
593
+ int min_progress_size_ = 1;
594
+ TracedBufferList traced_buffers_;
595
+ // The handle is owned by the PosixEndpointImpl object.
596
+ EventHandle* handle_;
597
+ PosixEventPoller* poller_;
598
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
599
+ };
600
+
601
+ class PosixEndpoint : public PosixEndpointWithFdSupport {
602
+ public:
603
+ PosixEndpoint(
604
+ EventHandle* handle, PosixEngineClosure* on_shutdown,
605
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine,
606
+ grpc_event_engine::experimental::MemoryAllocator&& allocator,
607
+ const PosixTcpOptions& options)
608
+ : impl_(new PosixEndpointImpl(handle, on_shutdown, std::move(engine),
609
+ std::move(allocator), options)) {}
610
+
611
+ void Read(
612
+ absl::AnyInvocable<void(absl::Status)> on_read,
613
+ grpc_event_engine::experimental::SliceBuffer* buffer,
614
+ const grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs*
615
+ args) override {
616
+ impl_->Read(std::move(on_read), buffer, args);
617
+ }
618
+
619
+ void Write(
620
+ absl::AnyInvocable<void(absl::Status)> on_writable,
621
+ grpc_event_engine::experimental::SliceBuffer* data,
622
+ const grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs*
623
+ args) override {
624
+ impl_->Write(std::move(on_writable), data, args);
625
+ }
626
+
627
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
628
+ GetPeerAddress() const override {
629
+ return impl_->GetPeerAddress();
630
+ }
631
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
632
+ GetLocalAddress() const override {
633
+ return impl_->GetLocalAddress();
634
+ }
635
+
636
+ int GetWrappedFd() override { return impl_->GetWrappedFd(); }
637
+
638
+ void Shutdown(absl::AnyInvocable<void(absl::StatusOr<int> release_fd)>
639
+ on_release_fd) override {
640
+ if (!shutdown_.exchange(true, std::memory_order_acq_rel)) {
641
+ impl_->MaybeShutdown(absl::FailedPreconditionError("Endpoint closing"),
642
+ std::move(on_release_fd));
643
+ }
644
+ }
645
+
646
+ ~PosixEndpoint() override {
647
+ if (!shutdown_.exchange(true, std::memory_order_acq_rel)) {
648
+ impl_->MaybeShutdown(absl::FailedPreconditionError("Endpoint closing"),
649
+ nullptr);
650
+ }
651
+ }
652
+
653
+ private:
654
+ PosixEndpointImpl* impl_;
655
+ std::atomic<bool> shutdown_{false};
656
+ };
657
+
658
+ #else // GRPC_POSIX_SOCKET_TCP
659
+
660
+ class PosixEndpoint : public PosixEndpointWithFdSupport {
661
+ public:
662
+ PosixEndpoint() = default;
663
+
664
+ void Read(absl::AnyInvocable<void(absl::Status)> /*on_read*/,
665
+ grpc_event_engine::experimental::SliceBuffer* /*buffer*/,
666
+ const grpc_event_engine::experimental::EventEngine::Endpoint::
667
+ ReadArgs* /*args*/) override {
668
+ grpc_core::Crash("PosixEndpoint::Read not supported on this platform");
669
+ }
670
+
671
+ void Write(absl::AnyInvocable<void(absl::Status)> /*on_writable*/,
672
+ grpc_event_engine::experimental::SliceBuffer* /*data*/,
673
+ const grpc_event_engine::experimental::EventEngine::Endpoint::
674
+ WriteArgs* /*args*/) override {
675
+ grpc_core::Crash("PosixEndpoint::Write not supported on this platform");
676
+ }
677
+
678
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
679
+ GetPeerAddress() const override {
680
+ grpc_core::Crash(
681
+ "PosixEndpoint::GetPeerAddress not supported on this platform");
682
+ }
683
+ const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
684
+ GetLocalAddress() const override {
685
+ grpc_core::Crash(
686
+ "PosixEndpoint::GetLocalAddress not supported on this platform");
687
+ }
688
+
689
+ int GetWrappedFd() override {
690
+ grpc_core::Crash(
691
+ "PosixEndpoint::GetWrappedFd not supported on this platform");
692
+ }
693
+
694
+ void Shutdown(absl::AnyInvocable<void(absl::StatusOr<int> release_fd)>
695
+ on_release_fd) override {
696
+ grpc_core::Crash("PosixEndpoint::Shutdown not supported on this platform");
697
+ }
698
+
699
+ ~PosixEndpoint() override = default;
700
+ };
701
+
702
+ #endif // GRPC_POSIX_SOCKET_TCP
703
+
704
+ // Create a PosixEndpoint.
705
+ // A shared_ptr of the EventEngine is passed to the endpoint to ensure that
706
+ // the EventEngine is alive for the lifetime of the endpoint. The ownership
707
+ // of the EventHandle is transferred to the endpoint.
708
+ std::unique_ptr<PosixEndpoint> CreatePosixEndpoint(
709
+ EventHandle* handle, PosixEngineClosure* on_shutdown,
710
+ std::shared_ptr<EventEngine> engine,
711
+ grpc_event_engine::experimental::MemoryAllocator&& allocator,
712
+ const PosixTcpOptions& options);
713
+
714
+ } // namespace experimental
715
+ } // namespace grpc_event_engine
716
+
717
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENDPOINT_H