grpc 1.43.1 → 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 (2346) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +765 -449
  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 +131 -41
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  9. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  10. data/include/grpc/event_engine/memory_allocator.h +1 -16
  11. data/include/grpc/event_engine/port.h +1 -1
  12. data/include/grpc/event_engine/slice.h +306 -0
  13. data/include/grpc/event_engine/slice_buffer.h +159 -0
  14. data/include/grpc/fork.h +25 -1
  15. data/include/grpc/grpc.h +44 -28
  16. data/include/grpc/grpc_posix.h +21 -20
  17. data/include/grpc/grpc_security.h +47 -50
  18. data/include/grpc/impl/codegen/atm.h +3 -71
  19. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
  20. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
  21. data/include/grpc/impl/codegen/atm_windows.h +3 -108
  22. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  23. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  24. data/include/grpc/impl/codegen/compression_types.h +5 -85
  25. data/include/grpc/impl/codegen/connectivity_state.h +5 -21
  26. data/include/grpc/impl/codegen/fork.h +4 -25
  27. data/include/grpc/impl/codegen/gpr_types.h +4 -35
  28. data/include/grpc/impl/codegen/grpc_types.h +5 -788
  29. data/include/grpc/impl/codegen/log.h +3 -86
  30. data/include/grpc/impl/codegen/port_platform.h +3 -699
  31. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  32. data/include/grpc/impl/codegen/slice.h +4 -104
  33. data/include/grpc/impl/codegen/status.h +4 -131
  34. data/include/grpc/impl/codegen/sync.h +3 -42
  35. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  36. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  37. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  38. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  39. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  40. data/include/grpc/impl/compression_types.h +109 -0
  41. data/include/grpc/impl/connectivity_state.h +47 -0
  42. data/include/grpc/impl/grpc_types.h +827 -0
  43. data/include/grpc/impl/propagation_bits.h +54 -0
  44. data/include/grpc/impl/slice_type.h +112 -0
  45. data/include/grpc/load_reporting.h +1 -1
  46. data/include/grpc/module.modulemap +5 -1
  47. data/include/grpc/slice.h +1 -12
  48. data/include/grpc/status.h +131 -1
  49. data/include/grpc/support/atm.h +70 -1
  50. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  51. data/include/grpc/support/atm_gcc_sync.h +58 -1
  52. data/include/grpc/support/atm_windows.h +105 -1
  53. data/include/grpc/support/log.h +87 -1
  54. data/include/grpc/support/log_windows.h +1 -1
  55. data/include/grpc/support/port_platform.h +767 -1
  56. data/include/grpc/support/string_util.h +1 -1
  57. data/include/grpc/support/sync.h +35 -2
  58. data/include/grpc/support/sync_abseil.h +11 -1
  59. data/include/grpc/support/sync_custom.h +13 -1
  60. data/include/grpc/support/sync_generic.h +24 -1
  61. data/include/grpc/support/sync_posix.h +27 -1
  62. data/include/grpc/support/sync_windows.h +15 -1
  63. data/include/grpc/support/time.h +31 -6
  64. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
  65. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  66. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  67. data/src/core/ext/filters/census/grpc_context.cc +19 -17
  68. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
  69. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
  70. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  71. data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
  72. data/src/core/ext/filters/client_channel/backend_metric.cc +22 -15
  73. data/src/core/ext/filters/client_channel/backend_metric.h +21 -11
  74. data/src/core/ext/filters/client_channel/backup_poller.cc +44 -40
  75. data/src/core/ext/filters/client_channel/backup_poller.h +26 -28
  76. data/src/core/ext/filters/client_channel/channel_connectivity.cc +94 -49
  77. data/src/core/ext/filters/client_channel/client_channel.cc +681 -648
  78. data/src/core/ext/filters/client_channel/client_channel.h +106 -61
  79. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -23
  80. data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -23
  81. data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -43
  82. data/src/core/ext/filters/client_channel/client_channel_factory.h +11 -11
  83. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +26 -57
  84. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  85. data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
  86. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  87. data/src/core/ext/filters/client_channel/config_selector.h +33 -27
  88. data/src/core/ext/filters/client_channel/connector.h +20 -11
  89. data/src/core/ext/filters/client_channel/dynamic_filters.cc +40 -55
  90. data/src/core/ext/filters/client_channel/dynamic_filters.h +22 -13
  91. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
  92. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +27 -36
  93. data/src/core/ext/filters/client_channel/health/health_check_client.cc +139 -583
  94. data/src/core/ext/filters/client_channel/health/health_check_client.h +29 -163
  95. data/src/core/ext/filters/client_channel/http_proxy.cc +130 -164
  96. data/src/core/ext/filters/client_channel/http_proxy.h +46 -22
  97. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  98. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +12 -8
  99. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +9 -7
  100. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  101. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +37 -16
  102. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +18 -13
  103. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +71 -134
  104. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +468 -413
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +27 -35
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
  108. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +10 -8
  109. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  110. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +27 -22
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +43 -34
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +30 -29
  113. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +338 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
  117. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
  118. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +221 -209
  119. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +488 -480
  120. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +525 -391
  121. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -9
  122. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +726 -701
  123. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +282 -254
  124. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +177 -150
  125. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  127. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
  128. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +289 -251
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +274 -201
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +64 -0
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +215 -264
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +213 -215
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +578 -667
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
  137. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
  138. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
  139. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  140. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +22 -21
  141. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +42 -33
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +678 -336
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +67 -51
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +50 -45
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +109 -119
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +421 -420
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +95 -81
  148. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  149. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +21 -20
  150. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  151. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +22 -22
  152. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +124 -255
  153. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +37 -49
  154. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +21 -6
  155. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +190 -96
  156. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
  157. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
  158. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +56 -61
  159. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +537 -338
  160. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
  161. data/src/core/ext/filters/client_channel/retry_filter.cc +392 -307
  162. data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
  163. data/src/core/ext/filters/client_channel/retry_service_config.cc +198 -232
  164. data/src/core/ext/filters/client_channel/retry_service_config.h +44 -35
  165. data/src/core/ext/filters/client_channel/retry_throttle.cc +37 -60
  166. data/src/core/ext/filters/client_channel/retry_throttle.h +47 -34
  167. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +40 -22
  168. data/src/core/ext/filters/client_channel/subchannel.cc +343 -402
  169. data/src/core/ext/filters/client_channel/subchannel.h +116 -86
  170. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  171. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
  172. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +41 -47
  173. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
  174. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
  175. data/src/core/ext/filters/deadline/deadline_filter.cc +102 -83
  176. data/src/core/ext/filters/deadline/deadline_filter.h +17 -14
  177. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +180 -403
  178. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +41 -9
  179. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  180. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
  181. data/src/core/ext/filters/http/client/http_client_filter.cc +123 -548
  182. data/src/core/ext/filters/http/client/http_client_filter.h +55 -25
  183. data/src/core/ext/filters/http/client_authority_filter.cc +60 -129
  184. data/src/core/ext/filters/http/client_authority_filter.h +49 -27
  185. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -60
  186. data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
  187. data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
  188. data/src/core/ext/filters/http/server/http_server_filter.cc +116 -474
  189. data/src/core/ext/filters/http/server/http_server_filter.h +58 -24
  190. data/src/core/ext/filters/message_size/message_size_filter.cc +137 -165
  191. data/src/core/ext/filters/message_size/message_size_filter.h +44 -20
  192. data/src/core/ext/filters/rbac/rbac_filter.cc +175 -0
  193. data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
  194. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
  195. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
  196. data/src/core/ext/filters/server_config_selector/server_config_selector.h +23 -10
  197. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +93 -199
  198. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
  199. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -0
  200. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  201. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  202. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  203. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  204. data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
  205. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +316 -137
  206. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
  207. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -182
  208. data/src/core/ext/transport/chttp2/server/chttp2_server.h +26 -26
  209. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +24 -24
  210. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +35 -34
  211. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +31 -30
  212. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
  213. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +972 -1236
  214. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +36 -25
  215. data/src/core/ext/transport/chttp2/transport/context_list.cc +23 -19
  216. data/src/core/ext/transport/chttp2/transport/context_list.h +32 -29
  217. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  218. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  219. data/src/core/ext/transport/chttp2/transport/flow_control.cc +351 -301
  220. data/src/core/ext/transport/chttp2/transport/flow_control.h +249 -326
  221. data/src/core/ext/transport/chttp2/transport/frame.h +22 -26
  222. data/src/core/ext/transport/chttp2/transport/frame_data.cc +85 -235
  223. data/src/core/ext/transport/chttp2/transport/frame_data.h +38 -61
  224. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +41 -36
  225. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +24 -22
  226. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +34 -28
  227. data/src/core/ext/transport/chttp2/transport/frame_ping.h +25 -22
  228. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +40 -26
  229. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +24 -21
  230. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +46 -77
  231. data/src/core/ext/transport/chttp2/transport/frame_settings.h +27 -23
  232. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +34 -33
  233. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +24 -21
  234. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +432 -422
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +127 -219
  237. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +5 -2
  238. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +15 -4
  239. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +143 -620
  240. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +31 -25
  241. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +162 -61
  242. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +71 -71
  243. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  244. data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -38
  245. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  246. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  247. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  248. data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
  249. data/src/core/ext/transport/chttp2/transport/internal.h +257 -338
  250. data/src/core/ext/transport/chttp2/transport/parsing.cc +367 -140
  251. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +30 -30
  252. data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
  253. data/src/core/ext/transport/chttp2/transport/stream_map.h +34 -33
  254. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  255. data/src/core/ext/transport/chttp2/transport/varint.h +39 -34
  256. data/src/core/ext/transport/chttp2/transport/writing.cc +199 -227
  257. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -22
  258. data/src/core/ext/transport/inproc/inproc_transport.cc +252 -347
  259. data/src/core/ext/transport/inproc/inproc_transport.h +23 -24
  260. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  261. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
  262. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +122 -0
  263. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +578 -0
  264. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +46 -359
  265. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +280 -1357
  266. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
  267. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
  268. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  269. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
  270. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
  271. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
  272. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  273. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
  274. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  275. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
  276. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  277. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
  278. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  279. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
  280. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  281. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
  282. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
  283. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
  284. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
  285. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +53 -23
  286. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
  287. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +729 -386
  288. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +191 -173
  289. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1403 -664
  290. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
  291. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +212 -91
  292. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +256 -250
  293. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1774 -852
  294. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  295. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +46 -24
  296. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
  297. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +276 -99
  298. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  299. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +78 -51
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +519 -190
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +49 -25
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +159 -154
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1178 -584
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +553 -167
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +42 -24
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -101
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +820 -410
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +118 -84
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +813 -358
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +61 -31
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +164 -108
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1082 -399
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +32 -17
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +91 -49
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +29 -12
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +140 -34
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +97 -49
  330. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
  331. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +50 -26
  332. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
  333. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +206 -109
  334. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +58 -49
  335. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +405 -191
  336. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
  337. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +377 -188
  338. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  339. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +38 -21
  340. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +101 -64
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +684 -261
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
  343. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +588 -301
  344. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +21 -15
  345. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +130 -49
  346. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +15 -10
  347. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +98 -41
  348. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  349. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
  350. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
  351. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +445 -235
  352. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
  353. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +442 -237
  354. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +98 -77
  355. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +672 -294
  356. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +46 -36
  357. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +301 -163
  358. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +589 -475
  359. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4357 -1895
  360. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  361. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +160 -72
  362. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
  363. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +45 -0
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +101 -0
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +85 -46
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
  381. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
  382. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
  384. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +55 -0
  385. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +159 -0
  386. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  387. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +38 -24
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
  389. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +208 -113
  390. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +272 -132
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +19 -14
  395. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -43
  396. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  397. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  398. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +239 -197
  399. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1708 -734
  400. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  402. 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
  403. 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
  404. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
  405. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
  406. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
  407. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
  408. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  409. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  410. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  411. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  412. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +89 -58
  413. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +606 -235
  414. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
  415. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +168 -87
  416. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +100 -71
  417. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +672 -263
  418. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  419. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
  420. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  421. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +26 -16
  422. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +185 -66
  423. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1118 -256
  424. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  425. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +115 -62
  426. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +52 -50
  427. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +367 -186
  428. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  429. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
  430. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
  431. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +140 -82
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +107 -57
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +54 -31
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +52 -27
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +42 -24
  444. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  445. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +129 -69
  446. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
  447. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
  448. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  449. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +131 -65
  450. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  451. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +93 -53
  452. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
  453. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +162 -83
  454. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
  455. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -146
  456. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
  457. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +255 -131
  458. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  459. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
  460. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  461. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  462. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  463. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
  464. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  465. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +70 -36
  466. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  467. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +110 -52
  468. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  469. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  470. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  471. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +43 -0
  472. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  473. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +44 -19
  474. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  475. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
  476. data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
  477. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
  478. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
  479. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +764 -382
  480. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
  481. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +843 -402
  482. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  483. data/src/core/ext/upb-generated/google/api/http.upb.h +228 -115
  484. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  485. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
  486. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  487. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +42 -22
  488. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +292 -237
  489. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2198 -1030
  490. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  491. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +40 -20
  492. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  493. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +26 -16
  494. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
  495. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +189 -93
  496. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  497. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +40 -20
  498. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  499. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +276 -149
  500. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  501. data/src/core/ext/upb-generated/google/rpc/status.upb.h +56 -30
  502. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  503. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
  504. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
  505. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +107 -48
  506. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
  507. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +725 -359
  508. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
  509. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +84 -41
  510. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  511. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +64 -35
  512. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
  513. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +419 -219
  514. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  515. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +123 -63
  516. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  517. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
  518. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
  519. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +201 -78
  520. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
  521. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -22
  522. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
  523. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
  524. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
  525. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +59 -24
  526. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
  527. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -23
  528. data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
  529. data/src/core/ext/upb-generated/validate/validate.upb.h +2818 -1180
  530. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  531. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
  532. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  533. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
  534. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  535. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  536. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
  537. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +187 -80
  538. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  539. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
  540. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  541. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +34 -19
  542. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  543. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  544. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +18 -16
  545. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +106 -55
  546. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  547. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +57 -30
  548. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  549. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
  550. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
  551. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +59 -30
  552. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  553. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +138 -70
  554. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  555. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +62 -30
  556. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -21
  557. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +114 -46
  558. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
  559. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
  560. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  561. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  562. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  563. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  564. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  566. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  567. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  568. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  569. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -0
  570. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  571. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  572. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  573. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
  574. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  575. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -0
  576. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  577. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  578. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  579. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  580. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -9
  581. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +46 -24
  582. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  583. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  584. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +128 -0
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +73 -278
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +16 -101
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  594. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  595. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  596. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  597. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  599. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  600. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  601. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  602. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  603. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  604. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  605. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  606. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  607. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  608. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +118 -115
  609. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  610. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +257 -237
  611. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  612. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
  613. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  614. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +394 -370
  615. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +73 -78
  616. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  617. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  618. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
  619. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  620. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +101 -79
  623. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +27 -22
  624. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +203 -194
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -165
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -219
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  644. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  645. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  646. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  647. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  648. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +18 -11
  649. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +9 -4
  650. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +24 -21
  651. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  652. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  653. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  654. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  655. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  656. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +81 -73
  657. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  658. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  659. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  660. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  661. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  662. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +180 -146
  663. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +24 -19
  664. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
  665. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  666. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +26 -19
  667. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  668. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +44 -33
  669. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  670. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  671. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  672. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  673. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  674. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  675. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  676. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +201 -0
  677. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
  678. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +91 -74
  679. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  680. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +902 -806
  681. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +180 -160
  682. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  683. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  684. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
  685. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
  686. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +56 -0
  687. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  698. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  699. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  700. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  701. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  702. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
  703. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  704. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  705. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  706. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +79 -0
  707. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  708. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  709. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  710. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +59 -44
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +506 -463
  721. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  722. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  723. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  724. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  725. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  726. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +172 -140
  727. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  728. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  729. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  730. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +220 -198
  731. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  732. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  733. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  734. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  735. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  736. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +163 -88
  737. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +57 -22
  738. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  739. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  740. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +123 -120
  741. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  742. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  743. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  745. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  746. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  747. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  748. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  751. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  752. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  753. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  754. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  755. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  756. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  757. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  758. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +36 -32
  759. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  760. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  761. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  762. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  763. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  764. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  765. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  766. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  767. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  768. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  769. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  770. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  771. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  772. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  773. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  774. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  775. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  776. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  777. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  778. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  779. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  780. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  781. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  782. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  783. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  784. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +39 -0
  785. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  786. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  787. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  788. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  789. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  790. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  791. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  792. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  793. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  794. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  795. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  796. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  797. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  798. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  799. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  800. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  801. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  802. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +94 -92
  803. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  804. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  805. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  806. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  807. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  808. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  809. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  810. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  811. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  812. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  813. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  814. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  815. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  816. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  817. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  818. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  819. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  820. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  821. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  822. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  823. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  824. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  825. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  826. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  827. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  828. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  829. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  830. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  831. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  832. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  833. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  834. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  835. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  836. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  837. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  838. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  839. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  840. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  841. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  842. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  843. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  844. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  845. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  846. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  847. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  848. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  849. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  850. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  851. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  852. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  853. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  854. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  855. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  856. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  857. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  858. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  859. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  860. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  861. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  862. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  863. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  864. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  865. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  866. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  867. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  868. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  869. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  870. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  871. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  872. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  873. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  874. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  875. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  876. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  877. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  878. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +6 -9
  879. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  880. data/src/core/ext/xds/certificate_provider_store.cc +75 -3
  881. data/src/core/ext/xds/certificate_provider_store.h +30 -4
  882. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +21 -14
  883. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -6
  884. data/src/core/ext/xds/upb_utils.h +45 -0
  885. data/src/core/ext/xds/xds_api.cc +294 -3740
  886. data/src/core/ext/xds/xds_api.h +82 -635
  887. data/src/core/ext/xds/xds_bootstrap.cc +10 -446
  888. data/src/core/ext/xds/xds_bootstrap.h +46 -83
  889. data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
  890. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  891. data/src/core/ext/xds/xds_certificate_provider.cc +36 -25
  892. data/src/core/ext/xds/xds_certificate_provider.h +37 -4
  893. data/src/core/ext/xds/xds_channel_args.h +3 -3
  894. data/src/core/ext/xds/xds_channel_stack_modifier.cc +27 -20
  895. data/src/core/ext/xds/xds_channel_stack_modifier.h +20 -7
  896. data/src/core/ext/xds/xds_client.cc +1247 -2097
  897. data/src/core/ext/xds/xds_client.h +159 -204
  898. data/src/core/ext/xds/xds_client_grpc.cc +235 -0
  899. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  900. data/src/core/ext/xds/xds_client_stats.cc +35 -36
  901. data/src/core/ext/xds/xds_client_stats.h +31 -28
  902. data/src/core/ext/xds/xds_cluster.cc +711 -0
  903. data/src/core/ext/xds/xds_cluster.h +137 -0
  904. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
  905. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
  906. data/src/core/ext/xds/xds_common_types.cc +503 -0
  907. data/src/core/ext/xds/xds_common_types.h +108 -0
  908. data/src/core/ext/xds/xds_endpoint.cc +474 -0
  909. data/src/core/ext/xds/xds_endpoint.h +139 -0
  910. data/src/core/ext/xds/xds_health_status.cc +80 -0
  911. data/src/core/ext/xds/xds_health_status.h +109 -0
  912. data/src/core/ext/xds/xds_http_fault_filter.cc +68 -59
  913. data/src/core/ext/xds/xds_http_fault_filter.h +20 -26
  914. data/src/core/ext/xds/xds_http_filters.cc +71 -66
  915. data/src/core/ext/xds/xds_http_filters.h +74 -26
  916. data/src/core/ext/xds/xds_http_rbac_filter.cc +506 -0
  917. data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
  918. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  919. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  920. data/src/core/ext/xds/xds_lb_policy_registry.cc +334 -0
  921. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  922. data/src/core/ext/xds/xds_listener.cc +1131 -0
  923. data/src/core/ext/xds/xds_listener.h +226 -0
  924. data/src/core/ext/xds/xds_resource_type.h +104 -0
  925. data/src/core/ext/xds/xds_resource_type_impl.h +88 -0
  926. data/src/core/ext/xds/xds_route_config.cc +1144 -0
  927. data/src/core/ext/xds/xds_route_config.h +252 -0
  928. data/src/core/ext/xds/xds_routing.cc +33 -16
  929. data/src/core/ext/xds/xds_routing.h +25 -17
  930. data/src/core/ext/xds/xds_server_config_fetcher.cc +386 -281
  931. data/src/core/ext/xds/xds_transport.h +86 -0
  932. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  933. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  934. data/src/core/lib/address_utils/parse_address.cc +55 -35
  935. data/src/core/lib/address_utils/parse_address.h +46 -37
  936. data/src/core/lib/address_utils/sockaddr_utils.cc +112 -79
  937. data/src/core/lib/address_utils/sockaddr_utils.h +45 -55
  938. data/src/core/lib/avl/avl.h +100 -13
  939. data/src/core/lib/backoff/backoff.cc +26 -57
  940. data/src/core/lib/backoff/backoff.h +32 -32
  941. data/src/core/lib/channel/call_finalization.h +88 -0
  942. data/src/core/lib/channel/call_tracer.h +27 -9
  943. data/src/core/lib/channel/channel_args.cc +291 -65
  944. data/src/core/lib/channel/channel_args.h +461 -54
  945. data/src/core/lib/channel/channel_args_preconditioning.cc +6 -10
  946. data/src/core/lib/channel/channel_args_preconditioning.h +7 -7
  947. data/src/core/lib/channel/channel_fwd.h +26 -0
  948. data/src/core/lib/channel/channel_stack.cc +100 -53
  949. data/src/core/lib/channel/channel_stack.h +212 -130
  950. data/src/core/lib/channel/channel_stack_builder.cc +35 -295
  951. data/src/core/lib/channel/channel_stack_builder.h +115 -153
  952. data/src/core/lib/channel/channel_stack_builder_impl.cc +126 -0
  953. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  954. data/src/core/lib/channel/channel_trace.cc +29 -39
  955. data/src/core/lib/channel/channel_trace.h +27 -24
  956. data/src/core/lib/channel/channelz.cc +51 -65
  957. data/src/core/lib/channel/channelz.h +50 -33
  958. data/src/core/lib/channel/channelz_registry.cc +28 -36
  959. data/src/core/lib/channel/channelz_registry.h +31 -30
  960. data/src/core/lib/channel/connected_channel.cc +1269 -75
  961. data/src/core/lib/channel/connected_channel.h +23 -24
  962. data/src/core/lib/channel/context.h +36 -21
  963. data/src/core/lib/channel/promise_based_filter.cc +2521 -0
  964. data/src/core/lib/channel/promise_based_filter.h +937 -0
  965. data/src/core/lib/channel/status_util.cc +64 -17
  966. data/src/core/lib/channel/status_util.h +38 -24
  967. data/src/core/lib/compression/compression.cc +44 -131
  968. data/src/core/lib/compression/compression_internal.cc +189 -230
  969. data/src/core/lib/compression/compression_internal.h +90 -94
  970. data/src/core/lib/compression/message_compress.cc +39 -37
  971. data/src/core/lib/compression/message_compress.h +30 -31
  972. data/src/core/lib/config/core_configuration.cc +15 -2
  973. data/src/core/lib/config/core_configuration.h +125 -39
  974. data/src/core/lib/debug/event_log.cc +88 -0
  975. data/src/core/lib/debug/event_log.h +81 -0
  976. data/src/core/lib/debug/histogram_view.cc +69 -0
  977. data/src/core/lib/debug/histogram_view.h +37 -0
  978. data/src/core/lib/debug/stats.cc +48 -152
  979. data/src/core/lib/debug/stats.h +50 -57
  980. data/src/core/lib/debug/stats_data.cc +302 -649
  981. data/src/core/lib/debug/stats_data.h +293 -548
  982. data/src/core/lib/debug/trace.cc +18 -20
  983. data/src/core/lib/debug/trace.h +27 -48
  984. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +16 -17
  985. data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -9
  986. data/src/core/lib/event_engine/common_closures.h +71 -0
  987. data/src/core/lib/event_engine/default_event_engine.cc +99 -0
  988. data/src/core/lib/event_engine/default_event_engine.h +73 -0
  989. data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
  990. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  991. data/src/core/lib/event_engine/event_engine.cc +3 -15
  992. data/src/core/lib/event_engine/executor/executor.h +38 -0
  993. data/src/core/lib/event_engine/forkable.cc +106 -0
  994. data/src/core/lib/event_engine/forkable.h +61 -0
  995. data/src/core/lib/event_engine/handle_containers.h +74 -0
  996. data/src/core/lib/event_engine/memory_allocator.cc +19 -15
  997. data/src/core/lib/event_engine/poller.h +62 -0
  998. data/src/core/lib/event_engine/posix.h +158 -0
  999. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
  1000. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
  1001. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -0
  1002. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  1003. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  1004. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  1005. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  1006. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  1007. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  1008. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  1009. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  1010. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1305 -0
  1011. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
  1012. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
  1013. data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
  1014. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  1015. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +289 -0
  1016. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
  1017. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
  1018. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  1019. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  1020. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  1021. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  1022. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  1023. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  1024. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  1025. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  1026. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  1027. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  1028. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  1029. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  1030. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  1031. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  1032. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  1033. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  1034. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  1035. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  1036. data/src/core/lib/event_engine/resolved_address.cc +60 -0
  1037. data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
  1038. data/src/core/lib/event_engine/shim.cc +56 -0
  1039. data/src/core/lib/event_engine/shim.h +33 -0
  1040. data/src/core/lib/event_engine/slice.cc +103 -0
  1041. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  1042. data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
  1043. data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
  1044. data/src/core/lib/event_engine/thread_local.cc +29 -0
  1045. data/src/core/lib/event_engine/thread_local.h +32 -0
  1046. data/src/core/lib/event_engine/thread_pool.cc +253 -0
  1047. data/src/core/lib/event_engine/thread_pool.h +141 -0
  1048. data/src/core/lib/event_engine/time_util.cc +30 -0
  1049. data/src/core/lib/event_engine/time_util.h +32 -0
  1050. data/src/core/lib/event_engine/trace.cc +24 -0
  1051. data/src/core/lib/event_engine/trace.h +43 -0
  1052. data/src/core/lib/event_engine/utils.cc +44 -0
  1053. data/src/core/lib/event_engine/utils.h +44 -0
  1054. data/src/core/lib/event_engine/windows/iocp.cc +140 -0
  1055. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  1056. data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
  1057. data/src/core/lib/event_engine/windows/win_socket.h +129 -0
  1058. data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
  1059. data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
  1060. data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
  1061. data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
  1062. data/src/core/lib/experiments/config.cc +161 -0
  1063. data/src/core/lib/experiments/config.h +53 -0
  1064. data/src/core/lib/experiments/experiments.cc +81 -0
  1065. data/src/core/lib/experiments/experiments.h +117 -0
  1066. data/src/core/lib/gpr/alloc.cc +19 -25
  1067. data/src/core/lib/gpr/alloc.h +20 -20
  1068. data/src/core/lib/gpr/atm.cc +17 -17
  1069. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  1070. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  1071. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  1072. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  1073. data/src/core/lib/gpr/log.cc +30 -17
  1074. data/src/core/lib/gpr/log_android.cc +22 -20
  1075. data/src/core/lib/gpr/log_linux.cc +24 -24
  1076. data/src/core/lib/gpr/log_posix.cc +20 -19
  1077. data/src/core/lib/gpr/log_windows.cc +25 -25
  1078. data/src/core/lib/gpr/spinlock.h +20 -20
  1079. data/src/core/lib/gpr/string.cc +25 -24
  1080. data/src/core/lib/gpr/string.h +61 -61
  1081. data/src/core/lib/gpr/string_posix.cc +24 -24
  1082. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  1083. data/src/core/lib/gpr/string_windows.cc +24 -24
  1084. data/src/core/lib/gpr/sync.cc +25 -25
  1085. data/src/core/lib/gpr/sync_abseil.cc +36 -40
  1086. data/src/core/lib/gpr/sync_posix.cc +23 -34
  1087. data/src/core/lib/gpr/sync_windows.cc +29 -27
  1088. data/src/core/lib/gpr/time.cc +36 -31
  1089. data/src/core/lib/gpr/time_posix.cc +41 -45
  1090. data/src/core/lib/gpr/time_precise.cc +22 -22
  1091. data/src/core/lib/gpr/time_precise.h +21 -22
  1092. data/src/core/lib/gpr/time_windows.cc +35 -29
  1093. data/src/core/lib/gpr/tmpfile.h +24 -24
  1094. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  1095. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  1096. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  1097. data/src/core/lib/gpr/useful.h +101 -30
  1098. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  1099. data/src/core/lib/gprpp/atomic_utils.h +20 -20
  1100. data/src/core/lib/gprpp/bitset.h +54 -17
  1101. data/src/core/lib/gprpp/chunked_vector.h +52 -6
  1102. data/src/core/lib/gprpp/construct_destruct.h +4 -3
  1103. data/src/core/lib/gprpp/cpp_impl_of.h +7 -3
  1104. data/src/core/lib/gprpp/crash.cc +33 -0
  1105. data/src/core/lib/gprpp/crash.h +34 -0
  1106. data/src/core/lib/gprpp/debug_location.h +62 -31
  1107. data/src/core/lib/gprpp/dual_ref_counted.h +4 -7
  1108. data/src/core/lib/gprpp/env.h +53 -0
  1109. data/src/core/lib/gprpp/env_linux.cc +80 -0
  1110. data/src/core/lib/gprpp/env_posix.cc +47 -0
  1111. data/src/core/lib/gprpp/env_windows.cc +56 -0
  1112. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  1113. data/src/core/lib/gprpp/examine_stack.h +21 -22
  1114. data/src/core/lib/gprpp/fork.cc +58 -53
  1115. data/src/core/lib/gprpp/fork.h +29 -35
  1116. data/src/core/lib/gprpp/global_config.h +22 -24
  1117. data/src/core/lib/gprpp/global_config_custom.h +20 -20
  1118. data/src/core/lib/gprpp/global_config_env.cc +28 -25
  1119. data/src/core/lib/gprpp/global_config_env.h +29 -27
  1120. data/src/core/lib/gprpp/global_config_generic.h +21 -25
  1121. data/src/core/lib/gprpp/host_port.cc +30 -26
  1122. data/src/core/lib/gprpp/host_port.h +32 -31
  1123. data/src/core/lib/gprpp/load_file.cc +75 -0
  1124. data/src/core/lib/gprpp/load_file.h +33 -0
  1125. data/src/core/lib/gprpp/manual_constructor.h +21 -89
  1126. data/src/core/lib/gprpp/match.h +75 -0
  1127. data/src/core/lib/gprpp/memory.h +22 -26
  1128. data/src/core/lib/gprpp/mpscq.cc +17 -17
  1129. data/src/core/lib/gprpp/mpscq.h +21 -21
  1130. data/src/core/lib/gprpp/no_destruct.h +95 -0
  1131. data/src/core/lib/gprpp/notification.h +67 -0
  1132. data/src/core/lib/gprpp/orphanable.h +22 -25
  1133. data/src/core/lib/gprpp/overload.h +59 -0
  1134. data/src/core/lib/gprpp/packed_table.h +40 -0
  1135. data/src/core/lib/gprpp/per_cpu.h +46 -0
  1136. data/src/core/lib/gprpp/ref_counted.h +24 -24
  1137. data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
  1138. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  1139. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  1140. data/src/core/lib/gprpp/stat.h +3 -5
  1141. data/src/core/lib/gprpp/stat_posix.cc +10 -4
  1142. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  1143. data/src/core/lib/gprpp/status_helper.cc +79 -51
  1144. data/src/core/lib/gprpp/status_helper.h +19 -24
  1145. data/src/core/lib/gprpp/strerror.cc +43 -0
  1146. data/src/core/lib/gprpp/strerror.h +29 -0
  1147. data/src/core/lib/gprpp/sync.h +26 -24
  1148. data/src/core/lib/gprpp/table.h +33 -4
  1149. data/src/core/lib/gprpp/tchar.cc +49 -0
  1150. data/src/core/lib/gprpp/tchar.h +33 -0
  1151. data/src/core/lib/gprpp/thd.h +25 -28
  1152. data/src/core/lib/gprpp/thd_posix.cc +33 -32
  1153. data/src/core/lib/gprpp/thd_windows.cc +28 -26
  1154. data/src/core/lib/gprpp/time.cc +241 -0
  1155. data/src/core/lib/gprpp/time.h +366 -0
  1156. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  1157. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  1158. data/src/core/lib/gprpp/time_util.cc +4 -0
  1159. data/src/core/lib/gprpp/time_util.h +3 -3
  1160. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  1161. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  1162. data/src/core/lib/gprpp/validation_errors.h +127 -0
  1163. data/src/core/lib/gprpp/work_serializer.cc +247 -0
  1164. data/src/core/lib/gprpp/work_serializer.h +86 -0
  1165. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  1166. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  1167. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  1168. data/src/core/lib/http/format_request.cc +81 -47
  1169. data/src/core/lib/http/format_request.h +30 -27
  1170. data/src/core/lib/http/httpcli.cc +328 -262
  1171. data/src/core/lib/http/httpcli.h +256 -115
  1172. data/src/core/lib/http/httpcli_security_connector.cc +101 -104
  1173. data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
  1174. data/src/core/lib/http/parser.cc +144 -85
  1175. data/src/core/lib/http/parser.h +51 -35
  1176. data/src/core/lib/iomgr/block_annotate.h +23 -23
  1177. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  1178. data/src/core/lib/iomgr/buffer_list.h +128 -106
  1179. data/src/core/lib/iomgr/call_combiner.cc +37 -58
  1180. data/src/core/lib/iomgr/call_combiner.h +24 -25
  1181. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  1182. data/src/core/lib/iomgr/cfstream_handle.h +25 -25
  1183. data/src/core/lib/iomgr/closure.cc +27 -0
  1184. data/src/core/lib/iomgr/closure.h +111 -54
  1185. data/src/core/lib/iomgr/combiner.cc +29 -26
  1186. data/src/core/lib/iomgr/combiner.h +20 -20
  1187. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  1188. data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
  1189. data/src/core/lib/iomgr/endpoint.cc +21 -21
  1190. data/src/core/lib/iomgr/endpoint.h +53 -51
  1191. data/src/core/lib/iomgr/endpoint_cfstream.cc +51 -47
  1192. data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
  1193. data/src/core/lib/iomgr/endpoint_pair.h +20 -20
  1194. data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -27
  1195. data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
  1196. data/src/core/lib/iomgr/error.cc +52 -832
  1197. data/src/core/lib/iomgr/error.h +45 -319
  1198. data/src/core/lib/iomgr/error_cfstream.cc +18 -23
  1199. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  1200. data/src/core/lib/iomgr/ev_apple.cc +27 -26
  1201. data/src/core/lib/iomgr/ev_apple.h +21 -21
  1202. data/src/core/lib/iomgr/ev_epoll1_linux.cc +270 -254
  1203. data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
  1204. data/src/core/lib/iomgr/ev_poll_posix.cc +302 -277
  1205. data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
  1206. data/src/core/lib/iomgr/ev_posix.cc +91 -125
  1207. data/src/core/lib/iomgr/ev_posix.h +94 -88
  1208. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  1209. data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
  1210. data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
  1211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
  1212. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  1213. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  1214. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  1215. data/src/core/lib/iomgr/exec_ctx.cc +45 -139
  1216. data/src/core/lib/iomgr/exec_ctx.h +154 -195
  1217. data/src/core/lib/iomgr/executor.cc +25 -26
  1218. data/src/core/lib/iomgr/executor.h +27 -30
  1219. data/src/core/lib/iomgr/fork_posix.cc +30 -26
  1220. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  1221. data/src/core/lib/iomgr/gethostname.h +20 -20
  1222. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  1223. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  1224. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  1225. data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
  1226. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  1227. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  1228. data/src/core/lib/iomgr/internal_errqueue.cc +41 -48
  1229. data/src/core/lib/iomgr/internal_errqueue.h +84 -89
  1230. data/src/core/lib/iomgr/iocp_windows.cc +31 -31
  1231. data/src/core/lib/iomgr/iocp_windows.h +22 -22
  1232. data/src/core/lib/iomgr/iomgr.cc +25 -20
  1233. data/src/core/lib/iomgr/iomgr.h +35 -35
  1234. data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
  1235. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  1236. data/src/core/lib/iomgr/iomgr_internal.h +28 -28
  1237. data/src/core/lib/iomgr/iomgr_posix.cc +22 -21
  1238. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +22 -20
  1239. data/src/core/lib/iomgr/iomgr_windows.cc +25 -23
  1240. data/src/core/lib/iomgr/load_file.cc +24 -27
  1241. data/src/core/lib/iomgr/load_file.h +22 -22
  1242. data/src/core/lib/iomgr/lockfree_event.cc +114 -131
  1243. data/src/core/lib/iomgr/lockfree_event.h +23 -23
  1244. data/src/core/lib/iomgr/nameser.h +86 -86
  1245. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  1246. data/src/core/lib/iomgr/polling_entity.h +35 -29
  1247. data/src/core/lib/iomgr/pollset.cc +18 -18
  1248. data/src/core/lib/iomgr/pollset.h +60 -60
  1249. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1250. data/src/core/lib/iomgr/pollset_set.h +26 -28
  1251. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  1252. data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
  1253. data/src/core/lib/iomgr/pollset_windows.cc +34 -33
  1254. data/src/core/lib/iomgr/pollset_windows.h +24 -24
  1255. data/src/core/lib/iomgr/port.h +59 -42
  1256. data/src/core/lib/iomgr/python_util.h +24 -24
  1257. data/src/core/lib/iomgr/resolve_address.cc +34 -39
  1258. data/src/core/lib/iomgr/resolve_address.h +100 -67
  1259. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1260. data/src/core/lib/iomgr/resolve_address_posix.cc +133 -98
  1261. data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
  1262. data/src/core/lib/iomgr/resolve_address_windows.cc +129 -84
  1263. data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
  1264. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1265. data/src/core/lib/iomgr/sockaddr.h +25 -26
  1266. data/src/core/lib/iomgr/sockaddr_posix.h +23 -21
  1267. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +64 -0
  1268. data/src/core/lib/iomgr/sockaddr_windows.h +23 -21
  1269. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  1270. data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
  1271. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  1272. data/src/core/lib/iomgr/socket_mutator.h +39 -39
  1273. data/src/core/lib/iomgr/socket_utils.h +27 -27
  1274. data/src/core/lib/iomgr/socket_utils_common_posix.cc +82 -118
  1275. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  1276. data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
  1277. data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
  1278. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  1279. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1280. data/src/core/lib/iomgr/socket_windows.h +59 -61
  1281. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1282. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1283. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1284. data/src/core/lib/iomgr/tcp_client.h +49 -37
  1285. data/src/core/lib/iomgr/tcp_client_cfstream.cc +46 -35
  1286. data/src/core/lib/iomgr/tcp_client_posix.cc +244 -106
  1287. data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
  1288. data/src/core/lib/iomgr/tcp_client_windows.cc +73 -53
  1289. data/src/core/lib/iomgr/tcp_posix.cc +563 -361
  1290. data/src/core/lib/iomgr/tcp_posix.h +32 -30
  1291. data/src/core/lib/iomgr/tcp_server.cc +33 -24
  1292. data/src/core/lib/iomgr/tcp_server.h +78 -69
  1293. data/src/core/lib/iomgr/tcp_server_posix.cc +402 -145
  1294. data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
  1295. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +121 -82
  1296. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +47 -43
  1297. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  1298. data/src/core/lib/iomgr/tcp_server_windows.cc +116 -118
  1299. data/src/core/lib/iomgr/tcp_windows.cc +123 -98
  1300. data/src/core/lib/iomgr/tcp_windows.h +34 -35
  1301. data/src/core/lib/iomgr/timer.cc +19 -19
  1302. data/src/core/lib/iomgr/timer.h +78 -73
  1303. data/src/core/lib/iomgr/timer_generic.cc +214 -204
  1304. data/src/core/lib/iomgr/timer_generic.h +21 -21
  1305. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  1306. data/src/core/lib/iomgr/timer_heap.h +22 -22
  1307. data/src/core/lib/iomgr/timer_manager.cc +44 -43
  1308. data/src/core/lib/iomgr/timer_manager.h +27 -27
  1309. data/src/core/lib/iomgr/unix_sockets_posix.cc +38 -51
  1310. data/src/core/lib/iomgr/unix_sockets_posix.h +25 -28
  1311. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +25 -32
  1312. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
  1313. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  1314. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  1315. data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
  1316. data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
  1317. data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
  1318. data/src/core/lib/json/json.h +23 -27
  1319. data/src/core/lib/json/json_args.h +34 -0
  1320. data/src/core/lib/json/json_channel_args.h +42 -0
  1321. data/src/core/lib/json/json_object_loader.cc +217 -0
  1322. data/src/core/lib/json/json_object_loader.h +634 -0
  1323. data/src/core/lib/json/json_reader.cc +123 -90
  1324. data/src/core/lib/json/json_util.cc +17 -37
  1325. data/src/core/lib/json/json_util.h +21 -12
  1326. data/src/core/lib/json/json_writer.cc +62 -57
  1327. data/src/core/lib/load_balancing/lb_policy.cc +102 -0
  1328. data/src/core/lib/load_balancing/lb_policy.h +442 -0
  1329. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1330. data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
  1331. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1332. data/src/core/lib/load_balancing/subchannel_interface.h +135 -0
  1333. data/src/core/lib/matchers/matchers.cc +13 -8
  1334. data/src/core/lib/matchers/matchers.h +5 -3
  1335. data/src/core/lib/promise/activity.cc +36 -15
  1336. data/src/core/lib/promise/activity.h +287 -188
  1337. data/src/core/lib/promise/arena_promise.h +231 -0
  1338. data/src/core/lib/promise/context.h +18 -11
  1339. data/src/core/lib/promise/detail/basic_join.h +197 -0
  1340. data/src/core/lib/promise/detail/basic_seq.h +104 -20
  1341. data/src/core/lib/promise/detail/promise_factory.h +62 -15
  1342. data/src/core/lib/promise/detail/promise_like.h +3 -3
  1343. data/src/core/lib/promise/detail/status.h +37 -3
  1344. data/src/core/lib/promise/detail/switch.h +21 -21
  1345. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
  1346. data/src/core/lib/promise/if.h +195 -0
  1347. data/src/core/lib/promise/interceptor_list.h +308 -0
  1348. data/src/core/lib/promise/intra_activity_waiter.h +55 -0
  1349. data/src/core/lib/promise/latch.h +191 -0
  1350. data/src/core/lib/promise/loop.h +44 -14
  1351. data/src/core/lib/promise/map.h +4 -6
  1352. data/src/core/lib/promise/pipe.h +608 -0
  1353. data/src/core/lib/promise/poll.h +132 -8
  1354. data/src/core/lib/promise/promise.h +95 -0
  1355. data/src/core/lib/promise/race.h +6 -10
  1356. data/src/core/lib/promise/seq.h +45 -9
  1357. data/src/core/lib/promise/sleep.cc +90 -0
  1358. data/src/core/lib/promise/sleep.h +84 -0
  1359. data/src/core/lib/promise/trace.cc +20 -0
  1360. data/src/core/lib/promise/trace.h +24 -0
  1361. data/src/core/lib/promise/try_join.h +82 -0
  1362. data/src/core/lib/promise/try_seq.h +175 -0
  1363. data/src/core/lib/resolver/resolver.cc +37 -0
  1364. data/src/core/lib/resolver/resolver.h +138 -0
  1365. data/src/core/lib/resolver/resolver_factory.h +77 -0
  1366. data/src/core/lib/resolver/resolver_registry.cc +164 -0
  1367. data/src/core/lib/resolver/resolver_registry.h +123 -0
  1368. data/src/core/lib/resolver/server_address.cc +182 -0
  1369. data/src/core/lib/resolver/server_address.h +145 -0
  1370. data/src/core/lib/resource_quota/api.cc +25 -29
  1371. data/src/core/lib/resource_quota/api.h +14 -6
  1372. data/src/core/lib/resource_quota/arena.cc +165 -0
  1373. data/src/core/lib/resource_quota/arena.h +314 -0
  1374. data/src/core/lib/resource_quota/memory_quota.cc +418 -173
  1375. data/src/core/lib/resource_quota/memory_quota.h +287 -116
  1376. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1377. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1378. data/src/core/lib/resource_quota/resource_quota.h +20 -4
  1379. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  1380. data/src/core/lib/resource_quota/thread_quota.h +7 -3
  1381. data/src/core/lib/resource_quota/trace.h +3 -3
  1382. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1383. data/src/core/lib/security/authorization/authorization_policy_provider.h +17 -3
  1384. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
  1385. data/src/core/lib/security/authorization/evaluate_args.cc +42 -28
  1386. data/src/core/lib/security/authorization/evaluate_args.h +10 -7
  1387. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
  1388. data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
  1389. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
  1390. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
  1391. data/src/core/lib/security/authorization/matchers.cc +241 -0
  1392. data/src/core/lib/security/authorization/matchers.h +218 -0
  1393. data/src/core/lib/security/authorization/rbac_policy.cc +446 -0
  1394. data/src/core/lib/security/authorization/rbac_policy.h +178 -0
  1395. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
  1396. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1397. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1398. data/src/core/lib/security/context/security_context.cc +31 -27
  1399. data/src/core/lib/security/context/security_context.h +65 -36
  1400. data/src/core/lib/security/credentials/alts/alts_credentials.cc +35 -27
  1401. data/src/core/lib/security/credentials/alts/alts_credentials.h +71 -57
  1402. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  1403. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
  1404. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  1405. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  1406. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  1407. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1408. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1409. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
  1410. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1411. data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
  1412. data/src/core/lib/security/credentials/call_creds_util.h +43 -0
  1413. data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
  1414. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
  1415. data/src/core/lib/security/credentials/composite/composite_credentials.cc +52 -111
  1416. data/src/core/lib/security/credentials/composite/composite_credentials.h +65 -40
  1417. data/src/core/lib/security/credentials/credentials.cc +25 -29
  1418. data/src/core/lib/security/credentials/credentials.h +141 -133
  1419. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +248 -104
  1420. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +22 -3
  1421. data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
  1422. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1423. data/src/core/lib/security/credentials/external/external_account_credentials.cc +137 -101
  1424. data/src/core/lib/security/credentials/external/external_account_credentials.h +19 -12
  1425. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -27
  1426. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
  1427. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +77 -44
  1428. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +14 -3
  1429. data/src/core/lib/security/credentials/fake/fake_credentials.cc +62 -62
  1430. data/src/core/lib/security/credentials/fake/fake_credentials.h +71 -63
  1431. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
  1432. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +163 -124
  1433. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +41 -29
  1434. data/src/core/lib/security/credentials/iam/iam_credentials.cc +50 -47
  1435. data/src/core/lib/security/credentials/iam/iam_credentials.h +46 -30
  1436. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +35 -26
  1437. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
  1438. data/src/core/lib/security/credentials/jwt/json_token.cc +44 -35
  1439. data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
  1440. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +62 -71
  1441. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +51 -33
  1442. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +166 -129
  1443. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +51 -49
  1444. data/src/core/lib/security/credentials/local/local_credentials.cc +36 -30
  1445. data/src/core/lib/security/credentials/local/local_credentials.h +42 -26
  1446. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +229 -234
  1447. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +103 -55
  1448. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +122 -174
  1449. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +101 -48
  1450. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +49 -54
  1451. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +49 -26
  1452. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
  1453. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
  1454. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +65 -48
  1455. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +69 -9
  1456. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +44 -4
  1457. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +75 -13
  1458. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +47 -23
  1459. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +70 -83
  1460. data/src/core/lib/security/credentials/tls/tls_credentials.cc +55 -50
  1461. data/src/core/lib/security/credentials/tls/tls_credentials.h +34 -25
  1462. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
  1463. data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
  1464. data/src/core/lib/security/credentials/xds/xds_credentials.cc +77 -81
  1465. data/src/core/lib/security/credentials/xds/xds_credentials.h +56 -11
  1466. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +68 -68
  1467. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +50 -48
  1468. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +79 -91
  1469. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +26 -29
  1470. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +21 -22
  1471. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +30 -24
  1472. data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
  1473. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
  1474. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
  1475. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1476. data/src/core/lib/security/security_connector/local/local_security_connector.cc +74 -65
  1477. data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
  1478. data/src/core/lib/security/security_connector/security_connector.cc +39 -49
  1479. data/src/core/lib/security/security_connector/security_connector.h +82 -65
  1480. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +65 -59
  1481. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
  1482. data/src/core/lib/security/security_connector/ssl_utils.cc +76 -70
  1483. data/src/core/lib/security/security_connector/ssl_utils.h +57 -58
  1484. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1485. data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
  1486. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +83 -71
  1487. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +54 -34
  1488. data/src/core/lib/security/transport/auth_filters.h +89 -27
  1489. data/src/core/lib/security/transport/client_auth_filter.cc +142 -388
  1490. data/src/core/lib/security/transport/secure_endpoint.cc +305 -181
  1491. data/src/core/lib/security/transport/secure_endpoint.h +29 -28
  1492. data/src/core/lib/security/transport/security_handshaker.cc +147 -107
  1493. data/src/core/lib/security/transport/security_handshaker.h +28 -23
  1494. data/src/core/lib/security/transport/server_auth_filter.cc +179 -282
  1495. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  1496. data/src/core/lib/security/transport/tsi_error.h +20 -20
  1497. data/src/core/lib/security/util/json_util.cc +24 -24
  1498. data/src/core/lib/security/util/json_util.h +21 -23
  1499. data/src/core/lib/service_config/service_config.h +89 -0
  1500. data/src/core/lib/service_config/service_config_call_data.h +82 -0
  1501. data/src/core/lib/service_config/service_config_impl.cc +191 -0
  1502. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1503. data/src/core/lib/service_config/service_config_parser.cc +81 -0
  1504. data/src/core/lib/service_config/service_config_parser.h +105 -0
  1505. data/src/core/lib/slice/b64.cc +26 -26
  1506. data/src/core/lib/slice/b64.h +34 -32
  1507. data/src/core/lib/slice/percent_encoding.cc +24 -30
  1508. data/src/core/lib/slice/percent_encoding.h +28 -34
  1509. data/src/core/lib/slice/slice.cc +128 -218
  1510. data/src/core/lib/slice/slice.h +126 -39
  1511. data/src/core/lib/slice/slice_buffer.cc +136 -76
  1512. data/src/core/lib/slice/slice_buffer.h +168 -0
  1513. data/src/core/lib/slice/slice_internal.h +43 -69
  1514. data/src/core/lib/slice/slice_refcount.cc +4 -1
  1515. data/src/core/lib/slice/slice_refcount.h +51 -96
  1516. data/src/core/lib/slice/slice_string_helpers.cc +17 -33
  1517. data/src/core/lib/slice/slice_string_helpers.h +23 -30
  1518. data/src/core/lib/surface/api_trace.cc +17 -17
  1519. data/src/core/lib/surface/api_trace.h +25 -25
  1520. data/src/core/lib/surface/builtins.cc +11 -6
  1521. data/src/core/lib/surface/builtins.h +3 -3
  1522. data/src/core/lib/surface/byte_buffer.cc +26 -21
  1523. data/src/core/lib/surface/byte_buffer_reader.cc +24 -24
  1524. data/src/core/lib/surface/call.cc +3070 -1436
  1525. data/src/core/lib/surface/call.h +140 -61
  1526. data/src/core/lib/surface/call_details.cc +22 -23
  1527. data/src/core/lib/surface/call_log_batch.cc +25 -18
  1528. data/src/core/lib/surface/call_test_only.h +34 -31
  1529. data/src/core/lib/surface/call_trace.cc +123 -0
  1530. data/src/core/lib/surface/call_trace.h +30 -0
  1531. data/src/core/lib/surface/channel.cc +249 -322
  1532. data/src/core/lib/surface/channel.h +140 -94
  1533. data/src/core/lib/surface/channel_init.cc +19 -20
  1534. data/src/core/lib/surface/channel_init.h +25 -27
  1535. data/src/core/lib/surface/channel_ping.cc +26 -20
  1536. data/src/core/lib/surface/channel_stack_type.cc +21 -19
  1537. data/src/core/lib/surface/channel_stack_type.h +22 -22
  1538. data/src/core/lib/surface/completion_queue.cc +210 -231
  1539. data/src/core/lib/surface/completion_queue.h +42 -40
  1540. data/src/core/lib/surface/completion_queue_factory.cc +34 -28
  1541. data/src/core/lib/surface/completion_queue_factory.h +21 -23
  1542. data/src/core/lib/surface/event_string.cc +19 -24
  1543. data/src/core/lib/surface/event_string.h +21 -21
  1544. data/src/core/lib/surface/init.cc +106 -94
  1545. data/src/core/lib/surface/init.h +20 -30
  1546. data/src/core/lib/surface/init_internally.cc +25 -0
  1547. data/src/core/lib/surface/init_internally.h +37 -0
  1548. data/src/core/lib/surface/lame_client.cc +87 -130
  1549. data/src/core/lib/surface/lame_client.h +62 -24
  1550. data/src/core/lib/surface/metadata_array.cc +18 -17
  1551. data/src/core/lib/surface/server.cc +421 -228
  1552. data/src/core/lib/surface/server.h +62 -31
  1553. data/src/core/lib/surface/validate_metadata.cc +34 -48
  1554. data/src/core/lib/surface/validate_metadata.h +24 -21
  1555. data/src/core/lib/surface/version.cc +21 -21
  1556. data/src/core/lib/transport/bdp_estimator.cc +28 -29
  1557. data/src/core/lib/transport/bdp_estimator.h +24 -26
  1558. data/src/core/lib/transport/connectivity_state.cc +24 -23
  1559. data/src/core/lib/transport/connectivity_state.h +24 -25
  1560. data/src/core/lib/transport/error_utils.cc +62 -82
  1561. data/src/core/lib/transport/error_utils.h +31 -26
  1562. data/src/core/lib/transport/handshaker.cc +239 -0
  1563. data/src/core/lib/transport/handshaker.h +172 -0
  1564. data/src/core/lib/transport/handshaker_factory.h +74 -0
  1565. data/src/core/lib/transport/handshaker_registry.cc +61 -0
  1566. data/src/core/lib/transport/handshaker_registry.h +69 -0
  1567. data/src/core/lib/transport/http2_errors.h +22 -22
  1568. data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
  1569. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1570. data/src/core/lib/transport/metadata_batch.cc +278 -72
  1571. data/src/core/lib/transport/metadata_batch.h +1052 -825
  1572. data/src/core/lib/transport/parsed_metadata.cc +4 -4
  1573. data/src/core/lib/transport/parsed_metadata.h +128 -100
  1574. data/src/core/lib/transport/pid_controller.cc +20 -20
  1575. data/src/core/lib/transport/pid_controller.h +27 -27
  1576. data/src/core/lib/transport/status_conversion.cc +25 -25
  1577. data/src/core/lib/transport/status_conversion.h +25 -25
  1578. data/src/core/lib/transport/tcp_connect_handshaker.cc +245 -0
  1579. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1580. data/src/core/lib/transport/timeout_encoding.cc +225 -92
  1581. data/src/core/lib/transport/timeout_encoding.h +65 -31
  1582. data/src/core/lib/transport/transport.cc +99 -57
  1583. data/src/core/lib/transport/transport.h +282 -152
  1584. data/src/core/lib/transport/transport_fwd.h +20 -0
  1585. data/src/core/lib/transport/transport_impl.h +59 -35
  1586. data/src/core/lib/transport/transport_op_string.cc +44 -85
  1587. data/src/core/lib/uri/uri_parser.cc +239 -57
  1588. data/src/core/lib/uri/uri_parser.h +40 -28
  1589. data/src/core/plugin_registry/grpc_plugin_registry.cc +77 -156
  1590. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +66 -0
  1591. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  1592. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  1593. data/src/core/tsi/alts/crypt/gsec.h +336 -336
  1594. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1595. data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
  1596. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1597. data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
  1598. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  1599. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
  1600. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1601. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
  1602. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1603. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1604. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  1605. data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
  1606. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +142 -117
  1607. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
  1608. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +27 -18
  1609. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
  1610. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +72 -56
  1611. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
  1612. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
  1613. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +23 -22
  1614. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +39 -39
  1615. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +21 -21
  1616. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +107 -106
  1617. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  1618. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
  1619. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1620. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
  1621. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
  1622. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  1623. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
  1624. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  1625. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
  1626. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
  1627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
  1628. data/src/core/tsi/fake_transport_security.cc +146 -110
  1629. data/src/core/tsi/fake_transport_security.h +36 -30
  1630. data/src/core/tsi/local_transport_security.cc +46 -49
  1631. data/src/core/tsi/local_transport_security.h +34 -37
  1632. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +146 -0
  1633. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1634. data/src/core/tsi/ssl/session_cache/ssl_session.h +24 -24
  1635. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +21 -19
  1636. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  1637. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +34 -27
  1638. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +27 -20
  1639. data/src/core/tsi/ssl_transport_security.cc +451 -394
  1640. data/src/core/tsi/ssl_transport_security.h +235 -194
  1641. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1642. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1643. data/src/core/tsi/ssl_types.h +27 -27
  1644. data/src/core/tsi/transport_security.cc +44 -32
  1645. data/src/core/tsi/transport_security.h +49 -48
  1646. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1647. data/src/core/tsi/transport_security_grpc.h +44 -41
  1648. data/src/core/tsi/transport_security_interface.h +346 -332
  1649. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1650. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1651. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1652. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1653. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1654. data/src/ruby/ext/grpc/extconf.rb +107 -22
  1655. data/src/ruby/ext/grpc/rb_call.c +1 -0
  1656. data/src/ruby/ext/grpc/rb_channel.c +6 -2
  1657. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1658. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  1659. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1660. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +58 -62
  1661. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +90 -96
  1662. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1663. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1664. data/src/ruby/lib/grpc/errors.rb +1 -1
  1665. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1666. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1667. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1668. data/src/ruby/lib/grpc/version.rb +1 -1
  1669. data/src/ruby/pb/generate_proto_ruby.sh +1 -6
  1670. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  1671. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1672. data/src/ruby/pb/test/client.rb +769 -0
  1673. data/src/ruby/pb/test/server.rb +252 -0
  1674. data/src/ruby/pb/test/xds_client.rb +415 -0
  1675. data/src/ruby/spec/channel_spec.rb +5 -43
  1676. data/src/ruby/spec/client_server_spec.rb +20 -8
  1677. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  1678. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  1679. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1680. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1681. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
  1682. data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
  1683. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  1684. data/third_party/abseil-cpp/absl/base/config.h +221 -39
  1685. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1686. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
  1687. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  1688. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
  1689. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  1690. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  1691. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  1692. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  1693. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  1694. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  1695. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1696. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
  1697. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
  1698. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
  1699. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
  1700. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  1701. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  1702. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1703. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1704. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
  1705. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  1706. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  1707. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  1708. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  1709. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
  1710. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  1711. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1712. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  1713. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  1714. data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
  1715. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  1716. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  1717. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  1718. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1719. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1720. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -5
  1721. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  1722. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  1723. data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
  1724. data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
  1725. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  1726. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
  1727. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  1728. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
  1729. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
  1730. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
  1731. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
  1732. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
  1733. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  1734. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  1735. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  1736. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  1737. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  1738. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  1739. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  1740. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  1741. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  1742. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  1743. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  1744. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  1745. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  1746. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  1747. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  1748. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  1749. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  1750. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  1751. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  1752. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  1753. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  1754. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  1755. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
  1756. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  1757. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
  1758. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  1759. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  1760. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  1761. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  1762. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
  1763. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  1764. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
  1765. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
  1766. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  1767. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  1768. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
  1769. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  1770. data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
  1771. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  1772. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  1773. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  1774. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  1775. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  1776. data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
  1777. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  1778. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  1779. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  1780. data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
  1781. data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
  1782. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  1783. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
  1784. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1785. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1786. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1787. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1788. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1789. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1790. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1791. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1792. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  1793. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +270 -0
  1794. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1795. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1796. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1797. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  1798. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  1799. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1800. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1801. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1802. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1803. data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  1804. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  1805. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1806. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  1807. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1808. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1809. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1810. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1811. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1812. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1813. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  1814. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
  1817. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1818. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  1819. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  1820. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  1821. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1822. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1823. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1824. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1825. data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
  1826. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1827. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1828. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  1829. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1830. data/third_party/abseil-cpp/absl/status/status.cc +193 -14
  1831. data/third_party/abseil-cpp/absl/status/status.h +24 -14
  1832. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  1833. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  1834. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1835. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  1836. data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
  1837. data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
  1838. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1839. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1840. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1841. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  1842. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  1843. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  1844. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  1845. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  1846. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1847. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1848. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  1849. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
  1850. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
  1851. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
  1852. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
  1853. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  1854. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  1857. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  1858. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  1859. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  1860. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  1861. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  1862. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  1863. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
  1864. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  1865. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
  1866. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  1867. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  1868. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  1869. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
  1870. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  1871. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  1872. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  1873. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  1874. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  1875. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  1876. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
  1877. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  1878. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
  1879. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
  1880. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  1881. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1882. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
  1883. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  1884. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  1885. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  1886. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
  1887. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1888. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  1889. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  1890. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  1891. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  1892. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1893. data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
  1894. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  1895. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  1896. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
  1897. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  1898. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1899. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  1900. data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
  1901. data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
  1902. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1903. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  1904. data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
  1905. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  1906. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1907. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  1908. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  1909. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  1910. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  1911. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  1912. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  1913. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  1914. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
  1915. data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
  1916. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  1917. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
  1918. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  1919. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  1920. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  1921. data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
  1922. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1923. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  1924. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1925. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  1926. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  1927. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  1928. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  1929. data/third_party/abseil-cpp/absl/time/time.h +268 -169
  1930. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1931. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  1932. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  1933. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  1934. data/third_party/abseil-cpp/absl/types/span.h +31 -8
  1935. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1936. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1937. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1938. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1939. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1940. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1941. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  1942. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1943. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1944. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1945. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1946. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
  1947. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1948. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1949. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  1950. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1951. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  1952. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1953. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  1954. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
  1955. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1956. data/third_party/cares/cares/include/ares.h +742 -0
  1957. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1958. data/third_party/cares/cares/include/ares_version.h +24 -0
  1959. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1960. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1961. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1962. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1963. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1964. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1965. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1966. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1967. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1968. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1969. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1970. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1971. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1972. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1973. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1974. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  1975. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  1976. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  1977. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  1978. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  1979. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  1980. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  1981. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  1982. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1983. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1984. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1985. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1986. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  1987. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  1988. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  1989. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  1990. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1991. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  1992. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  1993. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  1994. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  1995. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  1996. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  1997. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  1998. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  1999. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2000. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2001. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2002. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2003. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2004. data/third_party/re2/re2/bitstate.cc +3 -3
  2005. data/third_party/re2/re2/dfa.cc +13 -13
  2006. data/third_party/re2/re2/nfa.cc +4 -4
  2007. data/third_party/re2/re2/onepass.cc +2 -2
  2008. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  2009. data/third_party/re2/re2/prefilter_tree.h +3 -2
  2010. data/third_party/re2/re2/prog.cc +11 -2
  2011. data/third_party/re2/re2/prog.h +17 -5
  2012. data/third_party/re2/re2/re2.cc +6 -11
  2013. data/third_party/re2/re2/re2.h +1 -1
  2014. data/third_party/re2/re2/regexp.cc +1 -2
  2015. data/third_party/re2/re2/stringpiece.h +10 -7
  2016. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  2017. data/third_party/re2/re2/unicode_groups.cc +319 -151
  2018. data/third_party/re2/re2/walker-inl.h +3 -2
  2019. data/third_party/re2/util/mutex.h +4 -4
  2020. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2021. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2022. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2023. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2024. data/third_party/upb/upb/arena.c +277 -0
  2025. data/third_party/upb/upb/arena.h +225 -0
  2026. data/third_party/upb/upb/array.c +114 -0
  2027. data/third_party/upb/upb/array.h +83 -0
  2028. data/third_party/upb/upb/collections.h +36 -0
  2029. data/third_party/upb/upb/decode.c +685 -366
  2030. data/third_party/upb/upb/decode.h +44 -17
  2031. data/third_party/upb/upb/decode_fast.c +304 -302
  2032. data/third_party/upb/upb/decode_fast.h +18 -18
  2033. data/third_party/upb/upb/def.c +1932 -1076
  2034. data/third_party/upb/upb/def.h +336 -288
  2035. data/third_party/upb/upb/def.hpp +134 -174
  2036. data/third_party/upb/upb/encode.c +228 -186
  2037. data/third_party/upb/upb/encode.h +24 -16
  2038. data/third_party/upb/upb/extension_registry.c +93 -0
  2039. data/third_party/upb/upb/extension_registry.h +84 -0
  2040. data/third_party/upb/upb/internal/decode.h +211 -0
  2041. data/third_party/upb/upb/internal/table.h +385 -0
  2042. data/third_party/upb/upb/internal/upb.h +68 -0
  2043. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  2044. data/third_party/upb/upb/json_decode.c +1512 -0
  2045. data/third_party/upb/upb/json_decode.h +47 -0
  2046. data/third_party/upb/upb/json_encode.c +780 -0
  2047. data/third_party/upb/upb/json_encode.h +65 -0
  2048. data/third_party/upb/upb/map.c +108 -0
  2049. data/third_party/upb/upb/map.h +117 -0
  2050. data/third_party/upb/upb/message_value.h +66 -0
  2051. data/third_party/upb/upb/mini_table.c +1147 -0
  2052. data/third_party/upb/upb/mini_table.h +189 -0
  2053. data/third_party/upb/upb/mini_table.hpp +112 -0
  2054. data/third_party/upb/upb/msg.c +125 -167
  2055. data/third_party/upb/upb/msg.h +18 -55
  2056. data/third_party/upb/upb/msg_internal.h +352 -284
  2057. data/third_party/upb/upb/port_def.inc +10 -1
  2058. data/third_party/upb/upb/port_undef.inc +2 -0
  2059. data/third_party/upb/upb/reflection.c +150 -267
  2060. data/third_party/upb/upb/reflection.h +36 -126
  2061. data/third_party/upb/upb/reflection.hpp +6 -6
  2062. data/third_party/upb/upb/status.c +86 -0
  2063. data/third_party/upb/upb/status.h +66 -0
  2064. data/third_party/upb/upb/table.c +233 -149
  2065. data/third_party/upb/upb/table_internal.h +9 -324
  2066. data/third_party/upb/upb/text_encode.c +115 -91
  2067. data/third_party/upb/upb/text_encode.h +10 -10
  2068. data/third_party/upb/upb/upb.c +34 -281
  2069. data/third_party/upb/upb/upb.h +79 -262
  2070. data/third_party/upb/upb/upb.hpp +31 -28
  2071. data/third_party/xxhash/xxhash.h +607 -352
  2072. data/third_party/zlib/compress.c +3 -3
  2073. data/third_party/zlib/crc32.c +975 -292
  2074. data/third_party/zlib/crc32.h +9441 -436
  2075. data/third_party/zlib/deflate.c +183 -129
  2076. data/third_party/zlib/deflate.h +12 -15
  2077. data/third_party/zlib/gzguts.h +3 -2
  2078. data/third_party/zlib/gzlib.c +6 -4
  2079. data/third_party/zlib/gzread.c +8 -12
  2080. data/third_party/zlib/gzwrite.c +26 -14
  2081. data/third_party/zlib/infback.c +12 -8
  2082. data/third_party/zlib/inffast.c +14 -14
  2083. data/third_party/zlib/inflate.c +44 -10
  2084. data/third_party/zlib/inflate.h +3 -2
  2085. data/third_party/zlib/inftrees.c +3 -3
  2086. data/third_party/zlib/inftrees.h +1 -1
  2087. data/third_party/zlib/trees.c +85 -107
  2088. data/third_party/zlib/uncompr.c +2 -2
  2089. data/third_party/zlib/zconf.h +16 -3
  2090. data/third_party/zlib/zlib.h +129 -106
  2091. data/third_party/zlib/zutil.c +11 -9
  2092. data/third_party/zlib/zutil.h +13 -9
  2093. metadata +790 -298
  2094. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  2095. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -390
  2096. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
  2097. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  2098. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  2099. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -60
  2100. data/src/core/ext/filters/client_channel/lb_policy.cc +0 -131
  2101. data/src/core/ext/filters/client_channel/lb_policy.h +0 -441
  2102. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
  2103. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
  2104. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
  2105. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  2106. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
  2107. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
  2108. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  2109. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
  2110. data/src/core/ext/filters/client_channel/resolver.cc +0 -87
  2111. data/src/core/ext/filters/client_channel/resolver.h +0 -136
  2112. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -75
  2113. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -194
  2114. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -88
  2115. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -189
  2116. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -99
  2117. data/src/core/ext/filters/client_channel/server_address.cc +0 -170
  2118. data/src/core/ext/filters/client_channel/server_address.h +0 -144
  2119. data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -130
  2120. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  2121. data/src/core/ext/filters/client_idle/idle_filter_state.cc +0 -96
  2122. data/src/core/ext/filters/client_idle/idle_filter_state.h +0 -66
  2123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -181
  2124. data/src/core/ext/filters/fault_injection/service_config_parser.h +0 -85
  2125. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -553
  2126. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  2127. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -398
  2128. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -31
  2129. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  2130. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2131. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -67
  2132. data/src/core/ext/service_config/service_config.cc +0 -227
  2133. data/src/core/ext/service_config/service_config.h +0 -127
  2134. data/src/core/ext/service_config/service_config_call_data.h +0 -72
  2135. data/src/core/ext/service_config/service_config_parser.cc +0 -89
  2136. data/src/core/ext/service_config/service_config_parser.h +0 -97
  2137. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  2138. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  2139. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  2140. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  2141. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  2142. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  2143. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2144. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  2145. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  2146. data/src/core/ext/transport/chttp2/transport/hpack_utils.h +0 -30
  2147. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  2148. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  2149. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  2150. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  2151. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  2152. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  2153. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  2154. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  2155. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  2156. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  2157. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  2158. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  2159. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  2160. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  2161. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  2162. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  2163. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  2164. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  2165. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  2166. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  2167. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  2168. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  2169. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  2170. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  2171. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  2172. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  2173. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  2174. data/src/core/ext/xds/certificate_provider_factory.h +0 -61
  2175. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  2176. data/src/core/ext/xds/certificate_provider_registry.h +0 -57
  2177. data/src/core/lib/channel/handshaker.cc +0 -222
  2178. data/src/core/lib/channel/handshaker.h +0 -161
  2179. data/src/core/lib/channel/handshaker_factory.h +0 -50
  2180. data/src/core/lib/channel/handshaker_registry.cc +0 -50
  2181. data/src/core/lib/channel/handshaker_registry.h +0 -71
  2182. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  2183. data/src/core/lib/compression/compression_args.cc +0 -140
  2184. data/src/core/lib/compression/compression_args.h +0 -58
  2185. data/src/core/lib/compression/stream_compression.cc +0 -81
  2186. data/src/core/lib/compression/stream_compression.h +0 -117
  2187. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  2188. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2189. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  2190. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2191. data/src/core/lib/event_engine/event_engine_factory.cc +0 -49
  2192. data/src/core/lib/event_engine/event_engine_factory.h +0 -33
  2193. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  2194. data/src/core/lib/event_engine/sockaddr.h +0 -44
  2195. data/src/core/lib/gpr/env.h +0 -40
  2196. data/src/core/lib/gpr/env_linux.cc +0 -75
  2197. data/src/core/lib/gpr/env_posix.cc +0 -46
  2198. data/src/core/lib/gpr/env_windows.cc +0 -74
  2199. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  2200. data/src/core/lib/gpr/murmur_hash.h +0 -29
  2201. data/src/core/lib/gpr/string_windows.h +0 -32
  2202. data/src/core/lib/gpr/tls.h +0 -157
  2203. data/src/core/lib/gprpp/arena.cc +0 -104
  2204. data/src/core/lib/gprpp/arena.h +0 -131
  2205. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +0 -32
  2206. data/src/core/lib/iomgr/error_internal.h +0 -66
  2207. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  2208. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2209. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  2210. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  2211. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  2212. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  2213. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -84
  2214. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
  2215. data/src/core/lib/iomgr/event_engine/pollset.h +0 -25
  2216. data/src/core/lib/iomgr/event_engine/promise.h +0 -51
  2217. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -41
  2218. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -35
  2219. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -115
  2220. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -295
  2221. data/src/core/lib/iomgr/event_engine/timer.cc +0 -63
  2222. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  2223. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  2224. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  2225. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  2226. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2227. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2228. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2229. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2230. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  2231. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  2232. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  2233. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2234. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  2235. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  2236. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2237. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  2238. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  2239. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  2240. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  2241. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  2242. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  2243. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  2244. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2245. data/src/core/lib/iomgr/work_serializer.cc +0 -226
  2246. data/src/core/lib/iomgr/work_serializer.h +0 -93
  2247. data/src/core/lib/profiling/basic_timers.cc +0 -295
  2248. data/src/core/lib/profiling/stap_timers.cc +0 -50
  2249. data/src/core/lib/profiling/timers.h +0 -94
  2250. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  2251. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  2252. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  2253. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -170
  2254. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
  2255. data/src/core/lib/slice/slice_api.cc +0 -39
  2256. data/src/core/lib/slice/slice_intern.cc +0 -367
  2257. data/src/core/lib/slice/slice_refcount_base.h +0 -181
  2258. data/src/core/lib/slice/slice_split.cc +0 -100
  2259. data/src/core/lib/slice/slice_split.h +0 -40
  2260. data/src/core/lib/slice/slice_utils.h +0 -200
  2261. data/src/core/lib/slice/static_slice.cc +0 -377
  2262. data/src/core/lib/slice/static_slice.h +0 -300
  2263. data/src/core/lib/surface/init_secure.cc +0 -103
  2264. data/src/core/lib/transport/byte_stream.cc +0 -162
  2265. data/src/core/lib/transport/byte_stream.h +0 -166
  2266. data/src/core/lib/transport/metadata.cc +0 -714
  2267. data/src/core/lib/transport/metadata.h +0 -449
  2268. data/src/core/lib/transport/static_metadata.cc +0 -1032
  2269. data/src/core/lib/transport/static_metadata.h +0 -322
  2270. data/src/core/lib/transport/status_metadata.cc +0 -63
  2271. data/src/core/lib/transport/status_metadata.h +0 -48
  2272. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
  2273. data/third_party/cares/cares/ares.h +0 -670
  2274. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2275. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2276. data/third_party/cares/cares/ares_create_query.c +0 -206
  2277. data/third_party/cares/cares/ares_data.c +0 -222
  2278. data/third_party/cares/cares/ares_data.h +0 -72
  2279. data/third_party/cares/cares/ares_dns.h +0 -103
  2280. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2281. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2282. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2283. data/third_party/cares/cares/ares_getenv.c +0 -30
  2284. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2285. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2286. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2287. data/third_party/cares/cares/ares_getopt.c +0 -122
  2288. data/third_party/cares/cares/ares_getopt.h +0 -53
  2289. data/third_party/cares/cares/ares_init.c +0 -2615
  2290. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2291. data/third_party/cares/cares/ares_library_init.c +0 -195
  2292. data/third_party/cares/cares/ares_library_init.h +0 -43
  2293. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2294. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2295. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2296. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2297. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2298. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2299. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2300. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2301. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2302. data/third_party/cares/cares/ares_private.h +0 -382
  2303. data/third_party/cares/cares/ares_process.c +0 -1473
  2304. data/third_party/cares/cares/ares_query.c +0 -186
  2305. data/third_party/cares/cares/ares_search.c +0 -323
  2306. data/third_party/cares/cares/ares_send.c +0 -137
  2307. data/third_party/cares/cares/ares_setup.h +0 -217
  2308. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2309. data/third_party/cares/cares/ares_version.h +0 -24
  2310. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2311. data/third_party/cares/cares/inet_ntop.c +0 -207
  2312. data/third_party/upb/upb/decode_internal.h +0 -194
  2313. data/third_party/upb/upb/upb_internal.h +0 -58
  2314. /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  2315. /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  2316. /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  2317. /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  2318. /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  2319. /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  2320. /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2321. /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2322. /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2323. /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2324. /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2325. /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2326. /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2327. /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2328. /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2329. /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2330. /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2331. /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2332. /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2333. /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2334. /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2335. /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2336. /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2337. /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2338. /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2339. /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2340. /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2341. /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2342. /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2343. /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2344. /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2345. /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2346. /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -53,54 +53,95 @@
53
53
 
54
54
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
55
55
 
56
+ #include <grpc/event_engine/event_engine.h>
57
+
58
+ // IWYU pragma: no_include <sys/socket.h>
59
+
56
60
  #include <inttypes.h>
57
- #include <limits.h>
58
61
  #include <string.h>
59
62
 
63
+ #include <algorithm>
64
+ #include <initializer_list>
65
+ #include <map>
66
+ #include <memory>
67
+ #include <string>
68
+ #include <type_traits>
69
+ #include <utility>
70
+ #include <vector>
71
+
60
72
  #include "absl/container/inlined_vector.h"
73
+ #include "absl/status/status.h"
74
+ #include "absl/status/statusor.h"
61
75
  #include "absl/strings/str_cat.h"
62
76
  #include "absl/strings/str_format.h"
63
77
  #include "absl/strings/str_join.h"
78
+ #include "absl/strings/string_view.h"
64
79
  #include "absl/strings/strip.h"
80
+ #include "absl/types/optional.h"
81
+ #include "absl/types/variant.h"
65
82
  #include "upb/upb.hpp"
66
83
 
84
+ #include <grpc/byte_buffer.h>
67
85
  #include <grpc/byte_buffer_reader.h>
68
86
  #include <grpc/grpc.h>
87
+ #include <grpc/impl/connectivity_state.h>
88
+ #include <grpc/impl/propagation_bits.h>
89
+ #include <grpc/slice.h>
90
+ #include <grpc/status.h>
69
91
  #include <grpc/support/alloc.h>
70
- #include <grpc/support/string_util.h>
71
- #include <grpc/support/time.h>
92
+ #include <grpc/support/log.h>
72
93
 
73
94
  #include "src/core/ext/filters/client_channel/client_channel.h"
74
95
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
75
96
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
76
97
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
77
- #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h"
78
98
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
79
99
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
80
- #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
81
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
82
100
  #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
83
- #include "src/core/ext/filters/client_channel/server_address.h"
84
- #include "src/core/lib/address_utils/parse_address.h"
85
101
  #include "src/core/lib/address_utils/sockaddr_utils.h"
86
102
  #include "src/core/lib/backoff/backoff.h"
87
103
  #include "src/core/lib/channel/channel_args.h"
88
- #include "src/core/lib/channel/channel_stack.h"
89
104
  #include "src/core/lib/channel/channel_stack_builder.h"
105
+ #include "src/core/lib/channel/channelz.h"
90
106
  #include "src/core/lib/config/core_configuration.h"
107
+ #include "src/core/lib/debug/trace.h"
91
108
  #include "src/core/lib/gpr/string.h"
92
- #include "src/core/lib/gprpp/manual_constructor.h"
93
- #include "src/core/lib/gprpp/memory.h"
109
+ #include "src/core/lib/gpr/useful.h"
110
+ #include "src/core/lib/gprpp/crash.h"
111
+ #include "src/core/lib/gprpp/debug_location.h"
94
112
  #include "src/core/lib/gprpp/orphanable.h"
113
+ #include "src/core/lib/gprpp/ref_counted.h"
95
114
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
115
+ #include "src/core/lib/gprpp/status_helper.h"
116
+ #include "src/core/lib/gprpp/time.h"
117
+ #include "src/core/lib/gprpp/validation_errors.h"
118
+ #include "src/core/lib/gprpp/work_serializer.h"
119
+ #include "src/core/lib/iomgr/closure.h"
120
+ #include "src/core/lib/iomgr/error.h"
121
+ #include "src/core/lib/iomgr/exec_ctx.h"
122
+ #include "src/core/lib/iomgr/pollset_set.h"
123
+ #include "src/core/lib/iomgr/resolved_address.h"
96
124
  #include "src/core/lib/iomgr/sockaddr.h"
97
125
  #include "src/core/lib/iomgr/socket_utils.h"
98
- #include "src/core/lib/iomgr/timer.h"
99
- #include "src/core/lib/slice/slice_internal.h"
126
+ #include "src/core/lib/json/json.h"
127
+ #include "src/core/lib/json/json_args.h"
128
+ #include "src/core/lib/json/json_object_loader.h"
129
+ #include "src/core/lib/load_balancing/lb_policy.h"
130
+ #include "src/core/lib/load_balancing/lb_policy_factory.h"
131
+ #include "src/core/lib/load_balancing/lb_policy_registry.h"
132
+ #include "src/core/lib/load_balancing/subchannel_interface.h"
133
+ #include "src/core/lib/resolver/resolver.h"
134
+ #include "src/core/lib/resolver/server_address.h"
135
+ #include "src/core/lib/security/credentials/credentials.h"
136
+ #include "src/core/lib/slice/slice.h"
100
137
  #include "src/core/lib/slice/slice_string_helpers.h"
101
138
  #include "src/core/lib/surface/call.h"
102
139
  #include "src/core/lib/surface/channel.h"
103
- #include "src/core/lib/transport/static_metadata.h"
140
+ #include "src/core/lib/surface/channel_init.h"
141
+ #include "src/core/lib/surface/channel_stack_type.h"
142
+ #include "src/core/lib/transport/connectivity_state.h"
143
+ #include "src/core/lib/transport/metadata_batch.h"
144
+ #include "src/core/lib/uri/uri_parser.h"
104
145
 
105
146
  #define GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS 1
106
147
  #define GRPC_GRPCLB_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -113,22 +154,59 @@ namespace grpc_core {
113
154
 
114
155
  TraceFlag grpc_lb_glb_trace(false, "glb");
115
156
 
116
- const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
117
- const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
118
-
119
157
  const char kGrpcLbAddressAttributeKey[] = "grpclb";
120
158
 
121
159
  namespace {
122
160
 
123
- constexpr char kGrpclb[] = "grpclb";
161
+ using ::grpc_event_engine::experimental::EventEngine;
162
+
163
+ constexpr absl::string_view kGrpclb = "grpclb";
124
164
 
125
165
  class GrpcLbConfig : public LoadBalancingPolicy::Config {
126
166
  public:
127
- GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
128
- std::string service_name)
129
- : child_policy_(std::move(child_policy)),
130
- service_name_(std::move(service_name)) {}
131
- const char* name() const override { return kGrpclb; }
167
+ GrpcLbConfig() = default;
168
+
169
+ GrpcLbConfig(const GrpcLbConfig&) = delete;
170
+ GrpcLbConfig& operator=(const GrpcLbConfig&) = delete;
171
+
172
+ GrpcLbConfig(GrpcLbConfig&& other) = delete;
173
+ GrpcLbConfig& operator=(GrpcLbConfig&& other) = delete;
174
+
175
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
176
+ static const auto* loader =
177
+ JsonObjectLoader<GrpcLbConfig>()
178
+ // Note: "childPolicy" field requires custom parsing, so
179
+ // it's handled in JsonPostLoad() instead.
180
+ .OptionalField("serviceName", &GrpcLbConfig::service_name_)
181
+ .Finish();
182
+ return loader;
183
+ }
184
+
185
+ void JsonPostLoad(const Json& json, const JsonArgs&,
186
+ ValidationErrors* errors) {
187
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
188
+ Json child_policy_config_json_tmp;
189
+ const Json* child_policy_config_json;
190
+ auto it = json.object_value().find("childPolicy");
191
+ if (it == json.object_value().end()) {
192
+ child_policy_config_json_tmp = Json::Array{Json::Object{
193
+ {"round_robin", Json::Object()},
194
+ }};
195
+ child_policy_config_json = &child_policy_config_json_tmp;
196
+ } else {
197
+ child_policy_config_json = &it->second;
198
+ }
199
+ auto child_policy_config =
200
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
201
+ *child_policy_config_json);
202
+ if (!child_policy_config.ok()) {
203
+ errors->AddError(child_policy_config.status().message());
204
+ return;
205
+ }
206
+ child_policy_ = std::move(*child_policy_config);
207
+ }
208
+
209
+ absl::string_view name() const override { return kGrpclb; }
132
210
 
133
211
  RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
134
212
  return child_policy_;
@@ -145,9 +223,9 @@ class GrpcLb : public LoadBalancingPolicy {
145
223
  public:
146
224
  explicit GrpcLb(Args args);
147
225
 
148
- const char* name() const override { return kGrpclb; }
226
+ absl::string_view name() const override { return kGrpclb; }
149
227
 
150
- void UpdateLocked(UpdateArgs args) override;
228
+ absl::Status UpdateLocked(UpdateArgs args) override;
151
229
  void ResetBackoffLocked() override;
152
230
 
153
231
  private:
@@ -177,13 +255,14 @@ class GrpcLb : public LoadBalancingPolicy {
177
255
  void ScheduleNextClientLoadReportLocked();
178
256
  void SendClientLoadReportLocked();
179
257
 
180
- static void MaybeSendClientLoadReport(void* arg, grpc_error_handle error);
258
+ // EventEngine callbacks
259
+ void MaybeSendClientLoadReportLocked();
260
+
181
261
  static void ClientLoadReportDone(void* arg, grpc_error_handle error);
182
262
  static void OnInitialRequestSent(void* arg, grpc_error_handle error);
183
263
  static void OnBalancerMessageReceived(void* arg, grpc_error_handle error);
184
264
  static void OnBalancerStatusReceived(void* arg, grpc_error_handle error);
185
265
 
186
- void MaybeSendClientLoadReportLocked(grpc_error_handle error);
187
266
  void ClientLoadReportDoneLocked(grpc_error_handle error);
188
267
  void OnInitialRequestSentLocked();
189
268
  void OnBalancerMessageReceivedLocked();
@@ -217,14 +296,12 @@ class GrpcLb : public LoadBalancingPolicy {
217
296
  // The stats for client-side load reporting associated with this LB call.
218
297
  // Created after the first serverlist is received.
219
298
  RefCountedPtr<GrpcLbClientStats> client_stats_;
220
- grpc_millis client_stats_report_interval_ = 0;
221
- grpc_timer client_load_report_timer_;
222
- bool client_load_report_timer_callback_pending_ = false;
299
+ Duration client_stats_report_interval_;
300
+ absl::optional<EventEngine::TaskHandle> client_load_report_handle_;
223
301
  bool last_client_load_report_counters_were_zero_ = false;
224
302
  bool client_load_report_is_due_ = false;
225
- // The closure used for either the load report timer or the callback for
226
- // completion of sending the load report.
227
- grpc_closure client_load_report_closure_;
303
+ // The closure used for the completion of sending the load report.
304
+ grpc_closure client_load_report_done_closure_;
228
305
  };
229
306
 
230
307
  class SubchannelWrapper : public DelegatingSubchannel {
@@ -261,8 +338,8 @@ class GrpcLb : public LoadBalancingPolicy {
261
338
  client_stats_(std::move(client_stats)) {}
262
339
 
263
340
  std::unique_ptr<AttributeInterface> Copy() const override {
264
- return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
265
- client_stats_);
341
+ return std::make_unique<TokenAndClientStatsAttribute>(lb_token_,
342
+ client_stats_);
266
343
  }
267
344
 
268
345
  int Cmp(const AttributeInterface* other_base) const override {
@@ -330,7 +407,7 @@ class GrpcLb : public LoadBalancingPolicy {
330
407
  class Picker : public SubchannelPicker {
331
408
  public:
332
409
  Picker(RefCountedPtr<Serverlist> serverlist,
333
- std::unique_ptr<SubchannelPicker> child_picker,
410
+ RefCountedPtr<SubchannelPicker> child_picker,
334
411
  RefCountedPtr<GrpcLbClientStats> client_stats)
335
412
  : serverlist_(std::move(serverlist)),
336
413
  child_picker_(std::move(child_picker)),
@@ -339,10 +416,43 @@ class GrpcLb : public LoadBalancingPolicy {
339
416
  PickResult Pick(PickArgs args) override;
340
417
 
341
418
  private:
419
+ // A subchannel call tracker that unrefs the GrpcLbClientStats object
420
+ // in the case where the subchannel call is never actually started,
421
+ // since the client load reporting filter will not be able to do it
422
+ // in that case.
423
+ class SubchannelCallTracker : public SubchannelCallTrackerInterface {
424
+ public:
425
+ SubchannelCallTracker(
426
+ RefCountedPtr<GrpcLbClientStats> client_stats,
427
+ std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker)
428
+ : client_stats_(std::move(client_stats)),
429
+ original_call_tracker_(std::move(original_call_tracker)) {}
430
+
431
+ void Start() override {
432
+ if (original_call_tracker_ != nullptr) {
433
+ original_call_tracker_->Start();
434
+ }
435
+ // If we're actually starting the subchannel call, then the
436
+ // client load reporting filter will take ownership of the ref
437
+ // passed down to it via metadata.
438
+ client_stats_.release();
439
+ }
440
+
441
+ void Finish(FinishArgs args) override {
442
+ if (original_call_tracker_ != nullptr) {
443
+ original_call_tracker_->Finish(args);
444
+ }
445
+ }
446
+
447
+ private:
448
+ RefCountedPtr<GrpcLbClientStats> client_stats_;
449
+ std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker_;
450
+ };
451
+
342
452
  // Serverlist to be used for determining drops.
343
453
  RefCountedPtr<Serverlist> serverlist_;
344
454
 
345
- std::unique_ptr<SubchannelPicker> child_picker_;
455
+ RefCountedPtr<SubchannelPicker> child_picker_;
346
456
  RefCountedPtr<GrpcLbClientStats> client_stats_;
347
457
  };
348
458
 
@@ -352,11 +462,12 @@ class GrpcLb : public LoadBalancingPolicy {
352
462
  : parent_(std::move(parent)) {}
353
463
 
354
464
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
355
- ServerAddress address, const grpc_channel_args& args) override;
465
+ ServerAddress address, const ChannelArgs& args) override;
356
466
  void UpdateState(grpc_connectivity_state state, const absl::Status& status,
357
- std::unique_ptr<SubchannelPicker> picker) override;
467
+ RefCountedPtr<SubchannelPicker> picker) override;
358
468
  void RequestReresolution() override;
359
469
  absl::string_view GetAuthority() override;
470
+ grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
360
471
  void AddTraceEvent(TraceSeverity severity,
361
472
  absl::string_view message) override;
362
473
 
@@ -384,7 +495,8 @@ class GrpcLb : public LoadBalancingPolicy {
384
495
  "entering fallback mode",
385
496
  parent_.get(), status.ToString().c_str());
386
497
  parent_->fallback_at_startup_checks_pending_ = false;
387
- grpc_timer_cancel(&parent_->lb_fallback_timer_);
498
+ parent_->channel_control_helper()->GetEventEngine()->Cancel(
499
+ *parent_->lb_fallback_timer_handle_);
388
500
  parent_->fallback_mode_ = true;
389
501
  parent_->CreateOrUpdateChildPolicyLocked();
390
502
  // Cancel the watch, since we don't care about the channel state once we
@@ -396,42 +508,34 @@ class GrpcLb : public LoadBalancingPolicy {
396
508
  RefCountedPtr<GrpcLb> parent_;
397
509
  };
398
510
 
399
- ~GrpcLb() override;
400
-
401
511
  void ShutdownLocked() override;
402
512
 
403
513
  // Helper functions used in UpdateLocked().
404
- void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
405
- const grpc_channel_args& args);
406
- static ServerAddressList AddNullLbTokenToAddresses(
407
- const ServerAddressList& addresses);
514
+ absl::Status UpdateBalancerChannelLocked(const ChannelArgs& args);
408
515
 
409
516
  void CancelBalancerChannelConnectivityWatchLocked();
410
517
 
411
518
  // Methods for dealing with fallback state.
412
519
  void MaybeEnterFallbackModeAfterStartup();
413
- static void OnFallbackTimer(void* arg, grpc_error_handle error);
414
- void OnFallbackTimerLocked(grpc_error_handle error);
520
+ void OnFallbackTimerLocked();
415
521
 
416
522
  // Methods for dealing with the balancer call.
417
523
  void StartBalancerCallLocked();
418
524
  void StartBalancerCallRetryTimerLocked();
419
- static void OnBalancerCallRetryTimer(void* arg, grpc_error_handle error);
420
- void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
525
+ void OnBalancerCallRetryTimerLocked();
421
526
 
422
527
  // Methods for dealing with the child policy.
423
- grpc_channel_args* CreateChildPolicyArgsLocked(
528
+ ChannelArgs CreateChildPolicyArgsLocked(
424
529
  bool is_backend_from_grpclb_load_balancer);
425
530
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
426
- const grpc_channel_args* args);
531
+ const ChannelArgs& args);
427
532
  void CreateOrUpdateChildPolicyLocked();
428
533
 
429
534
  // Subchannel caching.
430
535
  void CacheDeletedSubchannelLocked(
431
536
  RefCountedPtr<SubchannelInterface> subchannel);
432
537
  void StartSubchannelCacheTimerLocked();
433
- static void OnSubchannelCacheTimer(void* arg, grpc_error_handle error);
434
- void OnSubchannelCacheTimerLocked(grpc_error_handle error);
538
+ void OnSubchannelCacheTimerLocked();
435
539
 
436
540
  // Who the client is trying to communicate with.
437
541
  std::string server_name_;
@@ -439,7 +543,7 @@ class GrpcLb : public LoadBalancingPolicy {
439
543
  RefCountedPtr<GrpcLbConfig> config_;
440
544
 
441
545
  // Current channel args from the resolver.
442
- grpc_channel_args* args_ = nullptr;
546
+ ChannelArgs args_;
443
547
 
444
548
  // Internal state.
445
549
  bool shutting_down_ = false;
@@ -458,13 +562,11 @@ class GrpcLb : public LoadBalancingPolicy {
458
562
  // is shutting down, or the LB call has ended). A non-NULL lb_calld_ always
459
563
  // contains a non-NULL lb_call_.
460
564
  OrphanablePtr<BalancerCallState> lb_calld_;
461
- // Timeout in milliseconds for the LB call. 0 means no deadline.
462
- const int lb_call_timeout_ms_ = 0;
565
+ // Timeout for the LB call. 0 means no deadline.
566
+ const Duration lb_call_timeout_;
463
567
  // Balancer call retry state.
464
568
  BackOff lb_call_backoff_;
465
- bool retry_timer_callback_pending_ = false;
466
- grpc_timer lb_call_retry_timer_;
467
- grpc_closure lb_on_call_retry_;
569
+ absl::optional<EventEngine::TaskHandle> lb_call_retry_timer_handle_;
468
570
 
469
571
  // The deserialized response from the balancer. May be nullptr until one
470
572
  // such response has arrived.
@@ -473,14 +575,16 @@ class GrpcLb : public LoadBalancingPolicy {
473
575
  // Whether we're in fallback mode.
474
576
  bool fallback_mode_ = false;
475
577
  // The backend addresses from the resolver.
476
- ServerAddressList fallback_backend_addresses_;
578
+ absl::StatusOr<ServerAddressList> fallback_backend_addresses_;
579
+ // The last resolution note from our parent.
580
+ // To be passed to child policy when fallback_backend_addresses_ is empty.
581
+ std::string resolution_note_;
477
582
  // State for fallback-at-startup checks.
478
583
  // Timeout after startup after which we will go into fallback mode if
479
584
  // we have not received a serverlist from the balancer.
480
- const int fallback_at_startup_timeout_ = 0;
585
+ const Duration fallback_at_startup_timeout_;
481
586
  bool fallback_at_startup_checks_pending_ = false;
482
- grpc_timer lb_fallback_timer_;
483
- grpc_closure lb_on_fallback_;
587
+ absl::optional<EventEngine::TaskHandle> lb_fallback_timer_handle_;
484
588
 
485
589
  // The child policy to use for the backends.
486
590
  OrphanablePtr<LoadBalancingPolicy> child_policy_;
@@ -488,13 +592,11 @@ class GrpcLb : public LoadBalancingPolicy {
488
592
  bool child_policy_ready_ = false;
489
593
 
490
594
  // Deleted subchannel caching.
491
- const grpc_millis subchannel_cache_interval_ms_;
492
- std::map<grpc_millis /*deletion time*/,
595
+ const Duration subchannel_cache_interval_;
596
+ std::map<Timestamp /*deletion time*/,
493
597
  std::vector<RefCountedPtr<SubchannelInterface>>>
494
598
  cached_subchannels_;
495
- grpc_timer subchannel_cache_timer_;
496
- grpc_closure on_subchannel_cache_timer_;
497
- bool subchannel_cache_timer_pending_ = false;
599
+ absl::optional<EventEngine::TaskHandle> subchannel_cache_timer_handle_;
498
600
  };
499
601
 
500
602
  //
@@ -509,8 +611,8 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
509
611
  memset(addr, 0, sizeof(*addr));
510
612
  if (server.drop) return;
511
613
  const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
512
- /* the addresses are given in binary format (a in(6)_addr struct) in
513
- * server->ip_address.bytes. */
614
+ // the addresses are given in binary format (a in(6)_addr struct) in
615
+ // server->ip_address.bytes.
514
616
  if (server.ip_size == 4) {
515
617
  addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
516
618
  grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(&addr->addr);
@@ -537,7 +639,8 @@ std::string GrpcLb::Serverlist::AsText() const {
537
639
  } else {
538
640
  grpc_resolved_address addr;
539
641
  ParseServer(server, &addr);
540
- ipport = grpc_sockaddr_to_string(&addr, false);
642
+ auto addr_str = grpc_sockaddr_to_string(&addr, false);
643
+ ipport = addr_str.ok() ? *addr_str : addr_str.status().ToString();
541
644
  }
542
645
  entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
543
646
  ipport, server.load_balance_token));
@@ -585,19 +688,21 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
585
688
  server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
586
689
  std::string lb_token(server.load_balance_token, lb_token_length);
587
690
  if (lb_token.empty()) {
691
+ auto addr_uri = grpc_sockaddr_to_uri(&addr);
588
692
  gpr_log(GPR_INFO,
589
693
  "Missing LB token for backend address '%s'. The empty token will "
590
694
  "be used instead",
591
- grpc_sockaddr_to_uri(&addr).c_str());
695
+ addr_uri.ok() ? addr_uri->c_str()
696
+ : addr_uri.status().ToString().c_str());
592
697
  }
593
698
  // Attach attribute to address containing LB token and stats object.
594
699
  std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
595
700
  attributes;
596
701
  attributes[kGrpcLbAddressAttributeKey] =
597
- absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
598
- stats);
702
+ std::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
703
+ stats);
599
704
  // Add address.
600
- addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
705
+ addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
601
706
  }
602
707
  return addresses;
603
708
  }
@@ -648,12 +753,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
648
753
  // client_load_reporting filter.
649
754
  GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
650
755
  if (client_stats != nullptr) {
651
- client_stats->Ref().release(); // Ref passed via metadata.
756
+ complete_pick->subchannel_call_tracker =
757
+ std::make_unique<SubchannelCallTracker>(
758
+ client_stats->Ref(),
759
+ std::move(complete_pick->subchannel_call_tracker));
652
760
  // The metadata value is a hack: we pretend the pointer points to
653
761
  // a string and rely on the client_load_reporting filter to know
654
762
  // how to interpret it.
655
763
  args.initial_metadata->Add(
656
- kGrpcLbClientStatsMetadataKey,
764
+ GrpcLbClientStatsMetadata::key(),
657
765
  absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
658
766
  // Update calls-started.
659
767
  client_stats->AddCallStarted();
@@ -666,7 +774,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
666
774
  char* lb_token = static_cast<char*>(
667
775
  args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
668
776
  strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
669
- args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
777
+ args.initial_metadata->Add(LbTokenMetadata::key(), lb_token);
670
778
  }
671
779
  // Unwrap subchannel to pass up to the channel.
672
780
  complete_pick->subchannel = subchannel_wrapper->wrapped_subchannel();
@@ -679,16 +787,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
679
787
  //
680
788
 
681
789
  RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
682
- ServerAddress address, const grpc_channel_args& args) {
790
+ ServerAddress address, const ChannelArgs& args) {
683
791
  if (parent_->shutting_down_) return nullptr;
684
792
  const TokenAndClientStatsAttribute* attribute =
685
793
  static_cast<const TokenAndClientStatsAttribute*>(
686
794
  address.GetAttribute(kGrpcLbAddressAttributeKey));
687
795
  if (attribute == nullptr) {
688
- gpr_log(GPR_ERROR,
689
- "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
690
- parent_.get(), address.ToString().c_str());
691
- abort();
796
+ Crash(absl::StrFormat(
797
+ "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
798
+ parent_.get(), address.ToString().c_str()));
692
799
  }
693
800
  std::string lb_token = attribute->lb_token();
694
801
  RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
@@ -701,7 +808,7 @@ RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
701
808
 
702
809
  void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
703
810
  const absl::Status& status,
704
- std::unique_ptr<SubchannelPicker> picker) {
811
+ RefCountedPtr<SubchannelPicker> picker) {
705
812
  if (parent_->shutting_down_) return;
706
813
  // Record whether child policy reports READY.
707
814
  parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
@@ -736,8 +843,8 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
736
843
  }
737
844
  parent_->channel_control_helper()->UpdateState(
738
845
  state, status,
739
- absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
740
- std::move(client_stats)));
846
+ MakeRefCounted<Picker>(std::move(serverlist), std::move(picker),
847
+ std::move(client_stats)));
741
848
  }
742
849
 
743
850
  void GrpcLb::Helper::RequestReresolution() {
@@ -756,6 +863,10 @@ absl::string_view GrpcLb::Helper::GetAuthority() {
756
863
  return parent_->channel_control_helper()->GetAuthority();
757
864
  }
758
865
 
866
+ grpc_event_engine::experimental::EventEngine* GrpcLb::Helper::GetEventEngine() {
867
+ return parent_->channel_control_helper()->GetEventEngine();
868
+ }
869
+
759
870
  void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
760
871
  absl::string_view message) {
761
872
  if (parent_->shutting_down_) return;
@@ -785,16 +896,16 @@ GrpcLb::BalancerCallState::BalancerCallState(
785
896
  OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
786
897
  GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
787
898
  this, grpc_schedule_on_exec_ctx);
788
- GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
899
+ GRPC_CLOSURE_INIT(&client_load_report_done_closure_, ClientLoadReportDone,
789
900
  this, grpc_schedule_on_exec_ctx);
790
- const grpc_millis deadline =
791
- grpclb_policy()->lb_call_timeout_ms_ == 0
792
- ? GRPC_MILLIS_INF_FUTURE
793
- : ExecCtx::Get()->Now() + grpclb_policy()->lb_call_timeout_ms_;
901
+ const Timestamp deadline =
902
+ grpclb_policy()->lb_call_timeout_ == Duration::Zero()
903
+ ? Timestamp::InfFuture()
904
+ : Timestamp::Now() + grpclb_policy()->lb_call_timeout_;
794
905
  lb_call_ = grpc_channel_create_pollset_set_call(
795
906
  grpclb_policy()->lb_channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
796
907
  grpclb_policy_->interested_parties(),
797
- GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD,
908
+ Slice::FromStaticString("/grpc.lb.v1.LoadBalancer/BalanceLoad").c_slice(),
798
909
  nullptr, deadline, nullptr);
799
910
  // Init the LB call request payload.
800
911
  upb::Arena arena;
@@ -805,7 +916,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
805
916
  arena.ptr());
806
917
  send_message_payload_ =
807
918
  grpc_raw_byte_buffer_create(&request_payload_slice, 1);
808
- grpc_slice_unref_internal(request_payload_slice);
919
+ CSliceUnref(request_payload_slice);
809
920
  // Init other data associated with the LB call.
810
921
  grpc_metadata_array_init(&lb_initial_metadata_recv_);
811
922
  grpc_metadata_array_init(&lb_trailing_metadata_recv_);
@@ -818,7 +929,7 @@ GrpcLb::BalancerCallState::~BalancerCallState() {
818
929
  grpc_metadata_array_destroy(&lb_trailing_metadata_recv_);
819
930
  grpc_byte_buffer_destroy(send_message_payload_);
820
931
  grpc_byte_buffer_destroy(recv_message_payload_);
821
- grpc_slice_unref_internal(lb_call_status_details_);
932
+ CSliceUnref(lb_call_status_details_);
822
933
  }
823
934
 
824
935
  void GrpcLb::BalancerCallState::Orphan() {
@@ -828,8 +939,10 @@ void GrpcLb::BalancerCallState::Orphan() {
828
939
  // up. Otherwise, we are here because grpclb_policy has to orphan a failed
829
940
  // call, then the following cancellation will be a no-op.
830
941
  grpc_call_cancel_internal(lb_call_);
831
- if (client_load_report_timer_callback_pending_) {
832
- grpc_timer_cancel(&client_load_report_timer_);
942
+ if (client_load_report_handle_.has_value() &&
943
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
944
+ client_load_report_handle_.value())) {
945
+ Unref(DEBUG_LOCATION, "client_load_report cancelled");
833
946
  }
834
947
  // Note that the initial ref is hold by lb_on_balancer_status_received_
835
948
  // instead of the caller of this function. So the corresponding unref happens
@@ -913,34 +1026,20 @@ void GrpcLb::BalancerCallState::StartQuery() {
913
1026
  }
914
1027
 
915
1028
  void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
916
- // InvalidateNow to avoid getting stuck re-initializing this timer
917
- // in a loop while draining the currently-held WorkSerializer.
918
- // Also see https://github.com/grpc/grpc/issues/26079.
919
- ExecCtx::Get()->InvalidateNow();
920
- const grpc_millis next_client_load_report_time =
921
- ExecCtx::Get()->Now() + client_stats_report_interval_;
922
- GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
923
- this, grpc_schedule_on_exec_ctx);
924
- grpc_timer_init(&client_load_report_timer_, next_client_load_report_time,
925
- &client_load_report_closure_);
926
- client_load_report_timer_callback_pending_ = true;
927
- }
928
-
929
- void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
930
- void* arg, grpc_error_handle error) {
931
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
932
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
933
- lb_calld->grpclb_policy()->work_serializer()->Run(
934
- [lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
935
- DEBUG_LOCATION);
1029
+ client_load_report_handle_ =
1030
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->RunAfter(
1031
+ client_stats_report_interval_, [this] {
1032
+ ApplicationCallbackExecCtx callback_exec_ctx;
1033
+ ExecCtx exec_ctx;
1034
+ grpclb_policy()->work_serializer()->Run(
1035
+ [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
1036
+ });
936
1037
  }
937
1038
 
938
- void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
939
- grpc_error_handle error) {
940
- client_load_report_timer_callback_pending_ = false;
941
- if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
1039
+ void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
1040
+ client_load_report_handle_.reset();
1041
+ if (this != grpclb_policy()->lb_calld_.get()) {
942
1042
  Unref(DEBUG_LOCATION, "client_load_report");
943
- GRPC_ERROR_UNREF(error);
944
1043
  return;
945
1044
  }
946
1045
  // If we've already sent the initial request, then we can go ahead and send
@@ -987,16 +1086,14 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
987
1086
  num_calls_finished_known_received, drop_token_counts.get(), arena.ptr());
988
1087
  send_message_payload_ =
989
1088
  grpc_raw_byte_buffer_create(&request_payload_slice, 1);
990
- grpc_slice_unref_internal(request_payload_slice);
1089
+ CSliceUnref(request_payload_slice);
991
1090
  // Send the report.
992
1091
  grpc_op op;
993
1092
  memset(&op, 0, sizeof(op));
994
1093
  op.op = GRPC_OP_SEND_MESSAGE;
995
1094
  op.data.send_message.send_message = send_message_payload_;
996
- GRPC_CLOSURE_INIT(&client_load_report_closure_, ClientLoadReportDone, this,
997
- grpc_schedule_on_exec_ctx);
998
1095
  grpc_call_error call_error = grpc_call_start_batch_and_execute(
999
- lb_call_, &op, 1, &client_load_report_closure_);
1096
+ lb_call_, &op, 1, &client_load_report_done_closure_);
1000
1097
  if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
1001
1098
  gpr_log(GPR_ERROR,
1002
1099
  "[grpclb %p] lb_calld=%p call_error=%d sending client load report",
@@ -1008,7 +1105,6 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
1008
1105
  void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
1009
1106
  grpc_error_handle error) {
1010
1107
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1011
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1012
1108
  lb_calld->grpclb_policy()->work_serializer()->Run(
1013
1109
  [lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
1014
1110
  DEBUG_LOCATION);
@@ -1018,9 +1114,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
1018
1114
  grpc_error_handle error) {
1019
1115
  grpc_byte_buffer_destroy(send_message_payload_);
1020
1116
  send_message_payload_ = nullptr;
1021
- if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
1117
+ if (!error.ok() || this != grpclb_policy()->lb_calld_.get()) {
1022
1118
  Unref(DEBUG_LOCATION, "client_load_report");
1023
- GRPC_ERROR_UNREF(error);
1024
1119
  return;
1025
1120
  }
1026
1121
  ScheduleNextClientLoadReportLocked();
@@ -1080,15 +1175,16 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1080
1175
  } else {
1081
1176
  switch (response.type) {
1082
1177
  case response.INITIAL: {
1083
- if (response.client_stats_report_interval != 0) {
1178
+ if (response.client_stats_report_interval != Duration::Zero()) {
1084
1179
  client_stats_report_interval_ = std::max(
1085
- int64_t(GPR_MS_PER_SEC), response.client_stats_report_interval);
1180
+ Duration::Seconds(1), response.client_stats_report_interval);
1086
1181
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1087
1182
  gpr_log(GPR_INFO,
1088
1183
  "[grpclb %p] lb_calld=%p: Received initial LB response "
1089
1184
  "message; client load reporting interval = %" PRId64
1090
1185
  " milliseconds",
1091
- grpclb_policy(), this, client_stats_report_interval_);
1186
+ grpclb_policy(), this,
1187
+ client_stats_report_interval_.millis());
1092
1188
  }
1093
1189
  } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1094
1190
  gpr_log(GPR_INFO,
@@ -1114,7 +1210,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1114
1210
  seen_serverlist_ = true;
1115
1211
  // Start sending client load report only after we start using the
1116
1212
  // serverlist returned from the current LB call.
1117
- if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
1213
+ if (client_stats_report_interval_ > Duration::Zero() &&
1214
+ client_stats_ == nullptr) {
1118
1215
  client_stats_ = MakeRefCounted<GrpcLbClientStats>();
1119
1216
  // Ref held by callback.
1120
1217
  Ref(DEBUG_LOCATION, "client_load_report").release();
@@ -1158,7 +1255,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1158
1255
  }
1159
1256
  if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1160
1257
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1161
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1258
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1259
+ *grpclb_policy()->lb_fallback_timer_handle_);
1162
1260
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1163
1261
  }
1164
1262
  // Update the serverlist in the GrpcLb instance. This serverlist
@@ -1176,7 +1274,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1176
1274
  grpclb_policy());
1177
1275
  if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1178
1276
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1179
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1277
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1278
+ *grpclb_policy()->lb_fallback_timer_handle_);
1180
1279
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1181
1280
  }
1182
1281
  grpclb_policy()->fallback_mode_ = true;
@@ -1190,7 +1289,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1190
1289
  }
1191
1290
  }
1192
1291
  }
1193
- grpc_slice_unref_internal(response_slice);
1292
+ CSliceUnref(response_slice);
1194
1293
  if (!grpclb_policy()->shutting_down_) {
1195
1294
  // Keep listening for serverlist updates.
1196
1295
  grpc_op op;
@@ -1211,7 +1310,6 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1211
1310
  void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
1212
1311
  void* arg, grpc_error_handle error) {
1213
1312
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1214
- (void)GRPC_ERROR_REF(error); // owned by lambda
1215
1313
  lb_calld->grpclb_policy()->work_serializer()->Run(
1216
1314
  [lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
1217
1315
  DEBUG_LOCATION);
@@ -1226,10 +1324,9 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1226
1324
  "[grpclb %p] lb_calld=%p: Status from LB server received. "
1227
1325
  "Status = %d, details = '%s', (lb_call: %p), error '%s'",
1228
1326
  grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
1229
- grpc_error_std_string(error).c_str());
1327
+ StatusToString(error).c_str());
1230
1328
  gpr_free(status_details);
1231
1329
  }
1232
- GRPC_ERROR_UNREF(error);
1233
1330
  // If this lb_calld is still in use, this call ended because of a failure so
1234
1331
  // we want to retry connecting. Otherwise, we have deliberately ended this
1235
1332
  // call and no further action is required.
@@ -1237,6 +1334,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1237
1334
  // If the fallback-at-startup checks are pending, go into fallback mode
1238
1335
  // immediately. This short-circuits the timeout for the fallback-at-startup
1239
1336
  // case.
1337
+ grpclb_policy()->lb_calld_.reset();
1240
1338
  if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1241
1339
  GPR_ASSERT(!seen_serverlist_);
1242
1340
  gpr_log(GPR_INFO,
@@ -1244,7 +1342,8 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1244
1342
  "serverlist; entering fallback mode",
1245
1343
  grpclb_policy());
1246
1344
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1247
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1345
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1346
+ *grpclb_policy()->lb_fallback_timer_handle_);
1248
1347
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1249
1348
  grpclb_policy()->fallback_mode_ = true;
1250
1349
  grpclb_policy()->CreateOrUpdateChildPolicyLocked();
@@ -1252,7 +1351,6 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1252
1351
  // This handles the fallback-after-startup case.
1253
1352
  grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
1254
1353
  }
1255
- grpclb_policy()->lb_calld_.reset();
1256
1354
  GPR_ASSERT(!grpclb_policy()->shutting_down_);
1257
1355
  grpclb_policy()->channel_control_helper()->RequestReresolution();
1258
1356
  if (seen_initial_response_) {
@@ -1273,134 +1371,149 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1273
1371
  // helper code for creating balancer channel
1274
1372
  //
1275
1373
 
1276
- ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
1374
+ ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
1277
1375
  const ServerAddressList* addresses =
1278
1376
  FindGrpclbBalancerAddressesInChannelArgs(args);
1279
1377
  if (addresses != nullptr) return *addresses;
1280
1378
  return ServerAddressList();
1281
1379
  }
1282
1380
 
1283
- /* Returns the channel args for the LB channel, used to create a bidirectional
1284
- * stream for the reception of load balancing updates.
1285
- *
1286
- * Inputs:
1287
- * - \a response_generator: in order to propagate updates from the resolver
1288
- * above the grpclb policy.
1289
- * - \a args: other args inherited from the grpclb policy. */
1290
- grpc_channel_args* BuildBalancerChannelArgs(
1381
+ // Returns the channel args for the LB channel, used to create a bidirectional
1382
+ // stream for the reception of load balancing updates.
1383
+ //
1384
+ // Inputs:
1385
+ // - \a response_generator: in order to propagate updates from the resolver
1386
+ // above the grpclb policy.
1387
+ // - \a args: other args inherited from the grpclb policy.
1388
+ ChannelArgs BuildBalancerChannelArgs(
1291
1389
  FakeResolverResponseGenerator* response_generator,
1292
- const grpc_channel_args* args) {
1293
- // Channel args to remove.
1294
- static const char* args_to_remove[] = {
1295
- // LB policy name, since we want to use the default (pick_first) in
1296
- // the LB channel.
1297
- GRPC_ARG_LB_POLICY_NAME,
1298
- // Strip out the service config, since we don't want the LB policy
1299
- // config specified for the parent channel to affect the LB channel.
1300
- GRPC_ARG_SERVICE_CONFIG,
1301
- // The channel arg for the server URI, since that will be different for
1302
- // the LB channel than for the parent channel. The client channel
1303
- // factory will re-add this arg with the right value.
1304
- GRPC_ARG_SERVER_URI,
1305
- // The fake resolver response generator, because we are replacing it
1306
- // with the one from the grpclb policy, used to propagate updates to
1307
- // the LB channel.
1308
- GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
1309
- // The LB channel should use the authority indicated by the target
1310
- // authority table (see \a ModifyGrpclbBalancerChannelArgs),
1311
- // as opposed to the authority from the parent channel.
1312
- GRPC_ARG_DEFAULT_AUTHORITY,
1313
- // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
1314
- // treated as a stand-alone channel and not inherit this argument from the
1315
- // args of the parent channel.
1316
- GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
1317
- // Don't want to pass down channelz node from parent; the balancer
1318
- // channel will get its own.
1319
- GRPC_ARG_CHANNELZ_CHANNEL_NODE,
1320
- };
1321
- // Channel args to add.
1322
- absl::InlinedVector<grpc_arg, 3> args_to_add = {
1323
- // The fake resolver response generator, which we use to inject
1324
- // address updates into the LB channel.
1325
- FakeResolverResponseGenerator::MakeChannelArg(response_generator),
1390
+ const ChannelArgs& args) {
1391
+ ChannelArgs grpclb_channel_args;
1392
+ const grpc_channel_args* lb_channel_specific_args =
1393
+ args.GetPointer<grpc_channel_args>(
1394
+ GRPC_ARG_EXPERIMENTAL_GRPCLB_CHANNEL_ARGS);
1395
+ if (lb_channel_specific_args != nullptr) {
1396
+ grpclb_channel_args = ChannelArgs::FromC(lb_channel_specific_args);
1397
+ } else {
1398
+ // Set grpclb_channel_args based on the parent channel's channel args.
1399
+ grpclb_channel_args =
1400
+ args
1401
+ // LB policy name, since we want to use the default (pick_first) in
1402
+ // the LB channel.
1403
+ .Remove(GRPC_ARG_LB_POLICY_NAME)
1404
+ // Strip out the service config, since we don't want the LB policy
1405
+ // config specified for the parent channel to affect the LB channel.
1406
+ .Remove(GRPC_ARG_SERVICE_CONFIG)
1407
+ // The channel arg for the server URI, since that will be different
1408
+ // for the LB channel than for the parent channel. The client
1409
+ // channel factory will re-add this arg with the right value.
1410
+ .Remove(GRPC_ARG_SERVER_URI)
1411
+ // The fake resolver response generator, because we are replacing it
1412
+ // with the one from the grpclb policy, used to propagate updates to
1413
+ // the LB channel.
1414
+ .Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
1415
+ // The LB channel should use the authority indicated by the target
1416
+ // authority table (see \a ModifyGrpclbBalancerChannelArgs),
1417
+ // as opposed to the authority from the parent channel.
1418
+ .Remove(GRPC_ARG_DEFAULT_AUTHORITY)
1419
+ // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should
1420
+ // be treated as a stand-alone channel and not inherit this argument
1421
+ // from the args of the parent channel.
1422
+ .Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
1423
+ // Don't want to pass down channelz node from parent; the balancer
1424
+ // channel will get its own.
1425
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
1426
+ // Remove the channel args for channel credentials and replace it
1427
+ // with a version that does not contain call credentials. The
1428
+ // loadbalancer is not necessarily trusted to handle bearer token
1429
+ // credentials.
1430
+ .Remove(GRPC_ARG_CHANNEL_CREDENTIALS);
1431
+ }
1432
+ // Create channel args for channel credentials that does not contain bearer
1433
+ // token credentials.
1434
+ auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
1435
+ GPR_ASSERT(channel_credentials != nullptr);
1436
+ RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
1437
+ channel_credentials->duplicate_without_call_credentials();
1438
+ GPR_ASSERT(creds_sans_call_creds != nullptr);
1439
+ return grpclb_channel_args
1326
1440
  // A channel arg indicating the target is a grpclb load balancer.
1327
- grpc_channel_arg_integer_create(
1328
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
1441
+ .Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
1329
1442
  // Tells channelz that this is an internal channel.
1330
- grpc_channel_arg_integer_create(
1331
- const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
1332
- };
1333
- // Construct channel args.
1334
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
1335
- args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
1336
- args_to_add.size());
1337
- // Make any necessary modifications for security.
1338
- return ModifyGrpclbBalancerChannelArgs(new_args);
1443
+ .Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
1444
+ // A channel args for new channel credentials that does not contain bearer
1445
+ // tokens.
1446
+ .SetObject(creds_sans_call_creds)
1447
+ // The fake resolver response generator, which we use to inject
1448
+ // address updates into the LB channel.
1449
+ .SetObject(response_generator->Ref());
1339
1450
  }
1340
1451
 
1341
1452
  //
1342
1453
  // ctor and dtor
1343
1454
  //
1344
1455
 
1345
- std::string GetServerNameFromChannelArgs(const grpc_channel_args* args) {
1346
- const char* server_uri =
1347
- grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
1348
- GPR_ASSERT(server_uri != nullptr);
1349
- absl::StatusOr<URI> uri = URI::Parse(server_uri);
1456
+ std::string GetServerNameFromChannelArgs(const ChannelArgs& args) {
1457
+ absl::StatusOr<URI> uri =
1458
+ URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
1350
1459
  GPR_ASSERT(uri.ok() && !uri->path().empty());
1351
1460
  return std::string(absl::StripPrefix(uri->path(), "/"));
1352
1461
  }
1353
1462
 
1354
1463
  GrpcLb::GrpcLb(Args args)
1355
1464
  : LoadBalancingPolicy(std::move(args)),
1356
- server_name_(GetServerNameFromChannelArgs(args.args)),
1465
+ server_name_(GetServerNameFromChannelArgs(channel_args())),
1357
1466
  response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
1358
- lb_call_timeout_ms_(grpc_channel_args_find_integer(
1359
- args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS, {0, 0, INT_MAX})),
1467
+ lb_call_timeout_(std::max(
1468
+ Duration::Zero(),
1469
+ channel_args()
1470
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
1471
+ .value_or(Duration::Zero()))),
1360
1472
  lb_call_backoff_(
1361
1473
  BackOff::Options()
1362
- .set_initial_backoff(GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS *
1363
- 1000)
1474
+ .set_initial_backoff(Duration::Seconds(
1475
+ GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS))
1364
1476
  .set_multiplier(GRPC_GRPCLB_RECONNECT_BACKOFF_MULTIPLIER)
1365
1477
  .set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
1366
- .set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
1367
- 1000)),
1368
- fallback_at_startup_timeout_(grpc_channel_args_find_integer(
1369
- args.args, GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS,
1370
- {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX})),
1371
- subchannel_cache_interval_ms_(grpc_channel_args_find_integer(
1372
- args.args, GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS,
1373
- {GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS, 0, INT_MAX})) {
1478
+ .set_max_backoff(Duration::Seconds(
1479
+ GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS))),
1480
+ fallback_at_startup_timeout_(std::max(
1481
+ Duration::Zero(),
1482
+ channel_args()
1483
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
1484
+ .value_or(Duration::Milliseconds(
1485
+ GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
1486
+ subchannel_cache_interval_(std::max(
1487
+ Duration::Zero(),
1488
+ channel_args()
1489
+ .GetDurationFromIntMillis(
1490
+ GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
1491
+ .value_or(Duration::Milliseconds(
1492
+ GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
1374
1493
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1375
1494
  gpr_log(GPR_INFO,
1376
1495
  "[grpclb %p] Will use '%s' as the server name for LB request.",
1377
1496
  this, server_name_.c_str());
1378
1497
  }
1379
- // Closure Initialization
1380
- GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
1381
- grpc_schedule_on_exec_ctx);
1382
- GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
1383
- grpc_schedule_on_exec_ctx);
1384
- GRPC_CLOSURE_INIT(&on_subchannel_cache_timer_, &OnSubchannelCacheTimer, this,
1385
- nullptr);
1386
1498
  }
1387
1499
 
1388
- GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
1389
-
1390
1500
  void GrpcLb::ShutdownLocked() {
1391
1501
  shutting_down_ = true;
1392
1502
  lb_calld_.reset();
1393
- if (subchannel_cache_timer_pending_) {
1394
- subchannel_cache_timer_pending_ = false;
1395
- grpc_timer_cancel(&subchannel_cache_timer_);
1503
+ if (subchannel_cache_timer_handle_.has_value()) {
1504
+ channel_control_helper()->GetEventEngine()->Cancel(
1505
+ *subchannel_cache_timer_handle_);
1506
+ subchannel_cache_timer_handle_.reset();
1396
1507
  }
1397
1508
  cached_subchannels_.clear();
1398
- if (retry_timer_callback_pending_) {
1399
- grpc_timer_cancel(&lb_call_retry_timer_);
1509
+ if (lb_call_retry_timer_handle_.has_value()) {
1510
+ channel_control_helper()->GetEventEngine()->Cancel(
1511
+ *lb_call_retry_timer_handle_);
1400
1512
  }
1401
1513
  if (fallback_at_startup_checks_pending_) {
1402
1514
  fallback_at_startup_checks_pending_ = false;
1403
- grpc_timer_cancel(&lb_fallback_timer_);
1515
+ channel_control_helper()->GetEventEngine()->Cancel(
1516
+ *lb_fallback_timer_handle_);
1404
1517
  CancelBalancerChannelConnectivityWatchLocked();
1405
1518
  }
1406
1519
  if (child_policy_ != nullptr) {
@@ -1437,25 +1550,47 @@ void GrpcLb::ResetBackoffLocked() {
1437
1550
  }
1438
1551
  }
1439
1552
 
1440
- void GrpcLb::UpdateLocked(UpdateArgs args) {
1553
+ absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
1441
1554
  const bool is_initial_update = lb_channel_ == nullptr;
1442
1555
  config_ = args.config;
1443
1556
  GPR_ASSERT(config_ != nullptr);
1444
- ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
1445
- // Update the existing child policy.
1557
+ // Update fallback address list.
1558
+ fallback_backend_addresses_ = std::move(args.addresses);
1559
+ if (fallback_backend_addresses_.ok()) {
1560
+ // Add null LB token attributes.
1561
+ for (ServerAddress& address : *fallback_backend_addresses_) {
1562
+ address = address.WithAttribute(
1563
+ kGrpcLbAddressAttributeKey,
1564
+ std::make_unique<TokenAndClientStatsAttribute>("", nullptr));
1565
+ }
1566
+ }
1567
+ resolution_note_ = std::move(args.resolution_note);
1568
+ // Update balancer channel.
1569
+ absl::Status status = UpdateBalancerChannelLocked(args.args);
1570
+ // Update the existing child policy, if any.
1446
1571
  if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
1447
1572
  // If this is the initial update, start the fallback-at-startup checks
1448
1573
  // and the balancer call.
1449
1574
  if (is_initial_update) {
1450
1575
  fallback_at_startup_checks_pending_ = true;
1451
1576
  // Start timer.
1452
- grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
1453
- Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
1454
- grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
1577
+ lb_fallback_timer_handle_ =
1578
+ channel_control_helper()->GetEventEngine()->RunAfter(
1579
+ fallback_at_startup_timeout_,
1580
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1581
+ Ref(DEBUG_LOCATION, "on_fallback_timer"))]() mutable {
1582
+ ApplicationCallbackExecCtx callback_exec_ctx;
1583
+ ExecCtx exec_ctx;
1584
+ auto self_ptr = self.get();
1585
+ self_ptr->work_serializer()->Run(
1586
+ [self = std::move(self)]() { self->OnFallbackTimerLocked(); },
1587
+ DEBUG_LOCATION);
1588
+ });
1455
1589
  // Start watching the channel's connectivity state. If the channel
1456
1590
  // goes into state TRANSIENT_FAILURE before the timer fires, we go into
1457
1591
  // fallback mode even if the fallback timeout has not elapsed.
1458
- ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
1592
+ ClientChannel* client_channel =
1593
+ ClientChannel::GetFromChannel(Channel::FromC(lb_channel_));
1459
1594
  GPR_ASSERT(client_channel != nullptr);
1460
1595
  // Ref held by callback.
1461
1596
  watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
@@ -1465,51 +1600,40 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1465
1600
  // Start balancer call.
1466
1601
  StartBalancerCallLocked();
1467
1602
  }
1603
+ return status;
1468
1604
  }
1469
1605
 
1470
1606
  //
1471
1607
  // helpers for UpdateLocked()
1472
1608
  //
1473
1609
 
1474
- ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
1475
- const ServerAddressList& addresses) {
1476
- ServerAddressList addresses_out;
1477
- for (const ServerAddress& address : addresses) {
1478
- addresses_out.emplace_back(address.WithAttribute(
1479
- kGrpcLbAddressAttributeKey,
1480
- absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
1481
- }
1482
- return addresses_out;
1483
- }
1484
-
1485
- void GrpcLb::ProcessAddressesAndChannelArgsLocked(
1486
- const ServerAddressList& addresses, const grpc_channel_args& args) {
1487
- // Update fallback address list.
1488
- fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
1610
+ absl::Status GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
1489
1611
  // Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
1490
1612
  // since we use this to trigger the client_load_reporting filter.
1491
- static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
1492
- grpc_arg new_arg = grpc_channel_arg_string_create(
1493
- const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
1494
- grpc_channel_args_destroy(args_);
1495
- args_ = grpc_channel_args_copy_and_add_and_remove(
1496
- &args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
1497
- // Construct args for balancer channel.
1613
+ args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
1614
+ // Get balancer addresses.
1498
1615
  ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
1499
- grpc_channel_args* lb_channel_args =
1500
- BuildBalancerChannelArgs(response_generator_.get(), &args);
1616
+ absl::Status status;
1617
+ if (balancer_addresses.empty()) {
1618
+ status = absl::UnavailableError("balancer address list must be non-empty");
1619
+ }
1620
+ // Construct args for balancer channel.
1621
+ ChannelArgs lb_channel_args =
1622
+ BuildBalancerChannelArgs(response_generator_.get(), args);
1501
1623
  // Create balancer channel if needed.
1502
1624
  if (lb_channel_ == nullptr) {
1503
1625
  std::string uri_str = absl::StrCat("fake:///", server_name_);
1504
- lb_channel_ =
1505
- CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
1626
+ auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
1627
+ GPR_ASSERT(creds != nullptr);
1628
+ lb_channel_ = grpc_channel_create(
1629
+ uri_str.c_str(), creds,
1630
+ lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
1506
1631
  GPR_ASSERT(lb_channel_ != nullptr);
1507
1632
  // Set up channelz linkage.
1508
1633
  channelz::ChannelNode* child_channelz_node =
1509
1634
  grpc_channel_get_channelz_node(lb_channel_);
1510
1635
  channelz::ChannelNode* parent_channelz_node =
1511
- grpc_channel_args_find_pointer<channelz::ChannelNode>(
1512
- &args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
1636
+ args.GetObject<channelz::ChannelNode>();
1513
1637
  if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
1514
1638
  parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
1515
1639
  parent_channelz_node_ = parent_channelz_node->Ref();
@@ -1521,10 +1645,13 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
1521
1645
  result.addresses = std::move(balancer_addresses);
1522
1646
  result.args = lb_channel_args;
1523
1647
  response_generator_->SetResponse(std::move(result));
1648
+ // Return status.
1649
+ return status;
1524
1650
  }
1525
1651
 
1526
1652
  void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
1527
- ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
1653
+ ClientChannel* client_channel =
1654
+ ClientChannel::GetFromChannel(Channel::FromC(lb_channel_));
1528
1655
  GPR_ASSERT(client_channel != nullptr);
1529
1656
  client_channel->RemoveConnectivityWatcher(watcher_);
1530
1657
  }
@@ -1548,47 +1675,41 @@ void GrpcLb::StartBalancerCallLocked() {
1548
1675
  }
1549
1676
 
1550
1677
  void GrpcLb::StartBalancerCallRetryTimerLocked() {
1551
- grpc_millis next_try = lb_call_backoff_.NextAttemptTime();
1678
+ Duration timeout = lb_call_backoff_.NextAttemptTime() - Timestamp::Now();
1552
1679
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1553
1680
  gpr_log(GPR_INFO, "[grpclb %p] Connection to LB server lost...", this);
1554
- grpc_millis timeout = next_try - ExecCtx::Get()->Now();
1555
- if (timeout > 0) {
1681
+ if (timeout > Duration::Zero()) {
1556
1682
  gpr_log(GPR_INFO, "[grpclb %p] ... retry_timer_active in %" PRId64 "ms.",
1557
- this, timeout);
1683
+ this, timeout.millis());
1558
1684
  } else {
1559
1685
  gpr_log(GPR_INFO, "[grpclb %p] ... retry_timer_active immediately.",
1560
1686
  this);
1561
1687
  }
1562
1688
  }
1563
- // TODO(roth): We currently track this ref manually. Once the
1564
- // ClosureRef API is ready, we should pass the RefCountedPtr<> along
1565
- // with the callback.
1566
- auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1567
- self.release();
1568
- retry_timer_callback_pending_ = true;
1569
- grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
1689
+ lb_call_retry_timer_handle_ =
1690
+ channel_control_helper()->GetEventEngine()->RunAfter(
1691
+ timeout,
1692
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1693
+ Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer"))]() mutable {
1694
+ ApplicationCallbackExecCtx callback_exec_ctx;
1695
+ ExecCtx exec_ctx;
1696
+ auto self_ptr = self.get();
1697
+ self_ptr->work_serializer()->Run(
1698
+ [self = std::move(self)]() {
1699
+ self->OnBalancerCallRetryTimerLocked();
1700
+ },
1701
+ DEBUG_LOCATION);
1702
+ });
1570
1703
  }
1571
1704
 
1572
- void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
1573
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1574
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1575
- grpclb_policy->work_serializer()->Run(
1576
- [grpclb_policy, error]() {
1577
- grpclb_policy->OnBalancerCallRetryTimerLocked(error);
1578
- },
1579
- DEBUG_LOCATION);
1580
- }
1581
-
1582
- void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
1583
- retry_timer_callback_pending_ = false;
1584
- if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
1705
+ void GrpcLb::OnBalancerCallRetryTimerLocked() {
1706
+ lb_call_retry_timer_handle_.reset();
1707
+ if (!shutting_down_ && lb_calld_ == nullptr) {
1585
1708
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1586
1709
  gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
1587
1710
  }
1588
1711
  StartBalancerCallLocked();
1589
1712
  }
1590
- Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1591
- GRPC_ERROR_UNREF(error);
1592
1713
  }
1593
1714
 
1594
1715
  //
@@ -1613,19 +1734,10 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
1613
1734
  }
1614
1735
  }
1615
1736
 
1616
- void GrpcLb::OnFallbackTimer(void* arg, grpc_error_handle error) {
1617
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1618
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1619
- grpclb_policy->work_serializer()->Run(
1620
- [grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
1621
- DEBUG_LOCATION);
1622
- }
1623
-
1624
- void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1737
+ void GrpcLb::OnFallbackTimerLocked() {
1625
1738
  // If we receive a serverlist after the timer fires but before this callback
1626
1739
  // actually runs, don't fall back.
1627
- if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
1628
- error == GRPC_ERROR_NONE) {
1740
+ if (fallback_at_startup_checks_pending_ && !shutting_down_) {
1629
1741
  gpr_log(GPR_INFO,
1630
1742
  "[grpclb %p] No response from balancer after fallback timeout; "
1631
1743
  "entering fallback mode",
@@ -1635,34 +1747,30 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1635
1747
  fallback_mode_ = true;
1636
1748
  CreateOrUpdateChildPolicyLocked();
1637
1749
  }
1638
- Unref(DEBUG_LOCATION, "on_fallback_timer");
1639
- GRPC_ERROR_UNREF(error);
1640
1750
  }
1641
1751
 
1642
1752
  //
1643
1753
  // code for interacting with the child policy
1644
1754
  //
1645
1755
 
1646
- grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
1756
+ ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
1647
1757
  bool is_backend_from_grpclb_load_balancer) {
1648
- absl::InlinedVector<grpc_arg, 2> args_to_add;
1649
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
1650
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
1651
- is_backend_from_grpclb_load_balancer));
1758
+ ChannelArgs r =
1759
+ args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
1760
+ is_backend_from_grpclb_load_balancer);
1652
1761
  if (is_backend_from_grpclb_load_balancer) {
1653
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
1654
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1));
1762
+ r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
1655
1763
  }
1656
- return grpc_channel_args_copy_and_add(args_, args_to_add.data(),
1657
- args_to_add.size());
1764
+ return r;
1658
1765
  }
1659
1766
 
1660
1767
  OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
1661
- const grpc_channel_args* args) {
1768
+ const ChannelArgs& args) {
1662
1769
  LoadBalancingPolicy::Args lb_policy_args;
1663
1770
  lb_policy_args.work_serializer = work_serializer();
1664
1771
  lb_policy_args.args = args;
1665
- lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
1772
+ lb_policy_args.channel_control_helper =
1773
+ std::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
1666
1774
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1667
1775
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1668
1776
  &grpc_lb_glb_trace);
@@ -1685,11 +1793,17 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1685
1793
  bool is_backend_from_grpclb_load_balancer = false;
1686
1794
  if (fallback_mode_) {
1687
1795
  // If CreateOrUpdateChildPolicyLocked() is invoked when we haven't
1688
- // received any serverlist from the balancer, we use the fallback backends
1689
- // returned by the resolver. Note that the fallback backend list may be
1690
- // empty, in which case the new round_robin policy will keep the requested
1691
- // picks pending.
1796
+ // received any serverlist from the balancer, we use the fallback
1797
+ // backends returned by the resolver. Note that the fallback backend
1798
+ // list may be empty, in which case the new child policy will fail the
1799
+ // picks.
1692
1800
  update_args.addresses = fallback_backend_addresses_;
1801
+ if (fallback_backend_addresses_.ok() &&
1802
+ fallback_backend_addresses_->empty()) {
1803
+ update_args.resolution_note = absl::StrCat(
1804
+ "grpclb in fallback mode without any balancer addresses: ",
1805
+ resolution_note_);
1806
+ }
1693
1807
  } else {
1694
1808
  update_args.addresses = serverlist_->GetServerAddressList(
1695
1809
  lb_calld_ == nullptr ? nullptr : lb_calld_->client_stats());
@@ -1697,7 +1811,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1697
1811
  }
1698
1812
  update_args.args =
1699
1813
  CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
1700
- GPR_ASSERT(update_args.args != nullptr);
1814
+ GPR_ASSERT(update_args.args != ChannelArgs());
1701
1815
  update_args.config = config_->child_policy();
1702
1816
  // Create child policy if needed.
1703
1817
  if (child_policy_ == nullptr) {
@@ -1708,7 +1822,9 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1708
1822
  gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
1709
1823
  child_policy_.get());
1710
1824
  }
1711
- child_policy_->UpdateLocked(std::move(update_args));
1825
+ // TODO(roth): If we're in fallback mode and the child policy rejects the
1826
+ // update, we should propagate that failure back to the resolver somehow.
1827
+ (void)child_policy_->UpdateLocked(std::move(update_args));
1712
1828
  }
1713
1829
 
1714
1830
  //
@@ -1717,32 +1833,34 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1717
1833
 
1718
1834
  void GrpcLb::CacheDeletedSubchannelLocked(
1719
1835
  RefCountedPtr<SubchannelInterface> subchannel) {
1720
- grpc_millis deletion_time =
1721
- ExecCtx::Get()->Now() + subchannel_cache_interval_ms_;
1836
+ Timestamp deletion_time = Timestamp::Now() + subchannel_cache_interval_;
1722
1837
  cached_subchannels_[deletion_time].push_back(std::move(subchannel));
1723
- if (!subchannel_cache_timer_pending_) {
1724
- Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer").release();
1725
- subchannel_cache_timer_pending_ = true;
1838
+ if (!subchannel_cache_timer_handle_.has_value()) {
1726
1839
  StartSubchannelCacheTimerLocked();
1727
1840
  }
1728
1841
  }
1729
1842
 
1730
1843
  void GrpcLb::StartSubchannelCacheTimerLocked() {
1731
1844
  GPR_ASSERT(!cached_subchannels_.empty());
1732
- grpc_timer_init(&subchannel_cache_timer_, cached_subchannels_.begin()->first,
1733
- &on_subchannel_cache_timer_);
1845
+ subchannel_cache_timer_handle_ =
1846
+ channel_control_helper()->GetEventEngine()->RunAfter(
1847
+ cached_subchannels_.begin()->first - Timestamp::Now(),
1848
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1849
+ Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer"))]() mutable {
1850
+ ApplicationCallbackExecCtx callback_exec_ctx;
1851
+ ExecCtx exec_ctx;
1852
+ auto* self_ptr = self.get();
1853
+ self_ptr->work_serializer()->Run(
1854
+ [self = std::move(self)]() mutable {
1855
+ self->OnSubchannelCacheTimerLocked();
1856
+ },
1857
+ DEBUG_LOCATION);
1858
+ });
1734
1859
  }
1735
1860
 
1736
- void GrpcLb::OnSubchannelCacheTimer(void* arg, grpc_error_handle error) {
1737
- auto* self = static_cast<GrpcLb*>(arg);
1738
- (void)GRPC_ERROR_REF(error);
1739
- self->work_serializer()->Run(
1740
- [self, error]() { self->GrpcLb::OnSubchannelCacheTimerLocked(error); },
1741
- DEBUG_LOCATION);
1742
- }
1743
-
1744
- void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
1745
- if (subchannel_cache_timer_pending_ && error == GRPC_ERROR_NONE) {
1861
+ void GrpcLb::OnSubchannelCacheTimerLocked() {
1862
+ if (subchannel_cache_timer_handle_.has_value()) {
1863
+ subchannel_cache_timer_handle_.reset();
1746
1864
  auto it = cached_subchannels_.begin();
1747
1865
  if (it != cached_subchannels_.end()) {
1748
1866
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
@@ -1756,10 +1874,7 @@ void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
1756
1874
  StartSubchannelCacheTimerLocked();
1757
1875
  return;
1758
1876
  }
1759
- subchannel_cache_timer_pending_ = false;
1760
1877
  }
1761
- Unref(DEBUG_LOCATION, "OnSubchannelCacheTimer");
1762
- GRPC_ERROR_UNREF(error);
1763
1878
  }
1764
1879
 
1765
1880
  //
@@ -1773,93 +1888,33 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1773
1888
  return MakeOrphanable<GrpcLb>(std::move(args));
1774
1889
  }
1775
1890
 
1776
- const char* name() const override { return kGrpclb; }
1891
+ absl::string_view name() const override { return kGrpclb; }
1777
1892
 
1778
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
1779
- const Json& json, grpc_error_handle* error) const override {
1780
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
1781
- if (json.type() == Json::Type::JSON_NULL) {
1782
- return MakeRefCounted<GrpcLbConfig>(nullptr, "");
1783
- }
1784
- std::vector<grpc_error_handle> error_list;
1785
- Json child_policy_config_json_tmp;
1786
- const Json* child_policy_config_json;
1787
- std::string service_name;
1788
- auto it = json.object_value().find("serviceName");
1789
- if (it != json.object_value().end()) {
1790
- const Json& service_name_json = it->second;
1791
- if (service_name_json.type() != Json::Type::STRING) {
1792
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1793
- "field:serviceName error:type should be string"));
1794
- } else {
1795
- service_name = service_name_json.string_value();
1796
- }
1797
- }
1798
- it = json.object_value().find("childPolicy");
1799
- if (it == json.object_value().end()) {
1800
- child_policy_config_json_tmp = Json::Array{Json::Object{
1801
- {"round_robin", Json::Object()},
1802
- }};
1803
- child_policy_config_json = &child_policy_config_json_tmp;
1804
- } else {
1805
- child_policy_config_json = &it->second;
1806
- }
1807
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
1808
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
1809
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1810
- *child_policy_config_json, &parse_error);
1811
- if (parse_error != GRPC_ERROR_NONE) {
1812
- std::vector<grpc_error_handle> child_errors;
1813
- child_errors.push_back(parse_error);
1814
- error_list.push_back(
1815
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
1816
- }
1817
- if (error_list.empty()) {
1818
- return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
1819
- std::move(service_name));
1820
- } else {
1821
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
1822
- return nullptr;
1823
- }
1893
+ absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
1894
+ ParseLoadBalancingConfig(const Json& json) const override {
1895
+ return LoadRefCountedFromJson<GrpcLbConfig>(
1896
+ json, JsonArgs(), "errors validating grpclb LB policy config");
1824
1897
  }
1825
1898
  };
1826
1899
 
1827
1900
  } // namespace
1828
1901
 
1829
- } // namespace grpc_core
1830
-
1831
1902
  //
1832
1903
  // Plugin registration
1833
1904
  //
1834
1905
 
1835
- void grpc_lb_policy_grpclb_init() {
1836
- grpc_core::LoadBalancingPolicyRegistry::Builder::
1837
- RegisterLoadBalancingPolicyFactory(
1838
- absl::make_unique<grpc_core::GrpcLbFactory>());
1839
- }
1840
-
1841
- void grpc_lb_policy_grpclb_shutdown() {}
1842
-
1843
- namespace grpc_core {
1844
- void RegisterGrpcLbLoadReportingFilter(CoreConfiguration::Builder* builder) {
1906
+ void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder) {
1907
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
1908
+ std::make_unique<GrpcLbFactory>());
1845
1909
  builder->channel_init()->RegisterStage(
1846
1910
  GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
1847
- [](grpc_channel_stack_builder* builder) {
1848
- const grpc_channel_args* args =
1849
- grpc_channel_stack_builder_get_channel_arguments(builder);
1850
- const grpc_arg* channel_arg =
1851
- grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
1852
- if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
1853
- strcmp(channel_arg->value.string, "grpclb") == 0) {
1854
- // TODO(roth): When we get around to re-attempting
1855
- // https://github.com/grpc/grpc/pull/16214, we should try to keep
1856
- // this filter at the very top of the subchannel stack, since that
1857
- // will minimize the number of metadata elements that the filter
1858
- // needs to iterate through to find the ClientStats object.
1859
- return grpc_channel_stack_builder_prepend_filter(
1860
- builder, &grpc_client_load_reporting_filter, nullptr, nullptr);
1911
+ [](ChannelStackBuilder* builder) {
1912
+ if (builder->channel_args().GetString(GRPC_ARG_LB_POLICY_NAME) ==
1913
+ "grpclb") {
1914
+ builder->PrependFilter(&ClientLoadReportingFilter::kFilter);
1861
1915
  }
1862
1916
  return true;
1863
1917
  });
1864
1918
  }
1919
+
1865
1920
  } // namespace grpc_core