grpc 1.50.0.pre1 → 1.52.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1009) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +206 -49
  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/event_engine.h +27 -6
  7. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  8. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  9. data/include/grpc/event_engine/memory_allocator.h +1 -1
  10. data/include/grpc/event_engine/slice.h +24 -4
  11. data/include/grpc/event_engine/slice_buffer.h +31 -2
  12. data/include/grpc/fork.h +25 -1
  13. data/include/grpc/grpc.h +3 -13
  14. data/include/grpc/grpc_posix.h +1 -1
  15. data/include/grpc/impl/codegen/atm.h +3 -71
  16. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
  17. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
  18. data/include/grpc/impl/codegen/atm_windows.h +3 -106
  19. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  20. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  21. data/include/grpc/impl/codegen/compression_types.h +3 -82
  22. data/include/grpc/impl/codegen/connectivity_state.h +3 -20
  23. data/include/grpc/impl/codegen/fork.h +4 -25
  24. data/include/grpc/impl/codegen/gpr_types.h +2 -34
  25. data/include/grpc/impl/codegen/grpc_types.h +3 -791
  26. data/include/grpc/impl/codegen/log.h +3 -86
  27. data/include/grpc/impl/codegen/port_platform.h +3 -758
  28. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  29. data/include/grpc/impl/codegen/slice.h +3 -106
  30. data/include/grpc/impl/codegen/status.h +4 -131
  31. data/include/grpc/impl/codegen/sync.h +3 -42
  32. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  33. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  34. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  35. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  36. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  37. data/include/grpc/impl/compression_types.h +109 -0
  38. data/include/grpc/impl/connectivity_state.h +47 -0
  39. data/include/grpc/impl/grpc_types.h +824 -0
  40. data/include/grpc/impl/propagation_bits.h +54 -0
  41. data/include/grpc/impl/slice_type.h +112 -0
  42. data/include/grpc/load_reporting.h +1 -1
  43. data/include/grpc/module.modulemap +5 -1
  44. data/include/grpc/slice.h +1 -1
  45. data/include/grpc/status.h +131 -1
  46. data/include/grpc/support/atm.h +70 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  48. data/include/grpc/support/atm_gcc_sync.h +58 -1
  49. data/include/grpc/support/atm_windows.h +105 -1
  50. data/include/grpc/support/log.h +87 -1
  51. data/include/grpc/support/log_windows.h +1 -1
  52. data/include/grpc/support/port_platform.h +767 -1
  53. data/include/grpc/support/string_util.h +1 -1
  54. data/include/grpc/support/sync.h +35 -2
  55. data/include/grpc/support/sync_abseil.h +11 -1
  56. data/include/grpc/support/sync_custom.h +13 -1
  57. data/include/grpc/support/sync_generic.h +24 -1
  58. data/include/grpc/support/sync_posix.h +27 -1
  59. data/include/grpc/support/sync_windows.h +15 -1
  60. data/include/grpc/support/time.h +25 -2
  61. data/src/core/ext/filters/census/grpc_context.cc +17 -18
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
  63. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
  67. data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
  69. data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
  70. data/src/core/ext/filters/client_channel/client_channel.h +10 -10
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
  74. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
  75. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  76. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  77. data/src/core/ext/filters/client_channel/config_selector.h +16 -20
  78. data/src/core/ext/filters/client_channel/connector.h +1 -1
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
  82. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
  83. data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
  84. data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
  85. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  86. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  87. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
  88. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
  89. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  102. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  104. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
  105. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
  108. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
  109. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
  110. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
  111. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  119. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  120. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  121. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
  122. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
  123. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
  124. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  131. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
  132. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
  133. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  134. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  135. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
  136. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
  137. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
  138. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  139. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
  140. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
  141. data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
  142. data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
  143. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  144. data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
  145. data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
  146. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
  147. data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
  148. data/src/core/ext/filters/client_channel/subchannel.h +17 -40
  149. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
  150. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  151. data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
  152. data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
  153. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  155. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  156. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  157. data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
  158. data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
  159. data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
  160. data/src/core/ext/filters/http/client_authority_filter.h +18 -18
  161. data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
  162. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  163. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  164. data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
  165. data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
  166. data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
  167. data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
  168. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  169. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  170. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  171. data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
  172. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
  173. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  174. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  175. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  176. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  177. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  178. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  179. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
  183. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
  184. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
  185. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
  186. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  187. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
  188. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
  189. data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
  190. data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
  191. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
  192. data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
  193. data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
  194. data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
  195. data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
  196. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
  197. data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
  198. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
  199. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
  200. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
  201. data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
  202. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
  203. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
  204. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
  205. data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
  206. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
  207. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
  208. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
  209. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
  210. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  211. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
  212. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
  213. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
  214. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
  215. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  216. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
  217. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  218. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  219. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  220. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  221. data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
  222. data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
  223. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
  224. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  225. data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
  226. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  227. data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
  228. data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
  229. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
  230. data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
  231. data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
  232. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  233. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  234. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  235. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  236. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  237. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  238. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  239. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
  240. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
  241. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  242. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  243. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  244. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  245. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  246. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  247. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  248. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  249. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  250. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  251. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  252. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  253. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  254. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  255. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
  256. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  257. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  258. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  259. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  260. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  261. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  262. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  263. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  264. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  265. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  266. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  267. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  268. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  269. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  270. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  271. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  272. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  273. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  274. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  275. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  276. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  277. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  278. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  279. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  280. data/src/core/ext/xds/xds_api.cc +20 -95
  281. data/src/core/ext/xds/xds_api.h +5 -8
  282. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  283. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  284. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  285. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  286. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  287. data/src/core/ext/xds/xds_channel_args.h +1 -1
  288. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  289. data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
  290. data/src/core/ext/xds/xds_client.cc +134 -94
  291. data/src/core/ext/xds/xds_client.h +13 -5
  292. data/src/core/ext/xds/xds_client_grpc.cc +31 -24
  293. data/src/core/ext/xds/xds_client_grpc.h +1 -1
  294. data/src/core/ext/xds/xds_client_stats.cc +17 -17
  295. data/src/core/ext/xds/xds_client_stats.h +18 -18
  296. data/src/core/ext/xds/xds_cluster.cc +359 -203
  297. data/src/core/ext/xds/xds_cluster.h +52 -35
  298. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
  299. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
  300. data/src/core/ext/xds/xds_common_types.cc +209 -141
  301. data/src/core/ext/xds/xds_common_types.h +19 -13
  302. data/src/core/ext/xds/xds_endpoint.cc +221 -130
  303. data/src/core/ext/xds/xds_endpoint.h +4 -7
  304. data/src/core/ext/xds/xds_health_status.cc +80 -0
  305. data/src/core/ext/xds/xds_health_status.h +82 -0
  306. data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
  307. data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
  308. data/src/core/ext/xds/xds_http_filters.cc +65 -73
  309. data/src/core/ext/xds/xds_http_filters.h +68 -20
  310. data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
  311. data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
  312. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  313. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  314. data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
  315. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  316. data/src/core/ext/xds/xds_listener.cc +447 -419
  317. data/src/core/ext/xds/xds_listener.h +45 -47
  318. data/src/core/ext/xds/xds_resource_type.h +3 -11
  319. data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
  320. data/src/core/ext/xds/xds_route_config.cc +514 -528
  321. data/src/core/ext/xds/xds_route_config.h +39 -28
  322. data/src/core/ext/xds/xds_routing.cc +2 -1
  323. data/src/core/ext/xds/xds_routing.h +2 -0
  324. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
  325. data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
  326. data/src/core/ext/xds/xds_transport_grpc.h +1 -1
  327. data/src/core/lib/address_utils/parse_address.cc +30 -29
  328. data/src/core/lib/address_utils/parse_address.h +32 -32
  329. data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
  330. data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
  331. data/src/core/lib/avl/avl.h +4 -4
  332. data/src/core/lib/backoff/backoff.cc +17 -17
  333. data/src/core/lib/backoff/backoff.h +18 -18
  334. data/src/core/lib/channel/call_tracer.h +10 -1
  335. data/src/core/lib/channel/channel_args.cc +19 -20
  336. data/src/core/lib/channel/channel_args.h +59 -43
  337. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  338. data/src/core/lib/channel/channel_stack.cc +62 -58
  339. data/src/core/lib/channel/channel_stack.h +144 -131
  340. data/src/core/lib/channel/channel_stack_builder.cc +21 -24
  341. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  342. data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
  343. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  344. data/src/core/lib/channel/channel_trace.cc +21 -22
  345. data/src/core/lib/channel/channel_trace.h +19 -19
  346. data/src/core/lib/channel/channelz.cc +18 -19
  347. data/src/core/lib/channel/channelz.h +26 -26
  348. data/src/core/lib/channel/channelz_registry.cc +17 -17
  349. data/src/core/lib/channel/channelz_registry.h +18 -18
  350. data/src/core/lib/channel/connected_channel.cc +732 -63
  351. data/src/core/lib/channel/connected_channel.h +18 -22
  352. data/src/core/lib/channel/context.h +18 -18
  353. data/src/core/lib/channel/promise_based_filter.cc +1137 -150
  354. data/src/core/lib/channel/promise_based_filter.h +374 -88
  355. data/src/core/lib/channel/status_util.cc +35 -17
  356. data/src/core/lib/channel/status_util.h +26 -19
  357. data/src/core/lib/compression/compression.cc +19 -19
  358. data/src/core/lib/compression/compression_internal.cc +41 -48
  359. data/src/core/lib/compression/compression_internal.h +22 -22
  360. data/src/core/lib/compression/message_compress.cc +26 -26
  361. data/src/core/lib/compression/message_compress.h +25 -25
  362. data/src/core/lib/config/core_configuration.h +1 -1
  363. data/src/core/lib/debug/event_log.cc +88 -0
  364. data/src/core/lib/debug/event_log.h +81 -0
  365. data/src/core/lib/debug/histogram_view.cc +69 -0
  366. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  367. data/src/core/lib/debug/stats.cc +39 -136
  368. data/src/core/lib/debug/stats.h +46 -52
  369. data/src/core/lib/debug/stats_data.cc +224 -73
  370. data/src/core/lib/debug/stats_data.h +263 -122
  371. data/src/core/lib/debug/trace.cc +18 -18
  372. data/src/core/lib/debug/trace.h +19 -19
  373. data/src/core/lib/event_engine/common_closures.h +71 -0
  374. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  375. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  376. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  377. data/src/core/lib/event_engine/executor/executor.h +1 -1
  378. data/src/core/lib/event_engine/forkable.h +1 -1
  379. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  380. data/src/core/lib/event_engine/poller.h +10 -4
  381. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
  382. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  383. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
  384. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  385. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  386. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  387. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
  388. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  389. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  390. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  391. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  392. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
  393. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
  394. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
  395. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  396. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  397. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  398. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  399. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  400. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  401. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  402. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  403. data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
  404. data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
  405. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
  406. data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
  407. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
  408. data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
  409. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  410. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  411. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  412. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  413. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  414. data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
  415. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  416. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  417. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  418. data/src/core/lib/event_engine/slice.cc +7 -6
  419. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  420. data/src/core/lib/event_engine/socket_notifier.h +1 -1
  421. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  422. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  423. data/src/core/lib/event_engine/thread_pool.cc +125 -43
  424. data/src/core/lib/event_engine/thread_pool.h +49 -26
  425. data/src/core/lib/event_engine/time_util.h +1 -1
  426. data/src/core/lib/event_engine/windows/iocp.cc +13 -12
  427. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  428. data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
  429. data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
  430. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  431. data/src/core/lib/experiments/config.cc +1 -1
  432. data/src/core/lib/experiments/experiments.cc +13 -13
  433. data/src/core/lib/experiments/experiments.h +8 -6
  434. data/src/core/lib/gpr/alloc.cc +19 -17
  435. data/src/core/lib/gpr/alloc.h +18 -18
  436. data/src/core/lib/gpr/atm.cc +17 -17
  437. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  438. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  439. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  440. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  441. data/src/core/lib/gpr/log.cc +27 -19
  442. data/src/core/lib/gpr/log_android.cc +22 -20
  443. data/src/core/lib/gpr/log_linux.cc +24 -24
  444. data/src/core/lib/gpr/log_posix.cc +20 -19
  445. data/src/core/lib/gpr/log_windows.cc +25 -24
  446. data/src/core/lib/gpr/spinlock.h +18 -18
  447. data/src/core/lib/gpr/string.cc +25 -24
  448. data/src/core/lib/gpr/string.h +58 -58
  449. data/src/core/lib/gpr/string_posix.cc +24 -24
  450. data/src/core/lib/gpr/string_util_windows.cc +22 -22
  451. data/src/core/lib/gpr/string_windows.cc +24 -24
  452. data/src/core/lib/gpr/sync.cc +25 -25
  453. data/src/core/lib/gpr/sync_abseil.cc +22 -20
  454. data/src/core/lib/gpr/sync_posix.cc +23 -21
  455. data/src/core/lib/gpr/sync_windows.cc +29 -27
  456. data/src/core/lib/gpr/time.cc +23 -21
  457. data/src/core/lib/gpr/time_posix.cc +35 -30
  458. data/src/core/lib/gpr/time_precise.cc +22 -22
  459. data/src/core/lib/gpr/time_precise.h +18 -19
  460. data/src/core/lib/gpr/time_windows.cc +25 -22
  461. data/src/core/lib/gpr/tmpfile.h +22 -22
  462. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  463. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  464. data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
  465. data/src/core/lib/gpr/useful.h +40 -27
  466. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  467. data/src/core/lib/gprpp/atomic_utils.h +18 -18
  468. data/src/core/lib/gprpp/bitset.h +24 -0
  469. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
  470. data/src/core/lib/gprpp/crash.h +34 -0
  471. data/src/core/lib/gprpp/debug_location.h +18 -18
  472. data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
  473. data/src/core/lib/gprpp/env.h +20 -20
  474. data/src/core/lib/gprpp/env_linux.cc +21 -21
  475. data/src/core/lib/gprpp/env_posix.cc +18 -18
  476. data/src/core/lib/gprpp/env_windows.cc +18 -18
  477. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  478. data/src/core/lib/gprpp/examine_stack.h +18 -18
  479. data/src/core/lib/gprpp/fork.cc +21 -22
  480. data/src/core/lib/gprpp/fork.h +22 -22
  481. data/src/core/lib/gprpp/global_config.h +18 -18
  482. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  483. data/src/core/lib/gprpp/global_config_env.cc +17 -17
  484. data/src/core/lib/gprpp/global_config_env.h +23 -23
  485. data/src/core/lib/gprpp/global_config_generic.h +18 -18
  486. data/src/core/lib/gprpp/host_port.cc +26 -26
  487. data/src/core/lib/gprpp/host_port.h +29 -28
  488. data/src/core/lib/gprpp/load_file.cc +75 -0
  489. data/src/core/lib/gprpp/load_file.h +33 -0
  490. data/src/core/lib/gprpp/manual_constructor.h +18 -17
  491. data/src/core/lib/gprpp/memory.h +18 -18
  492. data/src/core/lib/gprpp/mpscq.cc +17 -17
  493. data/src/core/lib/gprpp/mpscq.h +18 -18
  494. data/src/core/lib/gprpp/no_destruct.h +1 -0
  495. data/src/core/lib/gprpp/orphanable.h +18 -18
  496. data/src/core/lib/gprpp/per_cpu.h +46 -0
  497. data/src/core/lib/gprpp/ref_counted.h +18 -18
  498. data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
  499. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  500. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  501. data/src/core/lib/gprpp/status_helper.cc +4 -3
  502. data/src/core/lib/gprpp/status_helper.h +1 -3
  503. data/src/core/lib/gprpp/strerror.cc +41 -0
  504. data/src/core/lib/gprpp/strerror.h +29 -0
  505. data/src/core/lib/gprpp/sync.h +20 -20
  506. data/src/core/lib/gprpp/table.h +1 -0
  507. data/src/core/lib/gprpp/thd.h +19 -19
  508. data/src/core/lib/gprpp/thd_posix.cc +30 -31
  509. data/src/core/lib/gprpp/thd_windows.cc +26 -26
  510. data/src/core/lib/gprpp/time.cc +16 -11
  511. data/src/core/lib/gprpp/time.h +13 -3
  512. data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
  513. data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
  514. data/src/core/lib/gprpp/time_util.h +1 -1
  515. data/src/core/lib/gprpp/unique_type_name.h +18 -18
  516. data/src/core/lib/gprpp/validation_errors.h +18 -1
  517. data/src/core/lib/handshaker/proxy_mapper.h +18 -18
  518. data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
  519. data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
  520. data/src/core/lib/http/format_request.cc +18 -18
  521. data/src/core/lib/http/format_request.h +18 -18
  522. data/src/core/lib/http/httpcli.cc +57 -61
  523. data/src/core/lib/http/httpcli.h +26 -26
  524. data/src/core/lib/http/httpcli_security_connector.cc +22 -25
  525. data/src/core/lib/http/parser.cc +76 -87
  526. data/src/core/lib/http/parser.h +32 -32
  527. data/src/core/lib/iomgr/block_annotate.h +21 -21
  528. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  529. data/src/core/lib/iomgr/buffer_list.h +120 -98
  530. data/src/core/lib/iomgr/call_combiner.cc +29 -27
  531. data/src/core/lib/iomgr/call_combiner.h +21 -22
  532. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  533. data/src/core/lib/iomgr/cfstream_handle.h +22 -22
  534. data/src/core/lib/iomgr/closure.h +90 -45
  535. data/src/core/lib/iomgr/combiner.cc +20 -19
  536. data/src/core/lib/iomgr/combiner.h +18 -18
  537. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  538. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  539. data/src/core/lib/iomgr/endpoint.cc +17 -17
  540. data/src/core/lib/iomgr/endpoint.h +46 -46
  541. data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
  542. data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
  543. data/src/core/lib/iomgr/endpoint_pair.h +18 -18
  544. data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
  545. data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
  546. data/src/core/lib/iomgr/error.cc +49 -61
  547. data/src/core/lib/iomgr/error.h +42 -173
  548. data/src/core/lib/iomgr/error_cfstream.cc +18 -18
  549. data/src/core/lib/iomgr/error_cfstream.h +19 -19
  550. data/src/core/lib/iomgr/ev_apple.cc +21 -21
  551. data/src/core/lib/iomgr/ev_apple.h +17 -17
  552. data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
  553. data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
  554. data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
  555. data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
  556. data/src/core/lib/iomgr/ev_posix.cc +36 -28
  557. data/src/core/lib/iomgr/ev_posix.h +85 -81
  558. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  559. data/src/core/lib/iomgr/exec_ctx.cc +34 -34
  560. data/src/core/lib/iomgr/exec_ctx.h +141 -141
  561. data/src/core/lib/iomgr/executor.cc +21 -21
  562. data/src/core/lib/iomgr/executor.h +24 -24
  563. data/src/core/lib/iomgr/fork_posix.cc +24 -22
  564. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  565. data/src/core/lib/iomgr/gethostname.h +18 -18
  566. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  567. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  568. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  569. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  570. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  571. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  572. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  573. data/src/core/lib/iomgr/internal_errqueue.h +80 -80
  574. data/src/core/lib/iomgr/iocp_windows.cc +22 -21
  575. data/src/core/lib/iomgr/iocp_windows.h +18 -18
  576. data/src/core/lib/iomgr/iomgr.cc +19 -18
  577. data/src/core/lib/iomgr/iomgr.h +32 -32
  578. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  579. data/src/core/lib/iomgr/iomgr_internal.h +25 -25
  580. data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
  581. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
  582. data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
  583. data/src/core/lib/iomgr/load_file.cc +24 -27
  584. data/src/core/lib/iomgr/load_file.h +20 -20
  585. data/src/core/lib/iomgr/lockfree_event.cc +114 -114
  586. data/src/core/lib/iomgr/lockfree_event.h +19 -19
  587. data/src/core/lib/iomgr/nameser.h +84 -84
  588. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  589. data/src/core/lib/iomgr/polling_entity.h +27 -27
  590. data/src/core/lib/iomgr/pollset.cc +17 -17
  591. data/src/core/lib/iomgr/pollset.h +51 -51
  592. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  593. data/src/core/lib/iomgr/pollset_set.h +22 -22
  594. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  595. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  596. data/src/core/lib/iomgr/pollset_windows.cc +30 -29
  597. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  598. data/src/core/lib/iomgr/port.h +29 -29
  599. data/src/core/lib/iomgr/python_util.h +20 -20
  600. data/src/core/lib/iomgr/resolve_address.cc +26 -20
  601. data/src/core/lib/iomgr/resolve_address.h +21 -22
  602. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  603. data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
  604. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  605. data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
  606. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  607. data/src/core/lib/iomgr/resolved_address.h +1 -1
  608. data/src/core/lib/iomgr/sockaddr.h +21 -21
  609. data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
  610. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
  611. data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
  612. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  613. data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
  614. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  615. data/src/core/lib/iomgr/socket_mutator.h +37 -37
  616. data/src/core/lib/iomgr/socket_utils.h +24 -24
  617. data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
  618. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  619. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
  620. data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
  621. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  622. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  623. data/src/core/lib/iomgr/socket_windows.h +56 -56
  624. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  625. data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
  626. data/src/core/lib/iomgr/tcp_client.cc +17 -17
  627. data/src/core/lib/iomgr/tcp_client.h +26 -26
  628. data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
  629. data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
  630. data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
  631. data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
  632. data/src/core/lib/iomgr/tcp_posix.cc +223 -237
  633. data/src/core/lib/iomgr/tcp_posix.h +27 -27
  634. data/src/core/lib/iomgr/tcp_server.cc +30 -22
  635. data/src/core/lib/iomgr/tcp_server.h +68 -62
  636. data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
  637. data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
  638. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
  639. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
  640. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  641. data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
  642. data/src/core/lib/iomgr/tcp_windows.cc +109 -93
  643. data/src/core/lib/iomgr/tcp_windows.h +29 -29
  644. data/src/core/lib/iomgr/timer.cc +17 -17
  645. data/src/core/lib/iomgr/timer.h +65 -65
  646. data/src/core/lib/iomgr/timer_generic.cc +115 -122
  647. data/src/core/lib/iomgr/timer_generic.h +19 -19
  648. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  649. data/src/core/lib/iomgr/timer_heap.h +19 -19
  650. data/src/core/lib/iomgr/timer_manager.cc +30 -29
  651. data/src/core/lib/iomgr/timer_manager.h +25 -25
  652. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  653. data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
  654. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  655. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
  656. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  657. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  658. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  659. data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
  660. data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
  661. data/src/core/lib/json/json_channel_args.h +42 -0
  662. data/src/core/lib/json/json_object_loader.cc +17 -2
  663. data/src/core/lib/json/json_object_loader.h +37 -1
  664. data/src/core/lib/json/json_reader.cc +28 -28
  665. data/src/core/lib/json/json_util.cc +5 -5
  666. data/src/core/lib/json/json_util.h +4 -4
  667. data/src/core/lib/json/json_writer.cc +56 -56
  668. data/src/core/lib/load_balancing/lb_policy.cc +18 -18
  669. data/src/core/lib/load_balancing/lb_policy.h +7 -4
  670. data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
  671. data/src/core/lib/matchers/matchers.cc +6 -5
  672. data/src/core/lib/matchers/matchers.h +1 -1
  673. data/src/core/lib/promise/activity.cc +16 -2
  674. data/src/core/lib/promise/activity.h +58 -27
  675. data/src/core/lib/promise/arena_promise.h +82 -52
  676. data/src/core/lib/promise/context.h +14 -6
  677. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  678. data/src/core/lib/promise/detail/promise_factory.h +59 -10
  679. data/src/core/lib/promise/detail/status.h +28 -0
  680. data/src/core/lib/promise/detail/switch.h +1455 -0
  681. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
  682. data/src/core/lib/promise/for_each.h +155 -0
  683. data/src/core/lib/promise/latch.h +13 -19
  684. data/src/core/lib/promise/loop.h +7 -5
  685. data/src/core/lib/promise/map.h +1 -0
  686. data/src/core/lib/promise/map_pipe.h +88 -0
  687. data/src/core/lib/promise/pipe.cc +19 -0
  688. data/src/core/lib/promise/pipe.h +505 -0
  689. data/src/core/lib/promise/poll.h +19 -0
  690. data/src/core/lib/promise/seq.h +4 -5
  691. data/src/core/lib/promise/sleep.cc +5 -4
  692. data/src/core/lib/promise/sleep.h +1 -2
  693. data/src/core/lib/promise/try_concurrently.h +342 -0
  694. data/src/core/lib/promise/try_seq.h +11 -13
  695. data/src/core/lib/resolver/resolver.cc +17 -17
  696. data/src/core/lib/resolver/server_address.cc +18 -17
  697. data/src/core/lib/resolver/server_address.h +19 -21
  698. data/src/core/lib/resource_quota/api.cc +0 -1
  699. data/src/core/lib/resource_quota/api.h +1 -1
  700. data/src/core/lib/resource_quota/arena.cc +36 -17
  701. data/src/core/lib/resource_quota/arena.h +107 -18
  702. data/src/core/lib/resource_quota/memory_quota.cc +140 -43
  703. data/src/core/lib/resource_quota/memory_quota.h +85 -23
  704. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  705. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  706. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
  707. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  708. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  709. data/src/core/lib/security/authorization/matchers.cc +25 -22
  710. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  711. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  712. data/src/core/lib/security/context/security_context.cc +22 -23
  713. data/src/core/lib/security/context/security_context.h +40 -30
  714. data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
  715. data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
  716. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  717. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  718. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  719. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  720. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  721. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
  722. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  723. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  724. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
  725. data/src/core/lib/security/credentials/call_creds_util.h +1 -1
  726. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  727. data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
  728. data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
  729. data/src/core/lib/security/credentials/credentials.cc +19 -18
  730. data/src/core/lib/security/credentials/credentials.h +34 -33
  731. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  732. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  733. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  734. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  735. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  736. data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
  737. data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
  738. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
  739. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
  740. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
  741. data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
  742. data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
  743. data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
  744. data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
  745. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
  746. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
  747. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
  748. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
  749. data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
  750. data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
  751. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
  752. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
  753. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
  754. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
  755. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
  756. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
  757. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
  758. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  759. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
  760. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  761. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
  762. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
  763. data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
  764. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
  765. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  766. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
  767. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
  768. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
  769. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
  770. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  771. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
  772. data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
  773. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
  774. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
  775. data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
  776. data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
  777. data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
  778. data/src/core/lib/security/security_connector/security_connector.cc +17 -17
  779. data/src/core/lib/security/security_connector/security_connector.h +32 -33
  780. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
  781. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
  782. data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
  783. data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
  784. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  785. data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
  786. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
  787. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
  788. data/src/core/lib/security/transport/auth_filters.h +18 -18
  789. data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
  790. data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
  791. data/src/core/lib/security/transport/secure_endpoint.h +22 -22
  792. data/src/core/lib/security/transport/security_handshaker.cc +70 -70
  793. data/src/core/lib/security/transport/security_handshaker.h +19 -19
  794. data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
  795. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  796. data/src/core/lib/security/transport/tsi_error.h +18 -18
  797. data/src/core/lib/security/util/json_util.cc +21 -22
  798. data/src/core/lib/security/util/json_util.h +18 -18
  799. data/src/core/lib/service_config/service_config.h +2 -2
  800. data/src/core/lib/service_config/service_config_call_data.h +7 -1
  801. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  802. data/src/core/lib/service_config/service_config_impl.h +14 -17
  803. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  804. data/src/core/lib/service_config/service_config_parser.h +14 -10
  805. data/src/core/lib/slice/b64.cc +26 -26
  806. data/src/core/lib/slice/b64.h +29 -29
  807. data/src/core/lib/slice/percent_encoding.cc +17 -17
  808. data/src/core/lib/slice/percent_encoding.h +24 -24
  809. data/src/core/lib/slice/slice.cc +44 -38
  810. data/src/core/lib/slice/slice.h +57 -11
  811. data/src/core/lib/slice/slice_buffer.cc +63 -59
  812. data/src/core/lib/slice/slice_buffer.h +27 -2
  813. data/src/core/lib/slice/slice_internal.h +31 -39
  814. data/src/core/lib/slice/slice_refcount.h +34 -19
  815. data/src/core/lib/slice/slice_string_helpers.cc +17 -17
  816. data/src/core/lib/slice/slice_string_helpers.h +19 -19
  817. data/src/core/lib/surface/api_trace.cc +17 -17
  818. data/src/core/lib/surface/api_trace.h +22 -22
  819. data/src/core/lib/surface/byte_buffer.cc +22 -23
  820. data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
  821. data/src/core/lib/surface/call.cc +1521 -335
  822. data/src/core/lib/surface/call.h +86 -39
  823. data/src/core/lib/surface/call_details.cc +20 -21
  824. data/src/core/lib/surface/call_log_batch.cc +18 -18
  825. data/src/core/lib/surface/call_test_only.h +30 -30
  826. data/src/core/lib/surface/call_trace.cc +113 -0
  827. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
  828. data/src/core/lib/surface/channel.cc +62 -67
  829. data/src/core/lib/surface/channel.h +40 -32
  830. data/src/core/lib/surface/channel_init.cc +17 -17
  831. data/src/core/lib/surface/channel_init.h +18 -18
  832. data/src/core/lib/surface/channel_ping.cc +19 -19
  833. data/src/core/lib/surface/channel_stack_type.cc +21 -17
  834. data/src/core/lib/surface/channel_stack_type.h +20 -18
  835. data/src/core/lib/surface/completion_queue.cc +173 -191
  836. data/src/core/lib/surface/completion_queue.h +32 -32
  837. data/src/core/lib/surface/completion_queue_factory.cc +28 -28
  838. data/src/core/lib/surface/completion_queue_factory.h +20 -20
  839. data/src/core/lib/surface/event_string.cc +17 -17
  840. data/src/core/lib/surface/event_string.h +20 -20
  841. data/src/core/lib/surface/init.cc +29 -58
  842. data/src/core/lib/surface/init.h +18 -18
  843. data/src/core/lib/surface/init_internally.cc +1 -0
  844. data/src/core/lib/surface/init_internally.h +9 -0
  845. data/src/core/lib/surface/lame_client.cc +28 -26
  846. data/src/core/lib/surface/lame_client.h +19 -19
  847. data/src/core/lib/surface/metadata_array.cc +17 -18
  848. data/src/core/lib/surface/server.cc +61 -83
  849. data/src/core/lib/surface/server.h +5 -7
  850. data/src/core/lib/surface/validate_metadata.cc +28 -29
  851. data/src/core/lib/surface/validate_metadata.h +18 -18
  852. data/src/core/lib/surface/version.cc +21 -21
  853. data/src/core/lib/transport/bdp_estimator.cc +17 -17
  854. data/src/core/lib/transport/bdp_estimator.h +18 -19
  855. data/src/core/lib/transport/connectivity_state.cc +19 -19
  856. data/src/core/lib/transport/connectivity_state.h +19 -19
  857. data/src/core/lib/transport/error_utils.cc +51 -45
  858. data/src/core/lib/transport/error_utils.h +21 -21
  859. data/src/core/lib/transport/handshaker.cc +49 -46
  860. data/src/core/lib/transport/handshaker.h +43 -38
  861. data/src/core/lib/transport/handshaker_factory.h +44 -18
  862. data/src/core/lib/transport/handshaker_registry.cc +25 -19
  863. data/src/core/lib/transport/handshaker_registry.h +21 -22
  864. data/src/core/lib/transport/http2_errors.h +20 -20
  865. data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
  866. data/src/core/lib/transport/http_connect_handshaker.h +18 -18
  867. data/src/core/lib/transport/metadata_batch.cc +4 -1
  868. data/src/core/lib/transport/metadata_batch.h +46 -20
  869. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  870. data/src/core/lib/transport/parsed_metadata.h +1 -0
  871. data/src/core/lib/transport/pid_controller.cc +20 -20
  872. data/src/core/lib/transport/pid_controller.h +24 -24
  873. data/src/core/lib/transport/status_conversion.cc +22 -22
  874. data/src/core/lib/transport/status_conversion.h +20 -20
  875. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  876. data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
  877. data/src/core/lib/transport/timeout_encoding.cc +22 -22
  878. data/src/core/lib/transport/timeout_encoding.h +18 -18
  879. data/src/core/lib/transport/transport.cc +88 -41
  880. data/src/core/lib/transport/transport.h +193 -195
  881. data/src/core/lib/transport/transport_impl.h +42 -42
  882. data/src/core/lib/transport/transport_op_string.cc +26 -25
  883. data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
  884. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
  885. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  886. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  887. data/src/core/tsi/alts/crypt/gsec.h +334 -334
  888. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  889. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  890. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  891. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  892. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  893. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  894. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  895. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  896. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  897. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  898. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  899. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  900. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
  901. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
  902. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  903. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  904. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
  905. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
  906. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
  907. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  908. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
  909. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  910. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
  911. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  912. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  913. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  914. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  915. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  916. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  917. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  918. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  919. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  920. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
  921. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  922. data/src/core/tsi/fake_transport_security.cc +80 -79
  923. data/src/core/tsi/fake_transport_security.h +30 -30
  924. data/src/core/tsi/local_transport_security.cc +34 -33
  925. data/src/core/tsi/local_transport_security.h +31 -31
  926. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
  927. data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
  928. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
  929. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  930. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
  931. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
  932. data/src/core/tsi/ssl_transport_security.cc +139 -323
  933. data/src/core/tsi/ssl_transport_security.h +201 -200
  934. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  935. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  936. data/src/core/tsi/ssl_types.h +25 -25
  937. data/src/core/tsi/transport_security.cc +26 -26
  938. data/src/core/tsi/transport_security.h +45 -45
  939. data/src/core/tsi/transport_security_grpc.cc +20 -20
  940. data/src/core/tsi/transport_security_grpc.h +39 -39
  941. data/src/core/tsi/transport_security_interface.h +330 -330
  942. data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  943. data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  944. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  945. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  946. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  947. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  948. data/src/ruby/ext/grpc/extconf.rb +47 -2
  949. data/src/ruby/ext/grpc/rb_call.c +1 -0
  950. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  951. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  952. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  953. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  954. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  955. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
  956. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  957. data/src/ruby/lib/grpc/version.rb +1 -1
  958. data/src/ruby/spec/channel_spec.rb +0 -43
  959. data/src/ruby/spec/client_server_spec.rb +20 -8
  960. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  961. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  962. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  963. data/third_party/re2/re2/bitstate.cc +3 -3
  964. data/third_party/re2/re2/dfa.cc +13 -13
  965. data/third_party/re2/re2/nfa.cc +4 -4
  966. data/third_party/re2/re2/onepass.cc +2 -2
  967. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  968. data/third_party/re2/re2/prefilter_tree.h +3 -2
  969. data/third_party/re2/re2/prog.cc +11 -2
  970. data/third_party/re2/re2/prog.h +17 -5
  971. data/third_party/re2/re2/re2.cc +6 -11
  972. data/third_party/re2/re2/re2.h +1 -1
  973. data/third_party/re2/re2/regexp.cc +1 -2
  974. data/third_party/re2/re2/stringpiece.h +10 -7
  975. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  976. data/third_party/re2/re2/unicode_groups.cc +319 -151
  977. data/third_party/re2/re2/walker-inl.h +3 -2
  978. data/third_party/re2/util/mutex.h +4 -4
  979. data/third_party/zlib/compress.c +3 -3
  980. data/third_party/zlib/crc32.c +21 -12
  981. data/third_party/zlib/deflate.c +112 -106
  982. data/third_party/zlib/deflate.h +2 -2
  983. data/third_party/zlib/gzlib.c +1 -1
  984. data/third_party/zlib/gzread.c +3 -5
  985. data/third_party/zlib/gzwrite.c +1 -1
  986. data/third_party/zlib/infback.c +10 -7
  987. data/third_party/zlib/inflate.c +5 -2
  988. data/third_party/zlib/inftrees.c +2 -2
  989. data/third_party/zlib/inftrees.h +1 -1
  990. data/third_party/zlib/trees.c +61 -62
  991. data/third_party/zlib/uncompr.c +2 -2
  992. data/third_party/zlib/zconf.h +16 -3
  993. data/third_party/zlib/zlib.h +10 -10
  994. data/third_party/zlib/zutil.c +9 -7
  995. data/third_party/zlib/zutil.h +1 -0
  996. metadata +146 -40
  997. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  998. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  999. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  1000. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  1001. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  1002. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  1003. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
  1004. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1005. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1006. data/src/core/lib/gpr/tls.h +0 -156
  1007. data/src/core/lib/promise/call_push_pull.h +0 -148
  1008. data/src/core/lib/slice/slice_api.cc +0 -39
  1009. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -58,18 +58,17 @@
58
58
  // IWYU pragma: no_include <sys/socket.h>
59
59
 
60
60
  #include <inttypes.h>
61
- #include <stdlib.h>
62
61
  #include <string.h>
63
62
 
64
63
  #include <algorithm>
65
64
  #include <map>
66
65
  #include <memory>
67
66
  #include <string>
67
+ #include <type_traits>
68
68
  #include <utility>
69
69
  #include <vector>
70
70
 
71
71
  #include "absl/container/inlined_vector.h"
72
- #include "absl/memory/memory.h"
73
72
  #include "absl/status/status.h"
74
73
  #include "absl/status/statusor.h"
75
74
  #include "absl/strings/str_cat.h"
@@ -84,9 +83,8 @@
84
83
  #include <grpc/byte_buffer.h>
85
84
  #include <grpc/byte_buffer_reader.h>
86
85
  #include <grpc/grpc.h>
87
- #include <grpc/impl/codegen/connectivity_state.h>
88
- #include <grpc/impl/codegen/grpc_types.h>
89
- #include <grpc/impl/codegen/propagation_bits.h>
86
+ #include <grpc/impl/connectivity_state.h>
87
+ #include <grpc/impl/propagation_bits.h>
90
88
  #include <grpc/slice.h>
91
89
  #include <grpc/status.h>
92
90
  #include <grpc/support/alloc.h>
@@ -106,13 +104,14 @@
106
104
  #include "src/core/lib/channel/channelz.h"
107
105
  #include "src/core/lib/config/core_configuration.h"
108
106
  #include "src/core/lib/debug/trace.h"
109
- #include "src/core/lib/event_engine/default_event_engine.h"
110
107
  #include "src/core/lib/gpr/string.h"
111
108
  #include "src/core/lib/gpr/useful.h"
109
+ #include "src/core/lib/gprpp/crash.h"
112
110
  #include "src/core/lib/gprpp/debug_location.h"
113
111
  #include "src/core/lib/gprpp/orphanable.h"
114
112
  #include "src/core/lib/gprpp/ref_counted.h"
115
113
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
114
+ #include "src/core/lib/gprpp/status_helper.h"
116
115
  #include "src/core/lib/gprpp/time.h"
117
116
  #include "src/core/lib/gprpp/validation_errors.h"
118
117
  #include "src/core/lib/gprpp/work_serializer.h"
@@ -123,7 +122,6 @@
123
122
  #include "src/core/lib/iomgr/resolved_address.h"
124
123
  #include "src/core/lib/iomgr/sockaddr.h"
125
124
  #include "src/core/lib/iomgr/socket_utils.h"
126
- #include "src/core/lib/iomgr/timer.h"
127
125
  #include "src/core/lib/json/json.h"
128
126
  #include "src/core/lib/json/json_args.h"
129
127
  #include "src/core/lib/json/json_object_loader.h"
@@ -135,7 +133,6 @@
135
133
  #include "src/core/lib/resolver/server_address.h"
136
134
  #include "src/core/lib/security/credentials/credentials.h"
137
135
  #include "src/core/lib/slice/slice.h"
138
- #include "src/core/lib/slice/slice_refcount.h"
139
136
  #include "src/core/lib/slice/slice_string_helpers.h"
140
137
  #include "src/core/lib/surface/call.h"
141
138
  #include "src/core/lib/surface/channel.h"
@@ -161,7 +158,6 @@ const char kGrpcLbAddressAttributeKey[] = "grpclb";
161
158
  namespace {
162
159
 
163
160
  using ::grpc_event_engine::experimental::EventEngine;
164
- using ::grpc_event_engine::experimental::GetDefaultEventEngine;
165
161
 
166
162
  constexpr absl::string_view kGrpclb = "grpclb";
167
163
 
@@ -341,8 +337,8 @@ class GrpcLb : public LoadBalancingPolicy {
341
337
  client_stats_(std::move(client_stats)) {}
342
338
 
343
339
  std::unique_ptr<AttributeInterface> Copy() const override {
344
- return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
345
- client_stats_);
340
+ return std::make_unique<TokenAndClientStatsAttribute>(lb_token_,
341
+ client_stats_);
346
342
  }
347
343
 
348
344
  int Cmp(const AttributeInterface* other_base) const override {
@@ -410,7 +406,7 @@ class GrpcLb : public LoadBalancingPolicy {
410
406
  class Picker : public SubchannelPicker {
411
407
  public:
412
408
  Picker(RefCountedPtr<Serverlist> serverlist,
413
- std::unique_ptr<SubchannelPicker> child_picker,
409
+ RefCountedPtr<SubchannelPicker> child_picker,
414
410
  RefCountedPtr<GrpcLbClientStats> client_stats)
415
411
  : serverlist_(std::move(serverlist)),
416
412
  child_picker_(std::move(child_picker)),
@@ -455,7 +451,7 @@ class GrpcLb : public LoadBalancingPolicy {
455
451
  // Serverlist to be used for determining drops.
456
452
  RefCountedPtr<Serverlist> serverlist_;
457
453
 
458
- std::unique_ptr<SubchannelPicker> child_picker_;
454
+ RefCountedPtr<SubchannelPicker> child_picker_;
459
455
  RefCountedPtr<GrpcLbClientStats> client_stats_;
460
456
  };
461
457
 
@@ -467,9 +463,10 @@ class GrpcLb : public LoadBalancingPolicy {
467
463
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
468
464
  ServerAddress address, const ChannelArgs& args) override;
469
465
  void UpdateState(grpc_connectivity_state state, const absl::Status& status,
470
- std::unique_ptr<SubchannelPicker> picker) override;
466
+ RefCountedPtr<SubchannelPicker> picker) override;
471
467
  void RequestReresolution() override;
472
468
  absl::string_view GetAuthority() override;
469
+ grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
473
470
  void AddTraceEvent(TraceSeverity severity,
474
471
  absl::string_view message) override;
475
472
 
@@ -497,7 +494,8 @@ class GrpcLb : public LoadBalancingPolicy {
497
494
  "entering fallback mode",
498
495
  parent_.get(), status.ToString().c_str());
499
496
  parent_->fallback_at_startup_checks_pending_ = false;
500
- grpc_timer_cancel(&parent_->lb_fallback_timer_);
497
+ parent_->channel_control_helper()->GetEventEngine()->Cancel(
498
+ *parent_->lb_fallback_timer_handle_);
501
499
  parent_->fallback_mode_ = true;
502
500
  parent_->CreateOrUpdateChildPolicyLocked();
503
501
  // Cancel the watch, since we don't care about the channel state once we
@@ -518,14 +516,12 @@ class GrpcLb : public LoadBalancingPolicy {
518
516
 
519
517
  // Methods for dealing with fallback state.
520
518
  void MaybeEnterFallbackModeAfterStartup();
521
- static void OnFallbackTimer(void* arg, grpc_error_handle error);
522
- void OnFallbackTimerLocked(grpc_error_handle error);
519
+ void OnFallbackTimerLocked();
523
520
 
524
521
  // Methods for dealing with the balancer call.
525
522
  void StartBalancerCallLocked();
526
523
  void StartBalancerCallRetryTimerLocked();
527
- static void OnBalancerCallRetryTimer(void* arg, grpc_error_handle error);
528
- void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
524
+ void OnBalancerCallRetryTimerLocked();
529
525
 
530
526
  // Methods for dealing with the child policy.
531
527
  ChannelArgs CreateChildPolicyArgsLocked(
@@ -538,8 +534,7 @@ class GrpcLb : public LoadBalancingPolicy {
538
534
  void CacheDeletedSubchannelLocked(
539
535
  RefCountedPtr<SubchannelInterface> subchannel);
540
536
  void StartSubchannelCacheTimerLocked();
541
- static void OnSubchannelCacheTimer(void* arg, grpc_error_handle error);
542
- void OnSubchannelCacheTimerLocked(grpc_error_handle error);
537
+ void OnSubchannelCacheTimerLocked();
543
538
 
544
539
  // Who the client is trying to communicate with.
545
540
  std::string server_name_;
@@ -570,9 +565,7 @@ class GrpcLb : public LoadBalancingPolicy {
570
565
  const Duration lb_call_timeout_;
571
566
  // Balancer call retry state.
572
567
  BackOff lb_call_backoff_;
573
- bool retry_timer_callback_pending_ = false;
574
- grpc_timer lb_call_retry_timer_;
575
- grpc_closure lb_on_call_retry_;
568
+ absl::optional<EventEngine::TaskHandle> lb_call_retry_timer_handle_;
576
569
 
577
570
  // The deserialized response from the balancer. May be nullptr until one
578
571
  // such response has arrived.
@@ -590,8 +583,7 @@ class GrpcLb : public LoadBalancingPolicy {
590
583
  // we have not received a serverlist from the balancer.
591
584
  const Duration fallback_at_startup_timeout_;
592
585
  bool fallback_at_startup_checks_pending_ = false;
593
- grpc_timer lb_fallback_timer_;
594
- grpc_closure lb_on_fallback_;
586
+ absl::optional<EventEngine::TaskHandle> lb_fallback_timer_handle_;
595
587
 
596
588
  // The child policy to use for the backends.
597
589
  OrphanablePtr<LoadBalancingPolicy> child_policy_;
@@ -603,9 +595,7 @@ class GrpcLb : public LoadBalancingPolicy {
603
595
  std::map<Timestamp /*deletion time*/,
604
596
  std::vector<RefCountedPtr<SubchannelInterface>>>
605
597
  cached_subchannels_;
606
- grpc_timer subchannel_cache_timer_;
607
- grpc_closure on_subchannel_cache_timer_;
608
- bool subchannel_cache_timer_pending_ = false;
598
+ absl::optional<EventEngine::TaskHandle> subchannel_cache_timer_handle_;
609
599
  };
610
600
 
611
601
  //
@@ -620,8 +610,8 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
620
610
  memset(addr, 0, sizeof(*addr));
621
611
  if (server.drop) return;
622
612
  const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
623
- /* the addresses are given in binary format (a in(6)_addr struct) in
624
- * server->ip_address.bytes. */
613
+ // the addresses are given in binary format (a in(6)_addr struct) in
614
+ // server->ip_address.bytes.
625
615
  if (server.ip_size == 4) {
626
616
  addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
627
617
  grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(&addr->addr);
@@ -708,8 +698,8 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
708
698
  std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
709
699
  attributes;
710
700
  attributes[kGrpcLbAddressAttributeKey] =
711
- absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
712
- stats);
701
+ std::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
702
+ stats);
713
703
  // Add address.
714
704
  addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
715
705
  }
@@ -763,7 +753,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
763
753
  GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
764
754
  if (client_stats != nullptr) {
765
755
  complete_pick->subchannel_call_tracker =
766
- absl::make_unique<SubchannelCallTracker>(
756
+ std::make_unique<SubchannelCallTracker>(
767
757
  client_stats->Ref(),
768
758
  std::move(complete_pick->subchannel_call_tracker));
769
759
  // The metadata value is a hack: we pretend the pointer points to
@@ -802,10 +792,9 @@ RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
802
792
  static_cast<const TokenAndClientStatsAttribute*>(
803
793
  address.GetAttribute(kGrpcLbAddressAttributeKey));
804
794
  if (attribute == nullptr) {
805
- gpr_log(GPR_ERROR,
806
- "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
807
- parent_.get(), address.ToString().c_str());
808
- abort();
795
+ Crash(absl::StrFormat(
796
+ "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
797
+ parent_.get(), address.ToString().c_str()));
809
798
  }
810
799
  std::string lb_token = attribute->lb_token();
811
800
  RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
@@ -818,7 +807,7 @@ RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
818
807
 
819
808
  void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
820
809
  const absl::Status& status,
821
- std::unique_ptr<SubchannelPicker> picker) {
810
+ RefCountedPtr<SubchannelPicker> picker) {
822
811
  if (parent_->shutting_down_) return;
823
812
  // Record whether child policy reports READY.
824
813
  parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
@@ -853,8 +842,8 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
853
842
  }
854
843
  parent_->channel_control_helper()->UpdateState(
855
844
  state, status,
856
- absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
857
- std::move(client_stats)));
845
+ MakeRefCounted<Picker>(std::move(serverlist), std::move(picker),
846
+ std::move(client_stats)));
858
847
  }
859
848
 
860
849
  void GrpcLb::Helper::RequestReresolution() {
@@ -873,6 +862,10 @@ absl::string_view GrpcLb::Helper::GetAuthority() {
873
862
  return parent_->channel_control_helper()->GetAuthority();
874
863
  }
875
864
 
865
+ grpc_event_engine::experimental::EventEngine* GrpcLb::Helper::GetEventEngine() {
866
+ return parent_->channel_control_helper()->GetEventEngine();
867
+ }
868
+
876
869
  void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
877
870
  absl::string_view message) {
878
871
  if (parent_->shutting_down_) return;
@@ -922,7 +915,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
922
915
  arena.ptr());
923
916
  send_message_payload_ =
924
917
  grpc_raw_byte_buffer_create(&request_payload_slice, 1);
925
- grpc_slice_unref_internal(request_payload_slice);
918
+ CSliceUnref(request_payload_slice);
926
919
  // Init other data associated with the LB call.
927
920
  grpc_metadata_array_init(&lb_initial_metadata_recv_);
928
921
  grpc_metadata_array_init(&lb_trailing_metadata_recv_);
@@ -935,7 +928,7 @@ GrpcLb::BalancerCallState::~BalancerCallState() {
935
928
  grpc_metadata_array_destroy(&lb_trailing_metadata_recv_);
936
929
  grpc_byte_buffer_destroy(send_message_payload_);
937
930
  grpc_byte_buffer_destroy(recv_message_payload_);
938
- grpc_slice_unref_internal(lb_call_status_details_);
931
+ CSliceUnref(lb_call_status_details_);
939
932
  }
940
933
 
941
934
  void GrpcLb::BalancerCallState::Orphan() {
@@ -946,7 +939,8 @@ void GrpcLb::BalancerCallState::Orphan() {
946
939
  // call, then the following cancellation will be a no-op.
947
940
  grpc_call_cancel_internal(lb_call_);
948
941
  if (client_load_report_handle_.has_value() &&
949
- GetDefaultEventEngine()->Cancel(client_load_report_handle_.value())) {
942
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
943
+ client_load_report_handle_.value())) {
950
944
  Unref(DEBUG_LOCATION, "client_load_report cancelled");
951
945
  }
952
946
  // Note that the initial ref is hold by lb_on_balancer_status_received_
@@ -1032,12 +1026,13 @@ void GrpcLb::BalancerCallState::StartQuery() {
1032
1026
 
1033
1027
  void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
1034
1028
  client_load_report_handle_ =
1035
- GetDefaultEventEngine()->RunAfter(client_stats_report_interval_, [this] {
1036
- ApplicationCallbackExecCtx callback_exec_ctx;
1037
- ExecCtx exec_ctx;
1038
- grpclb_policy()->work_serializer()->Run(
1039
- [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
1040
- });
1029
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->RunAfter(
1030
+ client_stats_report_interval_, [this] {
1031
+ ApplicationCallbackExecCtx callback_exec_ctx;
1032
+ ExecCtx exec_ctx;
1033
+ grpclb_policy()->work_serializer()->Run(
1034
+ [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
1035
+ });
1041
1036
  }
1042
1037
 
1043
1038
  void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
@@ -1090,7 +1085,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
1090
1085
  num_calls_finished_known_received, drop_token_counts.get(), arena.ptr());
1091
1086
  send_message_payload_ =
1092
1087
  grpc_raw_byte_buffer_create(&request_payload_slice, 1);
1093
- grpc_slice_unref_internal(request_payload_slice);
1088
+ CSliceUnref(request_payload_slice);
1094
1089
  // Send the report.
1095
1090
  grpc_op op;
1096
1091
  memset(&op, 0, sizeof(op));
@@ -1109,7 +1104,6 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
1109
1104
  void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
1110
1105
  grpc_error_handle error) {
1111
1106
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1112
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1113
1107
  lb_calld->grpclb_policy()->work_serializer()->Run(
1114
1108
  [lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
1115
1109
  DEBUG_LOCATION);
@@ -1119,9 +1113,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
1119
1113
  grpc_error_handle error) {
1120
1114
  grpc_byte_buffer_destroy(send_message_payload_);
1121
1115
  send_message_payload_ = nullptr;
1122
- if (!GRPC_ERROR_IS_NONE(error) || this != grpclb_policy()->lb_calld_.get()) {
1116
+ if (!error.ok() || this != grpclb_policy()->lb_calld_.get()) {
1123
1117
  Unref(DEBUG_LOCATION, "client_load_report");
1124
- GRPC_ERROR_UNREF(error);
1125
1118
  return;
1126
1119
  }
1127
1120
  ScheduleNextClientLoadReportLocked();
@@ -1261,7 +1254,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1261
1254
  }
1262
1255
  if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1263
1256
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1264
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1257
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1258
+ *grpclb_policy()->lb_fallback_timer_handle_);
1265
1259
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1266
1260
  }
1267
1261
  // Update the serverlist in the GrpcLb instance. This serverlist
@@ -1279,7 +1273,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1279
1273
  grpclb_policy());
1280
1274
  if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1281
1275
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1282
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1276
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1277
+ *grpclb_policy()->lb_fallback_timer_handle_);
1283
1278
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1284
1279
  }
1285
1280
  grpclb_policy()->fallback_mode_ = true;
@@ -1293,7 +1288,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1293
1288
  }
1294
1289
  }
1295
1290
  }
1296
- grpc_slice_unref_internal(response_slice);
1291
+ CSliceUnref(response_slice);
1297
1292
  if (!grpclb_policy()->shutting_down_) {
1298
1293
  // Keep listening for serverlist updates.
1299
1294
  grpc_op op;
@@ -1314,7 +1309,6 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1314
1309
  void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
1315
1310
  void* arg, grpc_error_handle error) {
1316
1311
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1317
- (void)GRPC_ERROR_REF(error); // owned by lambda
1318
1312
  lb_calld->grpclb_policy()->work_serializer()->Run(
1319
1313
  [lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
1320
1314
  DEBUG_LOCATION);
@@ -1329,10 +1323,9 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1329
1323
  "[grpclb %p] lb_calld=%p: Status from LB server received. "
1330
1324
  "Status = %d, details = '%s', (lb_call: %p), error '%s'",
1331
1325
  grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
1332
- grpc_error_std_string(error).c_str());
1326
+ StatusToString(error).c_str());
1333
1327
  gpr_free(status_details);
1334
1328
  }
1335
- GRPC_ERROR_UNREF(error);
1336
1329
  // If this lb_calld is still in use, this call ended because of a failure so
1337
1330
  // we want to retry connecting. Otherwise, we have deliberately ended this
1338
1331
  // call and no further action is required.
@@ -1348,7 +1341,8 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1348
1341
  "serverlist; entering fallback mode",
1349
1342
  grpclb_policy());
1350
1343
  grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1351
- grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1344
+ grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
1345
+ *grpclb_policy()->lb_fallback_timer_handle_);
1352
1346
  grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1353
1347
  grpclb_policy()->fallback_mode_ = true;
1354
1348
  grpclb_policy()->CreateOrUpdateChildPolicyLocked();
@@ -1383,13 +1377,13 @@ ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
1383
1377
  return ServerAddressList();
1384
1378
  }
1385
1379
 
1386
- /* Returns the channel args for the LB channel, used to create a bidirectional
1387
- * stream for the reception of load balancing updates.
1388
- *
1389
- * Inputs:
1390
- * - \a response_generator: in order to propagate updates from the resolver
1391
- * above the grpclb policy.
1392
- * - \a args: other args inherited from the grpclb policy. */
1380
+ // Returns the channel args for the LB channel, used to create a bidirectional
1381
+ // stream for the reception of load balancing updates.
1382
+ //
1383
+ // Inputs:
1384
+ // - \a response_generator: in order to propagate updates from the resolver
1385
+ // above the grpclb policy.
1386
+ // - \a args: other args inherited from the grpclb policy.
1393
1387
  ChannelArgs BuildBalancerChannelArgs(
1394
1388
  FakeResolverResponseGenerator* response_generator,
1395
1389
  const ChannelArgs& args) {
@@ -1500,29 +1494,25 @@ GrpcLb::GrpcLb(Args args)
1500
1494
  "[grpclb %p] Will use '%s' as the server name for LB request.",
1501
1495
  this, server_name_.c_str());
1502
1496
  }
1503
- // Closure Initialization
1504
- GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
1505
- grpc_schedule_on_exec_ctx);
1506
- GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
1507
- grpc_schedule_on_exec_ctx);
1508
- GRPC_CLOSURE_INIT(&on_subchannel_cache_timer_, &OnSubchannelCacheTimer, this,
1509
- nullptr);
1510
1497
  }
1511
1498
 
1512
1499
  void GrpcLb::ShutdownLocked() {
1513
1500
  shutting_down_ = true;
1514
1501
  lb_calld_.reset();
1515
- if (subchannel_cache_timer_pending_) {
1516
- subchannel_cache_timer_pending_ = false;
1517
- grpc_timer_cancel(&subchannel_cache_timer_);
1502
+ if (subchannel_cache_timer_handle_.has_value()) {
1503
+ channel_control_helper()->GetEventEngine()->Cancel(
1504
+ *subchannel_cache_timer_handle_);
1505
+ subchannel_cache_timer_handle_.reset();
1518
1506
  }
1519
1507
  cached_subchannels_.clear();
1520
- if (retry_timer_callback_pending_) {
1521
- grpc_timer_cancel(&lb_call_retry_timer_);
1508
+ if (lb_call_retry_timer_handle_.has_value()) {
1509
+ channel_control_helper()->GetEventEngine()->Cancel(
1510
+ *lb_call_retry_timer_handle_);
1522
1511
  }
1523
1512
  if (fallback_at_startup_checks_pending_) {
1524
1513
  fallback_at_startup_checks_pending_ = false;
1525
- grpc_timer_cancel(&lb_fallback_timer_);
1514
+ channel_control_helper()->GetEventEngine()->Cancel(
1515
+ *lb_fallback_timer_handle_);
1526
1516
  CancelBalancerChannelConnectivityWatchLocked();
1527
1517
  }
1528
1518
  if (child_policy_ != nullptr) {
@@ -1570,7 +1560,7 @@ absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
1570
1560
  for (ServerAddress& address : *fallback_backend_addresses_) {
1571
1561
  address = address.WithAttribute(
1572
1562
  kGrpcLbAddressAttributeKey,
1573
- absl::make_unique<TokenAndClientStatsAttribute>("", nullptr));
1563
+ std::make_unique<TokenAndClientStatsAttribute>("", nullptr));
1574
1564
  }
1575
1565
  }
1576
1566
  resolution_note_ = std::move(args.resolution_note);
@@ -1583,9 +1573,18 @@ absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
1583
1573
  if (is_initial_update) {
1584
1574
  fallback_at_startup_checks_pending_ = true;
1585
1575
  // Start timer.
1586
- Timestamp deadline = Timestamp::Now() + fallback_at_startup_timeout_;
1587
- Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
1588
- grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
1576
+ lb_fallback_timer_handle_ =
1577
+ channel_control_helper()->GetEventEngine()->RunAfter(
1578
+ fallback_at_startup_timeout_,
1579
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1580
+ Ref(DEBUG_LOCATION, "on_fallback_timer"))]() mutable {
1581
+ ApplicationCallbackExecCtx callback_exec_ctx;
1582
+ ExecCtx exec_ctx;
1583
+ auto self_ptr = self.get();
1584
+ self_ptr->work_serializer()->Run(
1585
+ [self = std::move(self)]() { self->OnFallbackTimerLocked(); },
1586
+ DEBUG_LOCATION);
1587
+ });
1589
1588
  // Start watching the channel's connectivity state. If the channel
1590
1589
  // goes into state TRANSIENT_FAILURE before the timer fires, we go into
1591
1590
  // fallback mode even if the fallback timeout has not elapsed.
@@ -1675,10 +1674,9 @@ void GrpcLb::StartBalancerCallLocked() {
1675
1674
  }
1676
1675
 
1677
1676
  void GrpcLb::StartBalancerCallRetryTimerLocked() {
1678
- Timestamp next_try = lb_call_backoff_.NextAttemptTime();
1677
+ Duration timeout = lb_call_backoff_.NextAttemptTime() - Timestamp::Now();
1679
1678
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1680
1679
  gpr_log(GPR_INFO, "[grpclb %p] Connection to LB server lost...", this);
1681
- Duration timeout = next_try - Timestamp::Now();
1682
1680
  if (timeout > Duration::Zero()) {
1683
1681
  gpr_log(GPR_INFO, "[grpclb %p] ... retry_timer_active in %" PRId64 "ms.",
1684
1682
  this, timeout.millis());
@@ -1687,35 +1685,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
1687
1685
  this);
1688
1686
  }
1689
1687
  }
1690
- // TODO(roth): We currently track this ref manually. Once the
1691
- // ClosureRef API is ready, we should pass the RefCountedPtr<> along
1692
- // with the callback.
1693
- auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1694
- self.release();
1695
- retry_timer_callback_pending_ = true;
1696
- grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
1688
+ lb_call_retry_timer_handle_ =
1689
+ channel_control_helper()->GetEventEngine()->RunAfter(
1690
+ timeout,
1691
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1692
+ Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer"))]() mutable {
1693
+ ApplicationCallbackExecCtx callback_exec_ctx;
1694
+ ExecCtx exec_ctx;
1695
+ auto self_ptr = self.get();
1696
+ self_ptr->work_serializer()->Run(
1697
+ [self = std::move(self)]() {
1698
+ self->OnBalancerCallRetryTimerLocked();
1699
+ },
1700
+ DEBUG_LOCATION);
1701
+ });
1697
1702
  }
1698
1703
 
1699
- void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
1700
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1701
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1702
- grpclb_policy->work_serializer()->Run(
1703
- [grpclb_policy, error]() {
1704
- grpclb_policy->OnBalancerCallRetryTimerLocked(error);
1705
- },
1706
- DEBUG_LOCATION);
1707
- }
1708
-
1709
- void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
1710
- retry_timer_callback_pending_ = false;
1711
- if (!shutting_down_ && GRPC_ERROR_IS_NONE(error) && lb_calld_ == nullptr) {
1704
+ void GrpcLb::OnBalancerCallRetryTimerLocked() {
1705
+ lb_call_retry_timer_handle_.reset();
1706
+ if (!shutting_down_ && lb_calld_ == nullptr) {
1712
1707
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1713
1708
  gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
1714
1709
  }
1715
1710
  StartBalancerCallLocked();
1716
1711
  }
1717
- Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1718
- GRPC_ERROR_UNREF(error);
1719
1712
  }
1720
1713
 
1721
1714
  //
@@ -1740,19 +1733,10 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
1740
1733
  }
1741
1734
  }
1742
1735
 
1743
- void GrpcLb::OnFallbackTimer(void* arg, grpc_error_handle error) {
1744
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1745
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
1746
- grpclb_policy->work_serializer()->Run(
1747
- [grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
1748
- DEBUG_LOCATION);
1749
- }
1750
-
1751
- void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1736
+ void GrpcLb::OnFallbackTimerLocked() {
1752
1737
  // If we receive a serverlist after the timer fires but before this callback
1753
1738
  // actually runs, don't fall back.
1754
- if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
1755
- GRPC_ERROR_IS_NONE(error)) {
1739
+ if (fallback_at_startup_checks_pending_ && !shutting_down_) {
1756
1740
  gpr_log(GPR_INFO,
1757
1741
  "[grpclb %p] No response from balancer after fallback timeout; "
1758
1742
  "entering fallback mode",
@@ -1762,8 +1746,6 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1762
1746
  fallback_mode_ = true;
1763
1747
  CreateOrUpdateChildPolicyLocked();
1764
1748
  }
1765
- Unref(DEBUG_LOCATION, "on_fallback_timer");
1766
- GRPC_ERROR_UNREF(error);
1767
1749
  }
1768
1750
 
1769
1751
  //
@@ -1786,7 +1768,8 @@ OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
1786
1768
  LoadBalancingPolicy::Args lb_policy_args;
1787
1769
  lb_policy_args.work_serializer = work_serializer();
1788
1770
  lb_policy_args.args = args;
1789
- lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
1771
+ lb_policy_args.channel_control_helper =
1772
+ std::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
1790
1773
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1791
1774
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1792
1775
  &grpc_lb_glb_trace);
@@ -1809,9 +1792,10 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1809
1792
  bool is_backend_from_grpclb_load_balancer = false;
1810
1793
  if (fallback_mode_) {
1811
1794
  // If CreateOrUpdateChildPolicyLocked() is invoked when we haven't
1812
- // received any serverlist from the balancer, we use the fallback backends
1813
- // returned by the resolver. Note that the fallback backend list may be
1814
- // empty, in which case the new child policy will fail the picks.
1795
+ // received any serverlist from the balancer, we use the fallback
1796
+ // backends returned by the resolver. Note that the fallback backend
1797
+ // list may be empty, in which case the new child policy will fail the
1798
+ // picks.
1815
1799
  update_args.addresses = fallback_backend_addresses_;
1816
1800
  if (fallback_backend_addresses_.ok() &&
1817
1801
  fallback_backend_addresses_->empty()) {
@@ -1850,29 +1834,32 @@ void GrpcLb::CacheDeletedSubchannelLocked(
1850
1834
  RefCountedPtr<SubchannelInterface> subchannel) {
1851
1835
  Timestamp deletion_time = Timestamp::Now() + subchannel_cache_interval_;
1852
1836
  cached_subchannels_[deletion_time].push_back(std::move(subchannel));
1853
- if (!subchannel_cache_timer_pending_) {
1854
- Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer").release();
1855
- subchannel_cache_timer_pending_ = true;
1837
+ if (!subchannel_cache_timer_handle_.has_value()) {
1856
1838
  StartSubchannelCacheTimerLocked();
1857
1839
  }
1858
1840
  }
1859
1841
 
1860
1842
  void GrpcLb::StartSubchannelCacheTimerLocked() {
1861
1843
  GPR_ASSERT(!cached_subchannels_.empty());
1862
- grpc_timer_init(&subchannel_cache_timer_, cached_subchannels_.begin()->first,
1863
- &on_subchannel_cache_timer_);
1864
- }
1865
-
1866
- void GrpcLb::OnSubchannelCacheTimer(void* arg, grpc_error_handle error) {
1867
- auto* self = static_cast<GrpcLb*>(arg);
1868
- (void)GRPC_ERROR_REF(error);
1869
- self->work_serializer()->Run(
1870
- [self, error]() { self->GrpcLb::OnSubchannelCacheTimerLocked(error); },
1871
- DEBUG_LOCATION);
1844
+ subchannel_cache_timer_handle_ =
1845
+ channel_control_helper()->GetEventEngine()->RunAfter(
1846
+ cached_subchannels_.begin()->first - Timestamp::Now(),
1847
+ [self = static_cast<RefCountedPtr<GrpcLb>>(
1848
+ Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer"))]() mutable {
1849
+ ApplicationCallbackExecCtx callback_exec_ctx;
1850
+ ExecCtx exec_ctx;
1851
+ auto* self_ptr = self.get();
1852
+ self_ptr->work_serializer()->Run(
1853
+ [self = std::move(self)]() mutable {
1854
+ self->OnSubchannelCacheTimerLocked();
1855
+ },
1856
+ DEBUG_LOCATION);
1857
+ });
1872
1858
  }
1873
1859
 
1874
- void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
1875
- if (subchannel_cache_timer_pending_ && GRPC_ERROR_IS_NONE(error)) {
1860
+ void GrpcLb::OnSubchannelCacheTimerLocked() {
1861
+ if (subchannel_cache_timer_handle_.has_value()) {
1862
+ subchannel_cache_timer_handle_.reset();
1876
1863
  auto it = cached_subchannels_.begin();
1877
1864
  if (it != cached_subchannels_.end()) {
1878
1865
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
@@ -1886,10 +1873,7 @@ void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
1886
1873
  StartSubchannelCacheTimerLocked();
1887
1874
  return;
1888
1875
  }
1889
- subchannel_cache_timer_pending_ = false;
1890
1876
  }
1891
- Unref(DEBUG_LOCATION, "OnSubchannelCacheTimer");
1892
- GRPC_ERROR_UNREF(error);
1893
1877
  }
1894
1878
 
1895
1879
  //
@@ -1914,29 +1898,22 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1914
1898
 
1915
1899
  } // namespace
1916
1900
 
1917
- } // namespace grpc_core
1918
-
1919
1901
  //
1920
1902
  // Plugin registration
1921
1903
  //
1922
1904
 
1923
- namespace grpc_core {
1924
1905
  void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder) {
1925
1906
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
1926
- absl::make_unique<GrpcLbFactory>());
1907
+ std::make_unique<GrpcLbFactory>());
1927
1908
  builder->channel_init()->RegisterStage(
1928
1909
  GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
1929
1910
  [](ChannelStackBuilder* builder) {
1930
1911
  if (builder->channel_args().GetString(GRPC_ARG_LB_POLICY_NAME) ==
1931
1912
  "grpclb") {
1932
- // TODO(roth): When we get around to re-attempting
1933
- // https://github.com/grpc/grpc/pull/16214, we should try to keep
1934
- // this filter at the very top of the subchannel stack, since that
1935
- // will minimize the number of metadata elements that the filter
1936
- // needs to iterate through to find the ClientStats object.
1937
- builder->PrependFilter(&grpc_client_load_reporting_filter);
1913
+ builder->PrependFilter(&ClientLoadReportingFilter::kFilter);
1938
1914
  }
1939
1915
  return true;
1940
1916
  });
1941
1917
  }
1918
+
1942
1919
  } // namespace grpc_core