grpc 1.63.0 → 1.65.2

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 (1196) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +105 -103
  3. data/include/grpc/credentials.h +1222 -0
  4. data/include/grpc/event_engine/event_engine.h +13 -6
  5. data/include/grpc/grpc.h +7 -0
  6. data/include/grpc/grpc_crl_provider.h +1 -0
  7. data/include/grpc/grpc_security.h +0 -1171
  8. data/include/grpc/impl/channel_arg_names.h +7 -6
  9. data/include/grpc/module.modulemap +2 -0
  10. data/include/grpc/passive_listener.h +62 -0
  11. data/include/grpc/support/log.h +7 -17
  12. data/include/grpc/support/port_platform.h +3 -0
  13. data/src/core/{lib/channel → channelz}/channel_trace.cc +57 -63
  14. data/src/core/{lib/channel → channelz}/channel_trace.h +22 -20
  15. data/src/core/{lib/channel → channelz}/channelz.cc +71 -9
  16. data/src/core/{lib/channel → channelz}/channelz.h +52 -13
  17. data/src/core/{lib/channel → channelz}/channelz_registry.cc +11 -9
  18. data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -6
  19. data/src/core/client_channel/backup_poller.cc +4 -5
  20. data/src/core/client_channel/client_channel.cc +1324 -0
  21. data/src/core/client_channel/client_channel.h +243 -0
  22. data/src/core/client_channel/client_channel_filter.cc +312 -759
  23. data/src/core/client_channel/client_channel_filter.h +13 -68
  24. data/src/core/client_channel/client_channel_internal.h +19 -7
  25. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  26. data/src/core/client_channel/client_channel_service_config.h +4 -4
  27. data/src/core/client_channel/config_selector.cc +1 -1
  28. data/src/core/client_channel/config_selector.h +5 -4
  29. data/src/core/client_channel/connector.h +1 -1
  30. data/src/core/client_channel/dynamic_filters.cc +6 -5
  31. data/src/core/client_channel/dynamic_filters.h +1 -3
  32. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  33. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  34. data/src/core/client_channel/local_subchannel_pool.cc +5 -3
  35. data/src/core/client_channel/retry_filter.cc +3 -10
  36. data/src/core/client_channel/retry_filter.h +5 -9
  37. data/src/core/client_channel/retry_filter_legacy_call_data.cc +70 -76
  38. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  39. data/src/core/client_channel/retry_service_config.cc +4 -5
  40. data/src/core/client_channel/retry_service_config.h +3 -3
  41. data/src/core/client_channel/subchannel.cc +241 -129
  42. data/src/core/client_channel/subchannel.h +31 -19
  43. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  44. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  45. data/src/core/client_channel/subchannel_stream_client.cc +41 -52
  46. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  47. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -13
  48. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +3 -2
  49. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  50. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  51. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -15
  52. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -11
  53. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -16
  54. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +5 -4
  55. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  56. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -4
  57. data/src/core/ext/filters/http/client/http_client_filter.h +6 -5
  58. data/src/core/ext/filters/http/client_authority_filter.cc +5 -3
  59. data/src/core/ext/filters/http/client_authority_filter.h +6 -4
  60. data/src/core/ext/filters/http/message_compress/compression_filter.cc +19 -23
  61. data/src/core/ext/filters/http/message_compress/compression_filter.h +10 -8
  62. data/src/core/ext/filters/http/server/http_server_filter.cc +4 -4
  63. data/src/core/ext/filters/http/server/http_server_filter.h +6 -5
  64. data/src/core/ext/filters/message_size/message_size_filter.cc +16 -28
  65. data/src/core/ext/filters/message_size/message_size_filter.h +14 -12
  66. data/src/core/ext/filters/rbac/rbac_filter.cc +13 -11
  67. data/src/core/ext/filters/rbac/rbac_filter.h +6 -5
  68. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  69. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  70. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -18
  71. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -2
  72. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  73. data/src/core/ext/transport/chttp2/alpn/alpn.cc +5 -4
  74. data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -2
  75. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +23 -38
  76. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -8
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +233 -158
  78. data/src/core/ext/transport/chttp2/server/chttp2_server.h +36 -3
  79. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  80. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -2
  81. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -7
  82. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  83. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +190 -165
  84. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -11
  85. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  86. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  87. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  88. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -8
  89. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -6
  90. data/src/core/ext/transport/chttp2/transport/frame.cc +4 -4
  91. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  92. data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -2
  94. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -9
  97. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  98. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
  99. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  100. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -7
  101. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -2
  102. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -4
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  104. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +9 -7
  106. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +10 -4
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -9
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -2
  109. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -3
  110. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  111. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +29 -31
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -13
  114. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  115. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
  116. data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
  117. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  118. data/src/core/ext/transport/chttp2/transport/internal.h +31 -23
  119. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +4 -3
  120. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/parsing.cc +29 -39
  122. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -2
  123. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +2 -2
  124. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +3 -5
  125. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +1 -4
  126. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +30 -15
  127. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +7 -6
  128. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +10 -11
  129. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  130. data/src/core/ext/transport/chttp2/transport/varint.h +4 -3
  131. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -3
  132. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -2
  133. data/src/core/ext/transport/chttp2/transport/writing.cc +59 -47
  134. data/src/core/ext/transport/inproc/inproc_transport.cc +65 -41
  135. data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
  136. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -23
  137. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
  138. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +6 -6
  139. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +3 -3
  140. data/src/core/{lib/transport → handshaker}/handshaker.cc +14 -20
  141. data/src/core/{lib/transport → handshaker}/handshaker.h +4 -5
  142. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
  143. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +3 -3
  144. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +6 -6
  145. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +16 -25
  146. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +3 -3
  147. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +16 -18
  148. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +6 -6
  149. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +5 -5
  150. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +3 -3
  151. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +6 -6
  152. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +42 -36
  153. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +4 -7
  154. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +35 -47
  155. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +5 -6
  156. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +10 -9
  157. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +3 -3
  158. data/src/core/lib/address_utils/parse_address.cc +30 -40
  159. data/src/core/lib/address_utils/parse_address.h +2 -2
  160. data/src/core/lib/address_utils/sockaddr_utils.cc +20 -15
  161. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  162. data/src/core/lib/avl/avl.h +3 -3
  163. data/src/core/lib/backoff/backoff.cc +2 -2
  164. data/src/core/lib/backoff/backoff.h +2 -2
  165. data/src/core/lib/backoff/random_early_detection.cc +2 -2
  166. data/src/core/lib/backoff/random_early_detection.h +2 -2
  167. data/src/core/lib/channel/call_finalization.h +2 -2
  168. data/src/core/lib/channel/channel_args.cc +17 -21
  169. data/src/core/lib/channel/channel_args.h +20 -10
  170. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  171. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  172. data/src/core/lib/channel/channel_stack.cc +13 -70
  173. data/src/core/lib/channel/channel_stack.h +14 -39
  174. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  175. data/src/core/lib/channel/channel_stack_builder.h +2 -7
  176. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -150
  177. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -4
  178. data/src/core/lib/channel/connected_channel.cc +40 -694
  179. data/src/core/lib/channel/promise_based_filter.cc +111 -122
  180. data/src/core/lib/channel/promise_based_filter.h +219 -531
  181. data/src/core/lib/channel/status_util.cc +3 -3
  182. data/src/core/lib/channel/status_util.h +1 -2
  183. data/src/core/lib/compression/compression.cc +2 -3
  184. data/src/core/lib/compression/compression_internal.cc +3 -3
  185. data/src/core/lib/compression/compression_internal.h +1 -2
  186. data/src/core/lib/compression/message_compress.cc +15 -14
  187. data/src/core/lib/compression/message_compress.h +1 -2
  188. data/src/core/lib/config/config_vars.cc +5 -10
  189. data/src/core/lib/config/config_vars.h +3 -7
  190. data/src/core/lib/config/config_vars_non_generated.cc +2 -2
  191. data/src/core/lib/config/core_configuration.cc +9 -8
  192. data/src/core/lib/config/core_configuration.h +8 -8
  193. data/src/core/lib/config/load_config.cc +4 -4
  194. data/src/core/lib/config/load_config.h +2 -2
  195. data/src/core/lib/debug/event_log.cc +3 -3
  196. data/src/core/lib/debug/event_log.h +3 -3
  197. data/src/core/lib/debug/trace.cc +44 -61
  198. data/src/core/lib/debug/trace.h +2 -97
  199. data/src/core/lib/debug/trace_flags.cc +255 -0
  200. data/src/core/lib/debug/trace_flags.h +133 -0
  201. data/src/core/lib/debug/trace_impl.h +115 -0
  202. data/src/core/lib/event_engine/ares_resolver.cc +23 -26
  203. data/src/core/lib/event_engine/ares_resolver.h +3 -5
  204. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +4 -2
  205. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -3
  206. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +19 -23
  207. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -1
  208. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +1 -2
  209. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -2
  210. data/src/core/lib/event_engine/common_closures.h +1 -2
  211. data/src/core/lib/event_engine/default_event_engine.cc +1 -2
  212. data/src/core/lib/event_engine/default_event_engine.h +1 -2
  213. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -2
  214. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  215. data/src/core/lib/event_engine/event_engine.cc +29 -5
  216. data/src/core/lib/event_engine/event_engine_context.h +1 -2
  217. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  218. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -2
  219. data/src/core/lib/event_engine/extensions/supports_fd.h +8 -2
  220. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  221. data/src/core/lib/event_engine/forkable.cc +11 -11
  222. data/src/core/lib/event_engine/forkable.h +1 -13
  223. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -2
  224. data/src/core/lib/event_engine/handle_containers.h +1 -2
  225. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -2
  226. data/src/core/lib/event_engine/poller.h +1 -2
  227. data/src/core/lib/event_engine/posix.h +1 -2
  228. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +19 -19
  229. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +1 -2
  230. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +11 -11
  231. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +1 -2
  232. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -2
  233. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  234. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  235. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -2
  236. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -5
  237. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -2
  238. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  239. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
  240. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  241. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -2
  242. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +43 -58
  243. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +14 -13
  244. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -17
  245. data/src/core/lib/event_engine/posix_engine/posix_engine.h +3 -2
  246. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  247. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +17 -18
  248. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +1 -2
  249. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -28
  250. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  251. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +22 -20
  252. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
  253. data/src/core/lib/event_engine/posix_engine/timer.cc +2 -3
  254. data/src/core/lib/event_engine/posix_engine/timer.h +1 -2
  255. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -2
  256. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  257. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +9 -11
  258. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -2
  259. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  260. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -2
  261. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -2
  262. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  263. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -2
  264. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  265. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  266. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  267. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  268. data/src/core/lib/event_engine/query_extensions.h +3 -2
  269. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -2
  270. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  271. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  272. data/src/core/lib/event_engine/shim.cc +3 -3
  273. data/src/core/lib/event_engine/slice.cc +4 -3
  274. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  275. data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -16
  276. data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
  277. data/src/core/lib/event_engine/thread_local.cc +2 -2
  278. data/src/core/lib/event_engine/thread_local.h +1 -1
  279. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -2
  280. data/src/core/lib/event_engine/thread_pool/thread_count.h +2 -3
  281. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -2
  282. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -2
  283. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +27 -28
  284. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +4 -8
  285. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +16 -15
  286. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
  287. data/src/core/lib/event_engine/time_util.cc +1 -2
  288. data/src/core/lib/event_engine/time_util.h +1 -2
  289. data/src/core/lib/event_engine/trace.h +7 -19
  290. data/src/core/lib/event_engine/utils.cc +1 -2
  291. data/src/core/lib/event_engine/utils.h +1 -2
  292. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -30
  293. data/src/core/lib/event_engine/windows/iocp.cc +10 -8
  294. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  295. data/src/core/lib/event_engine/windows/win_socket.cc +32 -22
  296. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  297. data/src/core/lib/event_engine/windows/windows_endpoint.cc +24 -25
  298. data/src/core/lib/event_engine/windows/windows_engine.cc +205 -90
  299. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  300. data/src/core/lib/event_engine/windows/windows_listener.cc +19 -29
  301. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -2
  302. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +1 -2
  303. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -2
  304. data/src/core/lib/experiments/config.cc +16 -14
  305. data/src/core/lib/experiments/config.h +2 -2
  306. data/src/core/lib/experiments/experiments.cc +57 -158
  307. data/src/core/lib/experiments/experiments.h +35 -52
  308. data/src/core/lib/gprpp/atomic_utils.h +2 -2
  309. data/src/core/lib/gprpp/bitset.h +3 -3
  310. data/src/core/lib/gprpp/chunked_vector.h +6 -5
  311. data/src/core/lib/gprpp/construct_destruct.h +2 -2
  312. data/src/core/lib/gprpp/crash.cc +3 -5
  313. data/src/core/lib/gprpp/crash.h +2 -2
  314. data/src/core/lib/gprpp/debug_location.h +2 -2
  315. data/src/core/lib/gprpp/directory_reader.h +2 -2
  316. data/src/core/lib/gprpp/down_cast.h +3 -3
  317. data/src/core/lib/gprpp/dual_ref_counted.h +54 -41
  318. data/src/core/lib/gprpp/dump_args.cc +54 -0
  319. data/src/core/lib/gprpp/dump_args.h +69 -0
  320. data/src/core/lib/gprpp/env.h +2 -2
  321. data/src/core/lib/gprpp/examine_stack.cc +2 -2
  322. data/src/core/lib/gprpp/examine_stack.h +2 -2
  323. data/src/core/lib/gprpp/fork.cc +1 -2
  324. data/src/core/lib/gprpp/fork.h +2 -2
  325. data/src/core/lib/gprpp/glob.cc +70 -0
  326. data/src/core/lib/gprpp/glob.h +29 -0
  327. data/src/core/lib/gprpp/host_port.cc +6 -4
  328. data/src/core/lib/gprpp/host_port.h +2 -2
  329. data/src/core/lib/gprpp/linux/env.cc +2 -2
  330. data/src/core/lib/gprpp/load_file.cc +1 -2
  331. data/src/core/lib/gprpp/load_file.h +2 -2
  332. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  333. data/src/core/lib/gprpp/match.h +2 -2
  334. data/src/core/lib/gprpp/memory.h +1 -2
  335. data/src/core/lib/gprpp/mpscq.cc +2 -2
  336. data/src/core/lib/gprpp/mpscq.h +5 -4
  337. data/src/core/lib/gprpp/no_destruct.h +2 -2
  338. data/src/core/lib/gprpp/notification.h +2 -2
  339. data/src/core/lib/gprpp/orphanable.h +2 -2
  340. data/src/core/lib/gprpp/overload.h +2 -2
  341. data/src/core/lib/gprpp/per_cpu.cc +2 -3
  342. data/src/core/lib/gprpp/per_cpu.h +1 -2
  343. data/src/core/lib/gprpp/posix/directory_reader.cc +2 -2
  344. data/src/core/lib/gprpp/posix/stat.cc +8 -7
  345. data/src/core/lib/gprpp/posix/thd.cc +18 -19
  346. data/src/core/lib/gprpp/ref_counted.h +35 -26
  347. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -2
  348. data/src/core/lib/gprpp/ref_counted_string.cc +1 -2
  349. data/src/core/lib/gprpp/ref_counted_string.h +2 -2
  350. data/src/core/lib/gprpp/single_set_ptr.h +9 -6
  351. data/src/core/lib/gprpp/sorted_pack.h +2 -2
  352. data/src/core/lib/gprpp/stat.h +2 -2
  353. data/src/core/lib/gprpp/status_helper.cc +14 -33
  354. data/src/core/lib/gprpp/status_helper.h +5 -33
  355. data/src/core/lib/gprpp/strerror.cc +2 -2
  356. data/src/core/lib/gprpp/strerror.h +2 -2
  357. data/src/core/lib/gprpp/sync.h +5 -5
  358. data/src/core/lib/gprpp/table.h +2 -2
  359. data/src/core/lib/gprpp/tchar.cc +2 -2
  360. data/src/core/lib/gprpp/thd.h +7 -7
  361. data/src/core/lib/gprpp/time.cc +9 -10
  362. data/src/core/lib/gprpp/time.h +4 -4
  363. data/src/core/lib/gprpp/time_averaged_stats.cc +2 -2
  364. data/src/core/lib/gprpp/time_util.cc +5 -4
  365. data/src/core/lib/gprpp/time_util.h +1 -2
  366. data/src/core/lib/gprpp/unique_type_name.h +3 -3
  367. data/src/core/lib/gprpp/uuid_v4.cc +2 -2
  368. data/src/core/lib/gprpp/uuid_v4.h +2 -2
  369. data/src/core/lib/gprpp/validation_errors.cc +12 -3
  370. data/src/core/lib/gprpp/validation_errors.h +13 -2
  371. data/src/core/lib/gprpp/windows/stat.cc +6 -5
  372. data/src/core/lib/gprpp/windows/thd.cc +7 -4
  373. data/src/core/lib/gprpp/work_serializer.cc +53 -62
  374. data/src/core/lib/gprpp/work_serializer.h +1 -2
  375. data/src/core/lib/iomgr/buffer_list.cc +5 -4
  376. data/src/core/lib/iomgr/buffer_list.h +1 -2
  377. data/src/core/lib/iomgr/call_combiner.cc +23 -31
  378. data/src/core/lib/iomgr/call_combiner.h +2 -5
  379. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  380. data/src/core/lib/iomgr/closure.cc +2 -2
  381. data/src/core/lib/iomgr/closure.h +6 -7
  382. data/src/core/lib/iomgr/combiner.cc +13 -14
  383. data/src/core/lib/iomgr/combiner.h +1 -4
  384. data/src/core/lib/iomgr/endpoint.cc +1 -7
  385. data/src/core/lib/iomgr/endpoint.h +1 -4
  386. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -46
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -5
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -15
  389. data/src/core/lib/iomgr/error.cc +16 -24
  390. data/src/core/lib/iomgr/error.h +4 -4
  391. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  392. data/src/core/lib/iomgr/ev_epoll1_linux.cc +58 -56
  393. data/src/core/lib/iomgr/ev_poll_posix.cc +47 -38
  394. data/src/core/lib/iomgr/ev_posix.cc +9 -11
  395. data/src/core/lib/iomgr/ev_posix.h +11 -8
  396. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
  397. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  398. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +17 -31
  399. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  400. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  401. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  402. data/src/core/lib/iomgr/exec_ctx.cc +7 -7
  403. data/src/core/lib/iomgr/exec_ctx.h +7 -5
  404. data/src/core/lib/iomgr/executor.cc +13 -23
  405. data/src/core/lib/iomgr/executor.h +1 -1
  406. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  407. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  408. data/src/core/lib/iomgr/grpc_if_nametoindex.h +2 -2
  409. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  410. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  411. data/src/core/lib/iomgr/internal_errqueue.cc +5 -4
  412. data/src/core/lib/iomgr/iocp_windows.cc +13 -9
  413. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  414. data/src/core/lib/iomgr/iomgr.cc +14 -19
  415. data/src/core/lib/iomgr/iomgr.h +2 -2
  416. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  417. data/src/core/lib/iomgr/iomgr_internal.h +2 -2
  418. data/src/core/lib/iomgr/iomgr_windows.cc +4 -2
  419. data/src/core/lib/iomgr/lockfree_event.cc +7 -8
  420. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  421. data/src/core/lib/iomgr/polling_entity.cc +5 -5
  422. data/src/core/lib/iomgr/pollset.cc +2 -2
  423. data/src/core/lib/iomgr/pollset.h +0 -3
  424. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  425. data/src/core/lib/iomgr/pollset_set_windows.cc +2 -2
  426. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  427. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  428. data/src/core/lib/iomgr/python_util.h +1 -2
  429. data/src/core/lib/iomgr/resolve_address.cc +1 -2
  430. data/src/core/lib/iomgr/resolve_address.h +1 -2
  431. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  432. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  433. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  434. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  435. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  436. data/src/core/lib/iomgr/resolved_address.h +2 -2
  437. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -1
  438. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  439. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  440. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  441. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  442. data/src/core/lib/iomgr/socket_utils.h +2 -2
  443. data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -33
  444. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  445. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  446. data/src/core/lib/iomgr/socket_windows.cc +8 -9
  447. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  448. data/src/core/lib/iomgr/tcp_client.h +1 -2
  449. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  450. data/src/core/lib/iomgr/tcp_client_posix.cc +14 -19
  451. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  452. data/src/core/lib/iomgr/tcp_posix.cc +99 -125
  453. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  454. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  455. data/src/core/lib/iomgr/tcp_server.h +1 -2
  456. data/src/core/lib/iomgr/tcp_server_posix.cc +35 -38
  457. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  458. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +10 -12
  459. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -8
  460. data/src/core/lib/iomgr/tcp_server_windows.cc +25 -30
  461. data/src/core/lib/iomgr/tcp_windows.cc +33 -47
  462. data/src/core/lib/iomgr/timer.cc +2 -2
  463. data/src/core/lib/iomgr/timer.h +1 -2
  464. data/src/core/lib/iomgr/timer_generic.cc +20 -23
  465. data/src/core/lib/iomgr/timer_generic.h +0 -1
  466. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  467. data/src/core/lib/iomgr/timer_manager.cc +21 -33
  468. data/src/core/lib/iomgr/timer_manager.h +2 -2
  469. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -2
  470. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -2
  471. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +3 -1
  472. data/src/core/lib/iomgr/vsock.cc +3 -3
  473. data/src/core/lib/iomgr/vsock.h +1 -2
  474. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  475. data/src/core/lib/matchers/matchers.cc +2 -2
  476. data/src/core/lib/matchers/matchers.h +2 -2
  477. data/src/core/lib/promise/activity.cc +4 -3
  478. data/src/core/lib/promise/activity.h +34 -11
  479. data/src/core/lib/promise/all_ok.h +2 -2
  480. data/src/core/lib/promise/arena_promise.h +2 -2
  481. data/src/core/lib/promise/cancel_callback.h +24 -0
  482. data/src/core/lib/promise/context.h +14 -3
  483. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  484. data/src/core/lib/promise/detail/join_state.h +365 -408
  485. data/src/core/lib/promise/detail/promise_factory.h +2 -2
  486. data/src/core/lib/promise/detail/promise_like.h +15 -8
  487. data/src/core/lib/promise/detail/seq_state.h +1192 -1192
  488. data/src/core/lib/promise/detail/status.h +4 -3
  489. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -2
  490. data/src/core/lib/promise/for_each.h +91 -30
  491. data/src/core/lib/promise/if.h +2 -2
  492. data/src/core/lib/promise/interceptor_list.h +9 -10
  493. data/src/core/lib/promise/latch.h +17 -17
  494. data/src/core/lib/promise/loop.h +2 -2
  495. data/src/core/lib/promise/map.h +19 -2
  496. data/src/core/lib/promise/observable.h +182 -0
  497. data/src/core/lib/promise/party.cc +22 -23
  498. data/src/core/lib/promise/party.h +19 -17
  499. data/src/core/lib/promise/pipe.h +31 -50
  500. data/src/core/lib/promise/poll.h +6 -5
  501. data/src/core/lib/promise/prioritized_race.h +2 -2
  502. data/src/core/lib/promise/promise.h +3 -2
  503. data/src/core/lib/promise/race.h +2 -2
  504. data/src/core/lib/promise/seq.h +2 -2
  505. data/src/core/lib/promise/sleep.cc +1 -2
  506. data/src/core/lib/promise/sleep.h +1 -2
  507. data/src/core/lib/promise/status_flag.h +10 -8
  508. data/src/core/lib/promise/try_join.h +4 -3
  509. data/src/core/lib/promise/try_seq.h +4 -3
  510. data/src/core/lib/resource_quota/api.cc +1 -2
  511. data/src/core/lib/resource_quota/api.h +1 -2
  512. data/src/core/lib/resource_quota/arena.cc +57 -81
  513. data/src/core/lib/resource_quota/arena.h +119 -211
  514. data/src/core/lib/resource_quota/connection_quota.cc +8 -9
  515. data/src/core/lib/resource_quota/connection_quota.h +2 -2
  516. data/src/core/lib/resource_quota/memory_quota.cc +20 -21
  517. data/src/core/lib/resource_quota/memory_quota.h +6 -7
  518. data/src/core/lib/resource_quota/periodic_update.cc +3 -3
  519. data/src/core/lib/resource_quota/periodic_update.h +2 -2
  520. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  521. data/src/core/lib/resource_quota/resource_quota.h +2 -3
  522. data/src/core/lib/resource_quota/thread_quota.cc +4 -3
  523. data/src/core/lib/resource_quota/thread_quota.h +2 -2
  524. data/src/core/lib/security/authorization/audit_logging.cc +6 -6
  525. data/src/core/lib/security/authorization/audit_logging.h +1 -2
  526. data/src/core/lib/security/authorization/authorization_engine.h +2 -2
  527. data/src/core/lib/security/authorization/authorization_policy_provider.h +2 -3
  528. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -3
  529. data/src/core/lib/security/authorization/evaluate_args.cc +8 -11
  530. data/src/core/lib/security/authorization/evaluate_args.h +1 -2
  531. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -3
  532. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -2
  533. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -11
  534. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +8 -8
  535. data/src/core/lib/security/authorization/matchers.cc +4 -5
  536. data/src/core/lib/security/authorization/matchers.h +2 -2
  537. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  538. data/src/core/lib/security/authorization/rbac_policy.h +1 -2
  539. data/src/core/lib/security/authorization/stdout_logger.cc +4 -3
  540. data/src/core/lib/security/authorization/stdout_logger.h +1 -2
  541. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +4 -4
  542. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
  543. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -2
  544. data/src/core/lib/security/context/security_context.cc +17 -16
  545. data/src/core/lib/security/context/security_context.h +33 -10
  546. data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -2
  547. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
  548. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -3
  549. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  550. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -6
  551. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
  552. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  553. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  554. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  555. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  556. data/src/core/lib/security/credentials/channel_creds_registry.h +4 -4
  557. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +7 -5
  558. data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
  559. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
  560. data/src/core/lib/security/credentials/credentials.cc +10 -9
  561. data/src/core/lib/security/credentials/credentials.h +5 -4
  562. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +9 -8
  563. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -4
  564. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -2
  565. data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -2
  566. data/src/core/lib/security/credentials/external/external_account_credentials.cc +16 -17
  567. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -5
  568. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +3 -4
  569. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +2 -2
  570. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -7
  571. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
  572. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  573. data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
  574. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -5
  575. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +19 -18
  576. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  577. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -5
  578. data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
  579. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  580. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  581. data/src/core/lib/security/credentials/jwt/json_token.cc +19 -19
  582. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  583. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -8
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +3 -3
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +65 -69
  586. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  587. data/src/core/lib/security/credentials/local/local_credentials.cc +1 -2
  588. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  589. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  590. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +6 -6
  591. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -10
  592. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -5
  593. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +28 -34
  594. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
  595. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +26 -25
  596. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -2
  597. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +2 -2
  598. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +28 -36
  599. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -4
  600. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +3 -3
  601. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +5 -4
  602. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -22
  603. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -0
  604. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +5 -7
  605. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
  606. data/src/core/lib/security/credentials/tls/tls_credentials.cc +15 -18
  607. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  608. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  609. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  610. data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -8
  611. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  612. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +27 -30
  613. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  614. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -17
  615. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  616. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -5
  617. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
  618. data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
  619. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -8
  620. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  621. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  622. data/src/core/lib/security/security_connector/local/local_security_connector.cc +19 -23
  623. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  624. data/src/core/lib/security/security_connector/security_connector.cc +8 -10
  625. data/src/core/lib/security/security_connector/security_connector.h +4 -6
  626. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -25
  627. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -2
  628. data/src/core/lib/security/security_connector/ssl_utils.cc +29 -30
  629. data/src/core/lib/security/security_connector/ssl_utils.h +1 -2
  630. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -53
  631. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
  632. data/src/core/lib/security/transport/auth_filters.h +14 -13
  633. data/src/core/lib/security/transport/client_auth_filter.cc +13 -18
  634. data/src/core/lib/security/transport/server_auth_filter.cc +10 -13
  635. data/src/core/lib/security/util/json_util.cc +1 -2
  636. data/src/core/lib/security/util/json_util.h +1 -1
  637. data/src/core/lib/slice/percent_encoding.cc +4 -3
  638. data/src/core/lib/slice/slice.cc +11 -10
  639. data/src/core/lib/slice/slice.h +5 -5
  640. data/src/core/lib/slice/slice_buffer.cc +15 -14
  641. data/src/core/lib/slice/slice_buffer.h +1 -2
  642. data/src/core/lib/slice/slice_internal.h +3 -3
  643. data/src/core/lib/slice/slice_refcount.h +3 -6
  644. data/src/core/lib/slice/slice_string_helpers.cc +3 -3
  645. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  646. data/src/core/lib/surface/api_trace.h +2 -5
  647. data/src/core/lib/surface/byte_buffer.cc +1 -2
  648. data/src/core/lib/surface/byte_buffer_reader.cc +4 -3
  649. data/src/core/lib/surface/call.cc +102 -3899
  650. data/src/core/lib/surface/call.h +158 -90
  651. data/src/core/lib/surface/call_details.cc +1 -2
  652. data/src/core/lib/surface/call_log_batch.cc +2 -3
  653. data/src/core/lib/surface/call_test_only.h +1 -2
  654. data/src/core/lib/surface/call_utils.cc +276 -0
  655. data/src/core/lib/surface/call_utils.h +449 -0
  656. data/src/core/lib/surface/channel.cc +17 -11
  657. data/src/core/lib/surface/channel.h +12 -10
  658. data/src/core/lib/surface/channel_create.cc +18 -9
  659. data/src/core/lib/surface/channel_create.h +5 -4
  660. data/src/core/lib/surface/channel_init.cc +27 -83
  661. data/src/core/lib/surface/channel_init.h +27 -100
  662. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  663. data/src/core/lib/surface/client_call.cc +419 -0
  664. data/src/core/lib/surface/client_call.h +180 -0
  665. data/src/core/lib/surface/completion_queue.cc +45 -51
  666. data/src/core/lib/surface/completion_queue.h +1 -10
  667. data/src/core/lib/surface/completion_queue_factory.cc +9 -8
  668. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  669. data/src/core/lib/surface/event_string.cc +2 -2
  670. data/src/core/lib/surface/event_string.h +1 -2
  671. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  672. data/src/core/lib/surface/filter_stack_call.h +369 -0
  673. data/src/core/lib/surface/init.cc +8 -8
  674. data/src/core/lib/surface/init_internally.cc +2 -2
  675. data/src/core/lib/surface/lame_client.cc +10 -13
  676. data/src/core/lib/surface/lame_client.h +6 -11
  677. data/src/core/lib/surface/legacy_channel.cc +52 -39
  678. data/src/core/lib/surface/legacy_channel.h +11 -21
  679. data/src/core/lib/surface/metadata_array.cc +1 -2
  680. data/src/core/lib/surface/server_call.cc +222 -0
  681. data/src/core/lib/surface/server_call.h +167 -0
  682. data/src/core/lib/surface/validate_metadata.cc +1 -2
  683. data/src/core/lib/surface/validate_metadata.h +3 -3
  684. data/src/core/lib/surface/version.cc +3 -4
  685. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  686. data/src/core/lib/transport/bdp_estimator.h +6 -8
  687. data/src/core/lib/transport/{call_size_estimator.cc → call_arena_allocator.cc} +3 -3
  688. data/src/core/lib/transport/{call_size_estimator.h → call_arena_allocator.h} +29 -6
  689. data/src/core/lib/transport/call_destination.h +76 -0
  690. data/src/core/lib/transport/call_filters.cc +54 -21
  691. data/src/core/lib/transport/call_filters.h +240 -84
  692. data/src/core/lib/transport/call_final_info.cc +2 -2
  693. data/src/core/lib/transport/call_final_info.h +1 -2
  694. data/src/core/lib/transport/call_spine.cc +17 -19
  695. data/src/core/lib/transport/call_spine.h +238 -215
  696. data/src/core/lib/transport/connectivity_state.cc +9 -12
  697. data/src/core/lib/transport/connectivity_state.h +1 -4
  698. data/src/core/lib/transport/error_utils.cc +1 -2
  699. data/src/core/lib/transport/error_utils.h +1 -2
  700. data/src/core/lib/transport/interception_chain.cc +155 -0
  701. data/src/core/lib/transport/interception_chain.h +236 -0
  702. data/src/core/lib/transport/message.cc +1 -2
  703. data/src/core/lib/transport/metadata.cc +2 -2
  704. data/src/core/lib/transport/metadata_batch.cc +2 -2
  705. data/src/core/lib/transport/metadata_batch.h +43 -5
  706. data/src/core/lib/transport/metadata_compression_traits.h +2 -2
  707. data/src/core/lib/transport/metadata_info.cc +2 -2
  708. data/src/core/lib/transport/metadata_info.h +1 -1
  709. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  710. data/src/core/lib/transport/parsed_metadata.h +1 -2
  711. data/src/core/lib/transport/simple_slice_based_metadata.h +2 -2
  712. data/src/core/lib/transport/status_conversion.cc +2 -2
  713. data/src/core/lib/transport/status_conversion.h +1 -2
  714. data/src/core/lib/transport/timeout_encoding.cc +5 -5
  715. data/src/core/lib/transport/timeout_encoding.h +2 -2
  716. data/src/core/lib/transport/transport.cc +4 -8
  717. data/src/core/lib/transport/transport.h +80 -74
  718. data/src/core/lib/transport/transport_op_string.cc +1 -2
  719. data/src/core/lib/uri/uri_parser.cc +3 -3
  720. data/src/core/lib/uri/uri_parser.h +2 -2
  721. data/src/core/load_balancing/address_filtering.cc +2 -2
  722. data/src/core/load_balancing/address_filtering.h +2 -2
  723. data/src/core/load_balancing/backend_metric_data.h +2 -2
  724. data/src/core/load_balancing/backend_metric_parser.cc +2 -2
  725. data/src/core/load_balancing/backend_metric_parser.h +2 -2
  726. data/src/core/load_balancing/child_policy_handler.cc +14 -14
  727. data/src/core/load_balancing/child_policy_handler.h +2 -2
  728. data/src/core/load_balancing/delegating_helper.h +2 -3
  729. data/src/core/load_balancing/endpoint_list.cc +11 -13
  730. data/src/core/load_balancing/endpoint_list.h +16 -10
  731. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +29 -30
  732. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +20 -8
  733. data/src/core/load_balancing/grpclb/grpclb.cc +65 -70
  734. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +3 -3
  735. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  736. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +1 -2
  737. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +1 -2
  738. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  739. data/src/core/load_balancing/grpclb/load_balancer_api.h +2 -3
  740. data/src/core/load_balancing/health_check_client.cc +14 -18
  741. data/src/core/load_balancing/health_check_client.h +2 -2
  742. data/src/core/load_balancing/health_check_client_internal.h +1 -2
  743. data/src/core/load_balancing/lb_policy.cc +7 -10
  744. data/src/core/load_balancing/lb_policy.h +20 -5
  745. data/src/core/load_balancing/lb_policy_factory.h +3 -3
  746. data/src/core/load_balancing/lb_policy_registry.cc +5 -6
  747. data/src/core/load_balancing/lb_policy_registry.h +3 -3
  748. data/src/core/load_balancing/oob_backend_metric.cc +6 -9
  749. data/src/core/load_balancing/oob_backend_metric.h +2 -2
  750. data/src/core/load_balancing/oob_backend_metric_internal.h +1 -2
  751. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +36 -38
  752. data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -5
  753. data/src/core/load_balancing/pick_first/pick_first.cc +1141 -156
  754. data/src/core/load_balancing/priority/priority.cc +41 -38
  755. data/src/core/load_balancing/ring_hash/ring_hash.cc +45 -30
  756. data/src/core/load_balancing/ring_hash/ring_hash.h +5 -5
  757. data/src/core/load_balancing/rls/rls.cc +106 -99
  758. data/src/core/load_balancing/round_robin/round_robin.cc +43 -35
  759. data/src/core/load_balancing/subchannel_interface.h +1 -2
  760. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  761. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -2
  762. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +79 -58
  763. data/src/core/load_balancing/weighted_target/weighted_target.cc +29 -32
  764. data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
  765. data/src/core/load_balancing/xds/cds.cc +25 -28
  766. data/src/core/load_balancing/xds/xds_cluster_impl.cc +28 -28
  767. data/src/core/load_balancing/xds/xds_cluster_manager.cc +17 -20
  768. data/src/core/load_balancing/xds/xds_override_host.cc +46 -47
  769. data/src/core/load_balancing/xds/xds_override_host.h +5 -5
  770. data/src/core/load_balancing/xds/xds_wrr_locality.cc +12 -15
  771. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -10
  772. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +1 -2
  773. data/src/core/resolver/binder/binder_resolver.cc +7 -6
  774. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  775. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -2
  776. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
  777. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  778. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +36 -35
  779. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +20 -27
  780. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -7
  781. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  782. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  783. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -10
  784. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -14
  785. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -3
  786. data/src/core/resolver/dns/event_engine/service_config_helper.cc +7 -7
  787. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  788. data/src/core/resolver/dns/native/dns_resolver.cc +11 -13
  789. data/src/core/resolver/endpoint_addresses.cc +5 -5
  790. data/src/core/resolver/endpoint_addresses.h +2 -2
  791. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  792. data/src/core/resolver/fake/fake_resolver.h +2 -3
  793. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +22 -23
  794. data/src/core/resolver/polling_resolver.cc +35 -40
  795. data/src/core/resolver/polling_resolver.h +1 -2
  796. data/src/core/resolver/resolver.cc +3 -7
  797. data/src/core/resolver/resolver.h +2 -4
  798. data/src/core/resolver/resolver_factory.h +3 -3
  799. data/src/core/resolver/resolver_registry.cc +11 -13
  800. data/src/core/resolver/resolver_registry.h +3 -3
  801. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
  802. data/src/core/resolver/xds/xds_dependency_manager.cc +27 -27
  803. data/src/core/resolver/xds/xds_dependency_manager.h +7 -7
  804. data/src/core/resolver/xds/xds_resolver.cc +32 -39
  805. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -2
  806. data/src/core/{lib/surface → server}/server.cc +306 -424
  807. data/src/core/{lib/surface → server}/server.h +43 -26
  808. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +16 -20
  809. data/src/core/{lib/channel → server}/server_call_tracer_filter.h +3 -3
  810. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +6 -6
  811. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +39 -40
  812. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  813. data/src/core/{lib/surface → server}/server_interface.h +6 -4
  814. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +4 -4
  815. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +5 -6
  816. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +24 -26
  817. data/src/core/service_config/service_config.h +2 -3
  818. data/src/core/service_config/service_config_call_data.h +15 -13
  819. data/src/core/service_config/service_config_channel_arg_filter.cc +12 -11
  820. data/src/core/service_config/service_config_impl.cc +7 -7
  821. data/src/core/service_config/service_config_impl.h +4 -4
  822. data/src/core/service_config/service_config_parser.cc +4 -8
  823. data/src/core/service_config/service_config_parser.h +3 -3
  824. data/src/core/{lib/channel → telemetry}/call_tracer.cc +25 -35
  825. data/src/core/{lib/channel → telemetry}/call_tracer.h +33 -11
  826. data/src/core/{lib/debug → telemetry}/histogram_view.cc +2 -2
  827. data/src/core/{lib/debug → telemetry}/histogram_view.h +5 -5
  828. data/src/core/telemetry/metrics.cc +178 -0
  829. data/src/core/telemetry/metrics.h +562 -0
  830. data/src/core/{lib/debug → telemetry}/stats.cc +3 -3
  831. data/src/core/{lib/debug → telemetry}/stats.h +7 -7
  832. data/src/core/{lib/debug → telemetry}/stats_data.cc +3 -3
  833. data/src/core/{lib/debug → telemetry}/stats_data.h +6 -6
  834. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +5 -5
  835. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -2
  836. data/src/core/tsi/alts/crypt/gsec.cc +1 -2
  837. data/src/core/tsi/alts/crypt/gsec.h +1 -2
  838. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  839. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -2
  840. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  841. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -2
  842. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -15
  843. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +2 -2
  844. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  845. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  846. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -2
  847. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -2
  848. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -2
  849. data/src/core/tsi/alts/frame_protector/frame_handler.h +2 -2
  850. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +63 -64
  851. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  852. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -4
  853. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -2
  854. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +54 -53
  855. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  856. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +7 -5
  857. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  858. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
  859. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -2
  860. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +10 -8
  861. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +2 -2
  862. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +6 -5
  863. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +2 -2
  864. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  865. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +10 -6
  866. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +1 -2
  867. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +2 -2
  868. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -7
  869. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +2 -2
  870. data/src/core/tsi/fake_transport_security.cc +20 -21
  871. data/src/core/tsi/local_transport_security.cc +7 -7
  872. data/src/core/tsi/local_transport_security.h +1 -2
  873. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +6 -5
  874. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -2
  875. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -2
  876. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +15 -14
  877. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +1 -2
  878. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -4
  879. data/src/core/tsi/ssl_transport_security.cc +96 -100
  880. data/src/core/tsi/ssl_transport_security.h +1 -2
  881. data/src/core/tsi/ssl_transport_security_utils.cc +85 -28
  882. data/src/core/tsi/ssl_transport_security_utils.h +12 -2
  883. data/src/core/tsi/ssl_types.h +2 -2
  884. data/src/core/tsi/transport_security.cc +1 -6
  885. data/src/core/tsi/transport_security.h +2 -4
  886. data/src/core/tsi/transport_security_grpc.cc +2 -2
  887. data/src/core/tsi/transport_security_grpc.h +1 -2
  888. data/src/core/tsi/transport_security_interface.h +2 -6
  889. data/src/core/{lib/gpr → util}/alloc.cc +3 -1
  890. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  891. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  892. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  893. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +26 -26
  894. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +9 -9
  895. data/src/core/{lib/http → util/http_client}/format_request.cc +2 -2
  896. data/src/core/{lib/http → util/http_client}/format_request.h +4 -4
  897. data/src/core/{lib/http → util/http_client}/httpcli.cc +12 -13
  898. data/src/core/{lib/http → util/http_client}/httpcli.h +5 -5
  899. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +10 -10
  900. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +3 -3
  901. data/src/core/{lib/http → util/http_client}/parser.cc +6 -7
  902. data/src/core/{lib/http → util/http_client}/parser.h +3 -5
  903. data/src/core/{lib → util}/json/json.h +3 -3
  904. data/src/core/{lib → util}/json/json_args.h +3 -3
  905. data/src/core/{lib → util}/json/json_channel_args.h +4 -4
  906. data/src/core/{lib → util}/json/json_object_loader.cc +1 -1
  907. data/src/core/{lib → util}/json/json_object_loader.h +5 -5
  908. data/src/core/{lib → util}/json/json_reader.cc +4 -3
  909. data/src/core/{lib → util}/json/json_reader.h +4 -4
  910. data/src/core/{lib → util}/json/json_util.cc +3 -3
  911. data/src/core/{lib → util}/json/json_util.h +4 -4
  912. data/src/core/{lib → util}/json/json_writer.cc +1 -1
  913. data/src/core/{lib → util}/json/json_writer.h +4 -4
  914. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  915. data/src/core/util/log.cc +167 -0
  916. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  917. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  918. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  919. data/src/core/{lib/gpr → util}/posix/sync.cc +25 -23
  920. data/src/core/{lib/gpr → util}/posix/time.cc +10 -7
  921. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +5 -3
  922. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  923. data/src/core/{lib/gpr → util}/string.cc +2 -2
  924. data/src/core/{lib/gpr → util}/string.h +3 -3
  925. data/src/core/{lib/gpr → util}/sync.cc +5 -3
  926. data/src/core/{lib/gpr → util}/time.cc +10 -8
  927. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  928. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  929. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  930. data/src/core/{lib/gpr → util}/useful.h +3 -3
  931. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  932. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  933. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  934. data/src/core/{lib/gpr → util}/windows/sync.cc +3 -1
  935. data/src/core/{lib/gpr → util}/windows/time.cc +5 -2
  936. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  937. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +5 -6
  938. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +8 -9
  939. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +5 -6
  940. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +7 -8
  941. data/src/core/{ext/xds → xds/grpc}/upb_utils.h +5 -5
  942. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +4 -4
  943. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +7 -7
  944. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +7 -8
  945. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +14 -14
  946. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +5 -5
  947. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +5 -6
  948. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +51 -34
  949. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +10 -11
  950. data/src/core/{ext/xds → xds/grpc}/xds_cluster.cc +22 -14
  951. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +12 -13
  952. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +6 -6
  953. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +7 -7
  954. data/src/core/{ext/xds → xds/grpc}/xds_common_types.cc +6 -7
  955. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +7 -7
  956. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.cc +11 -12
  957. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +9 -9
  958. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +3 -3
  959. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +5 -5
  960. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +6 -7
  961. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +8 -8
  962. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.cc +8 -9
  963. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.h +9 -9
  964. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +9 -10
  965. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +8 -8
  966. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +7 -8
  967. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +8 -8
  968. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +3 -4
  969. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -7
  970. data/src/core/{ext/xds → xds/grpc}/xds_listener.cc +12 -14
  971. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +12 -12
  972. data/src/core/{ext/xds → xds/grpc}/xds_route_config.cc +23 -24
  973. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +11 -11
  974. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +6 -6
  975. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +8 -8
  976. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +16 -16
  977. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +7 -8
  978. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +9 -14
  979. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +7 -7
  980. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -4
  981. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +6 -6
  982. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  983. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +60 -62
  984. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +10 -14
  985. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.cc +23 -22
  986. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.h +8 -8
  987. data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +7 -5
  988. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +6 -6
  989. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +7 -7
  990. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +6 -6
  991. data/src/ruby/bin/math_pb.rb +1 -22
  992. data/src/ruby/ext/grpc/rb_call.c +8 -1
  993. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  994. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  995. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  996. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  997. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  998. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  999. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +130 -130
  1000. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +198 -197
  1001. data/src/ruby/ext/grpc/rb_server.c +40 -22
  1002. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1003. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  1004. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1005. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1006. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -0
  1007. data/src/ruby/lib/grpc/version.rb +1 -1
  1008. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1009. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1010. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1011. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1012. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1013. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1014. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1015. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  1016. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  1017. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  1018. data/third_party/abseil-cpp/absl/log/internal/check_op.h +420 -0
  1019. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
  1021. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  1022. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
  1023. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  1024. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  1025. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  1026. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  1027. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
  1028. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  1029. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  1030. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  1031. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  1032. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  1033. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  1034. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -15
  1035. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +7 -61
  1036. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  1037. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  1038. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  1039. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  1040. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
  1041. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
  1042. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  1043. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  1044. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  1045. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  1046. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  1047. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  1048. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  1050. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  1051. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  1052. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  1053. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  1054. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  1055. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  1056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +21 -0
  1057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +31 -7
  1058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  1059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +1 -1
  1060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +3 -3
  1061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  1062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +46 -2
  1063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +8 -5
  1064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  1065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +1 -1
  1066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +2 -2
  1067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +14 -7
  1068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +2 -1
  1069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  1070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +11 -7
  1071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +5 -0
  1072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +5 -1
  1073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  1074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +2 -1
  1075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +11 -11
  1076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +22 -8
  1077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +6 -4
  1078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +3 -6
  1079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
  1080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +4 -4
  1081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +3 -3
  1082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -4
  1083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +7 -0
  1084. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -0
  1085. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -27
  1086. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  1087. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
  1088. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -9
  1089. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -17
  1090. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +44 -41
  1091. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  1092. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  1093. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  1094. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  1095. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
  1096. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1097. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  1098. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  1099. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  1100. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  1101. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  1102. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  1103. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
  1104. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
  1105. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  1106. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  1107. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  1108. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
  1109. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
  1110. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  1111. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
  1112. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  1113. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  1114. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  1115. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  1116. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  1117. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  1118. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +131 -0
  1119. data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
  1120. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  1121. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  1122. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +63 -53
  1123. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  1124. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -12
  1125. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +358 -102
  1126. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  1127. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  1128. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  1129. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
  1130. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -8
  1131. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +4 -4
  1132. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  1133. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +19 -18
  1134. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  1135. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -58
  1136. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  1137. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  1138. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +69 -16
  1139. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +145 -114
  1140. data/third_party/boringssl-with-bazel/src/ssl/internal.h +243 -189
  1141. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +1 -1
  1142. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  1143. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
  1144. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  1145. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  1146. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  1147. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +2 -1
  1148. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +108 -81
  1149. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
  1150. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  1151. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +1 -1
  1152. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  1153. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
  1154. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +36 -3
  1155. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +53 -18
  1156. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +1 -1
  1157. metadata +207 -196
  1158. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  1159. data/src/core/client_channel/client_channel_channelz.h +0 -85
  1160. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  1161. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  1162. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  1163. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  1164. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  1165. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  1166. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  1167. data/src/core/lib/channel/context.h +0 -77
  1168. data/src/core/lib/channel/metrics.cc +0 -396
  1169. data/src/core/lib/channel/metrics.h +0 -406
  1170. data/src/core/lib/event_engine/trace.cc +0 -25
  1171. data/src/core/lib/gpr/log.cc +0 -166
  1172. data/src/core/lib/gpr/log_internal.h +0 -55
  1173. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  1174. data/src/core/lib/promise/trace.cc +0 -20
  1175. data/src/core/lib/promise/trace.h +0 -24
  1176. data/src/core/lib/resource_quota/trace.cc +0 -19
  1177. data/src/core/lib/resource_quota/trace.h +0 -24
  1178. data/src/core/lib/security/transport/tsi_error.cc +0 -31
  1179. data/src/core/lib/security/transport/tsi_error.h +0 -30
  1180. data/src/core/lib/slice/slice_refcount.cc +0 -20
  1181. data/src/core/lib/surface/api_trace.cc +0 -25
  1182. data/src/core/lib/surface/call_trace.h +0 -24
  1183. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  1184. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  1185. data/src/core/lib/transport/batch_builder.cc +0 -170
  1186. data/src/core/lib/transport/batch_builder.h +0 -476
  1187. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  1188. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  1189. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  1190. data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
  1191. data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
  1192. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  1193. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  1194. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  1195. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  1196. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
@@ -19,8 +19,6 @@
19
19
  // promise-style. Most of this will be removed once the promises conversion is
20
20
  // completed.
21
21
 
22
- #include <grpc/support/port_platform.h>
23
-
24
22
  #include <stdint.h>
25
23
  #include <stdlib.h>
26
24
 
@@ -33,6 +31,8 @@
33
31
 
34
32
  #include "absl/container/inlined_vector.h"
35
33
  #include "absl/functional/function_ref.h"
34
+ #include "absl/log/check.h"
35
+ #include "absl/log/log.h"
36
36
  #include "absl/meta/type_traits.h"
37
37
  #include "absl/status/status.h"
38
38
  #include "absl/strings/string_view.h"
@@ -40,16 +40,16 @@
40
40
 
41
41
  #include <grpc/event_engine/event_engine.h>
42
42
  #include <grpc/grpc.h>
43
- #include <grpc/support/log.h>
43
+ #include <grpc/support/port_platform.h>
44
44
 
45
45
  #include "src/core/lib/channel/call_finalization.h"
46
46
  #include "src/core/lib/channel/channel_args.h"
47
47
  #include "src/core/lib/channel/channel_fwd.h"
48
48
  #include "src/core/lib/channel/channel_stack.h"
49
- #include "src/core/lib/channel/context.h"
50
49
  #include "src/core/lib/event_engine/default_event_engine.h"
51
50
  #include "src/core/lib/event_engine/event_engine_context.h" // IWYU pragma: keep
52
51
  #include "src/core/lib/gprpp/debug_location.h"
52
+ #include "src/core/lib/gprpp/match.h"
53
53
  #include "src/core/lib/gprpp/time.h"
54
54
  #include "src/core/lib/iomgr/call_combiner.h"
55
55
  #include "src/core/lib/iomgr/closure.h"
@@ -58,6 +58,7 @@
58
58
  #include "src/core/lib/iomgr/polling_entity.h"
59
59
  #include "src/core/lib/promise/activity.h"
60
60
  #include "src/core/lib/promise/arena_promise.h"
61
+ #include "src/core/lib/promise/cancel_callback.h"
61
62
  #include "src/core/lib/promise/context.h"
62
63
  #include "src/core/lib/promise/pipe.h"
63
64
  #include "src/core/lib/promise/poll.h"
@@ -74,30 +75,58 @@
74
75
 
75
76
  namespace grpc_core {
76
77
 
77
- // HACK: If a filter has this type as a base class it will be skipped in
78
- // v3 filter stacks. This is a temporary measure to allow the v3 filter stack
79
- // to be bought up whilst some tests inadvertently rely on hard to convert
80
- // filters.
81
- class HackyHackyHackySkipInV3FilterStacks {};
82
-
83
78
  class ChannelFilter {
84
79
  public:
85
80
  class Args {
86
81
  public:
87
82
  Args() : Args(nullptr, nullptr) {}
88
- explicit Args(grpc_channel_stack* channel_stack,
89
- grpc_channel_element* channel_element)
90
- : channel_stack_(channel_stack), channel_element_(channel_element) {}
83
+ Args(grpc_channel_stack* channel_stack,
84
+ grpc_channel_element* channel_element)
85
+ : impl_(ChannelStackBased{channel_stack, channel_element}) {}
86
+ // While we're moving to call-v3 we need to have access to
87
+ // grpc_channel_stack & friends here. That means that we can't rely on this
88
+ // type signature from interception_chain.h, which means that we need a way
89
+ // of constructing this object without naming it ===> implicit construction.
90
+ // TODO(ctiller): remove this once we're fully on call-v3
91
+ // NOLINTNEXTLINE(google-explicit-constructor)
92
+ Args(size_t instance_id) : impl_(V3Based{instance_id}) {}
93
+
94
+ ABSL_DEPRECATED("Direct access to channel stack is deprecated")
95
+ grpc_channel_stack* channel_stack() const {
96
+ return absl::get<ChannelStackBased>(impl_).channel_stack;
97
+ }
91
98
 
92
- grpc_channel_stack* channel_stack() const { return channel_stack_; }
93
- grpc_channel_element* uninitialized_channel_element() {
94
- return channel_element_;
99
+ // Get the instance id of this filter.
100
+ // This id is unique amongst all filters /of the same type/ and densely
101
+ // packed (starting at 0) for a given channel stack instantiation.
102
+ // eg. for a stack with filter types A B C A B D A the instance ids would be
103
+ // 0 0 0 1 1 0 2.
104
+ // This is useful for filters that need to store per-instance data in a
105
+ // parallel data structure.
106
+ size_t instance_id() const {
107
+ return Match(
108
+ impl_,
109
+ [](const ChannelStackBased& cs) {
110
+ return grpc_channel_stack_filter_instance_number(
111
+ cs.channel_stack, cs.channel_element);
112
+ },
113
+ [](const V3Based& v3) { return v3.instance_id; });
95
114
  }
96
115
 
97
116
  private:
98
117
  friend class ChannelFilter;
99
- grpc_channel_stack* channel_stack_;
100
- grpc_channel_element* channel_element_;
118
+
119
+ struct ChannelStackBased {
120
+ grpc_channel_stack* channel_stack;
121
+ grpc_channel_element* channel_element;
122
+ };
123
+
124
+ struct V3Based {
125
+ size_t instance_id;
126
+ };
127
+
128
+ using Impl = absl::variant<ChannelStackBased, V3Based>;
129
+ Impl impl_;
101
130
  };
102
131
 
103
132
  // Perform post-initialization step (if any).
@@ -318,32 +347,57 @@ auto MapResult(const NoInterceptor*, Promise x, void*) {
318
347
  template <typename Promise, typename Derived>
319
348
  auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
320
349
  FilterCallData<Derived>* call_data) {
321
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
322
- return Map(std::move(x), [call_data](ServerMetadataHandle md) {
323
- auto status = call_data->call.OnServerTrailingMetadata(*md);
324
- if (!status.ok()) return ServerMetadataFromStatus(status);
325
- return md;
326
- });
350
+ DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
351
+ return OnCancel(Map(std::move(x),
352
+ [call_data](ServerMetadataHandle md) {
353
+ auto status =
354
+ call_data->call.OnServerTrailingMetadata(*md);
355
+ if (!status.ok()) {
356
+ return ServerMetadataFromStatus(status);
357
+ }
358
+ return md;
359
+ }),
360
+ [call_data]() {
361
+ grpc_metadata_batch b;
362
+ b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
363
+ b.Set(GrpcCallWasCancelled(), true);
364
+ call_data->call.OnServerTrailingMetadata(b).IgnoreError();
365
+ });
327
366
  }
328
367
 
329
368
  template <typename Promise, typename Derived>
330
369
  auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
331
370
  FilterCallData<Derived>* call_data) {
332
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
333
- return Map(std::move(x), [call_data](ServerMetadataHandle md) {
334
- call_data->call.OnServerTrailingMetadata(*md);
335
- return md;
336
- });
371
+ DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
372
+ return OnCancel(Map(std::move(x),
373
+ [call_data](ServerMetadataHandle md) {
374
+ call_data->call.OnServerTrailingMetadata(*md);
375
+ return md;
376
+ }),
377
+ [call_data]() {
378
+ grpc_metadata_batch b;
379
+ b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
380
+ b.Set(GrpcCallWasCancelled(), true);
381
+ call_data->call.OnServerTrailingMetadata(b);
382
+ });
337
383
  }
338
384
 
339
385
  template <typename Promise, typename Derived>
340
386
  auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
341
387
  FilterCallData<Derived>* call_data) {
342
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
343
- return Map(std::move(x), [call_data](ServerMetadataHandle md) {
344
- call_data->call.OnServerTrailingMetadata(*md, call_data->channel);
345
- return md;
346
- });
388
+ DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
389
+ return OnCancel(
390
+ Map(std::move(x),
391
+ [call_data](ServerMetadataHandle md) {
392
+ call_data->call.OnServerTrailingMetadata(*md, call_data->channel);
393
+ return md;
394
+ }),
395
+ [call_data]() {
396
+ grpc_metadata_batch b;
397
+ b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
398
+ b.Set(GrpcCallWasCancelled(), true);
399
+ call_data->call.OnServerTrailingMetadata(b, call_data->channel);
400
+ });
347
401
  }
348
402
 
349
403
  template <typename Interceptor, typename Derived, typename SfinaeVoid = void>
@@ -452,241 +506,101 @@ template <typename Interceptor, typename Derived>
452
506
  auto RunCall(Interceptor interceptor, CallArgs call_args,
453
507
  NextPromiseFactory next_promise_factory,
454
508
  FilterCallData<Derived>* call_data) {
455
- GPR_DEBUG_ASSERT(interceptor == &Derived::Call::OnClientInitialMetadata);
509
+ DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata);
456
510
  return RunCallImpl<Interceptor, Derived>::Run(
457
511
  std::move(call_args), std::move(next_promise_factory), call_data);
458
512
  }
459
513
 
460
- inline void InterceptClientToServerMessage(const NoInterceptor*, void*,
461
- const CallArgs&) {}
462
-
463
514
  template <typename Derived>
464
- inline void InterceptClientToServerMessage(
465
- ServerMetadataHandle (Derived::Call::*fn)(const Message&),
466
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
467
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
468
- call_args.client_to_server_messages->InterceptAndMap(
469
- [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
470
- auto return_md = call_data->call.OnClientToServerMessage(*msg);
471
- if (return_md == nullptr) return std::move(msg);
472
- if (call_data->error_latch.is_set()) return absl::nullopt;
473
- call_data->error_latch.Set(std::move(return_md));
474
- return absl::nullopt;
475
- });
476
- }
477
-
478
- template <typename Derived>
479
- inline void InterceptClientToServerMessage(
480
- ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
481
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
482
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
483
- call_args.client_to_server_messages->InterceptAndMap(
484
- [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
485
- auto return_md =
486
- call_data->call.OnClientToServerMessage(*msg, call_data->channel);
487
- if (return_md == nullptr) return std::move(msg);
488
- if (call_data->error_latch.is_set()) return absl::nullopt;
489
- call_data->error_latch.Set(std::move(return_md));
490
- return absl::nullopt;
491
- });
492
- }
493
-
494
- template <typename Derived>
495
- inline void InterceptClientToServerMessage(
496
- MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
497
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
498
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
499
- call_args.client_to_server_messages->InterceptAndMap(
500
- [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
501
- return call_data->call.OnClientToServerMessage(std::move(msg),
502
- call_data->channel);
503
- });
504
- }
505
-
506
- template <typename Derived>
507
- inline void InterceptClientToServerMessage(
508
- absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
509
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
510
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
511
- call_args.client_to_server_messages->InterceptAndMap(
512
- [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
513
- auto r = call_data->call.OnClientToServerMessage(std::move(msg),
514
- call_data->channel);
515
- if (r.ok()) return std::move(*r);
516
- if (call_data->error_latch.is_set()) return absl::nullopt;
517
- call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
518
- return absl::nullopt;
519
- });
515
+ inline auto InterceptClientToServerMessageHandler(
516
+ void (Derived::Call::*fn)(const Message&),
517
+ FilterCallData<Derived>* call_data, const CallArgs&) {
518
+ DCHECK(fn == &Derived::Call::OnClientToServerMessage);
519
+ return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
520
+ call_data->call.OnClientToServerMessage(*msg);
521
+ return std::move(msg);
522
+ };
520
523
  }
521
524
 
522
- inline void InterceptClientToServerMessage(const NoInterceptor*, void*, void*,
523
- CallSpineInterface*) {}
524
-
525
525
  template <typename Derived>
526
- inline void InterceptClientToServerMessage(
526
+ inline auto InterceptClientToServerMessageHandler(
527
527
  ServerMetadataHandle (Derived::Call::*fn)(const Message&),
528
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
529
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
530
- call_spine->client_to_server_messages().receiver.InterceptAndMap(
531
- [call, call_spine](MessageHandle msg) -> absl::optional<MessageHandle> {
532
- auto return_md = call->OnClientToServerMessage(*msg);
533
- if (return_md == nullptr) return std::move(msg);
534
- return call_spine->Cancel(std::move(return_md));
535
- });
528
+ FilterCallData<Derived>* call_data, const CallArgs&) {
529
+ DCHECK(fn == &Derived::Call::OnClientToServerMessage);
530
+ return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
531
+ auto return_md = call_data->call.OnClientToServerMessage(*msg);
532
+ if (return_md == nullptr) return std::move(msg);
533
+ if (call_data->error_latch.is_set()) return absl::nullopt;
534
+ call_data->error_latch.Set(std::move(return_md));
535
+ return absl::nullopt;
536
+ };
536
537
  }
537
538
 
538
539
  template <typename Derived>
539
- inline void InterceptClientToServerMessage(
540
+ inline auto InterceptClientToServerMessageHandler(
540
541
  ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
541
- typename Derived::Call* call, Derived* channel,
542
- CallSpineInterface* call_spine) {
543
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
544
- call_spine->client_to_server_messages().receiver.InterceptAndMap(
545
- [call, call_spine,
546
- channel](MessageHandle msg) -> absl::optional<MessageHandle> {
547
- auto return_md = call->OnClientToServerMessage(*msg, channel);
548
- if (return_md == nullptr) return std::move(msg);
549
- return call_spine->Cancel(std::move(return_md));
550
- });
542
+ FilterCallData<Derived>* call_data, const CallArgs&) {
543
+ DCHECK(fn == &Derived::Call::OnClientToServerMessage);
544
+ return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
545
+ auto return_md =
546
+ call_data->call.OnClientToServerMessage(*msg, call_data->channel);
547
+ if (return_md == nullptr) return std::move(msg);
548
+ if (call_data->error_latch.is_set()) return absl::nullopt;
549
+ call_data->error_latch.Set(std::move(return_md));
550
+ return absl::nullopt;
551
+ };
551
552
  }
552
553
 
553
554
  template <typename Derived>
554
- inline void InterceptClientToServerMessage(
555
+ inline auto InterceptClientToServerMessageHandler(
555
556
  MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
556
- typename Derived::Call* call, Derived* channel,
557
- CallSpineInterface* call_spine) {
558
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
559
- call_spine->client_to_server_messages().receiver.InterceptAndMap(
560
- [call, channel](MessageHandle msg) {
561
- return call->OnClientToServerMessage(std::move(msg), channel);
562
- });
557
+ FilterCallData<Derived>* call_data, const CallArgs&) {
558
+ DCHECK(fn == &Derived::Call::OnClientToServerMessage);
559
+ return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
560
+ return call_data->call.OnClientToServerMessage(std::move(msg),
561
+ call_data->channel);
562
+ };
563
563
  }
564
564
 
565
565
  template <typename Derived>
566
- inline void InterceptClientToServerMessage(
566
+ inline auto InterceptClientToServerMessageHandler(
567
567
  absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
568
- typename Derived::Call* call, Derived* channel,
569
- CallSpineInterface* call_spine) {
570
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
571
- call_spine->client_to_server_messages().receiver.InterceptAndMap(
572
- [call, call_spine,
573
- channel](MessageHandle msg) -> absl::optional<MessageHandle> {
574
- auto r = call->OnClientToServerMessage(std::move(msg), channel);
575
- if (r.ok()) return std::move(*r);
576
- return call_spine->Cancel(ServerMetadataFromStatus(r.status()));
577
- });
578
- }
579
-
580
- inline void InterceptClientInitialMetadata(const NoInterceptor*, void*, void*,
581
- CallSpineInterface*) {}
582
-
583
- template <typename Derived>
584
- inline void InterceptClientInitialMetadata(
585
- void (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call,
586
- Derived*, CallSpineInterface* call_spine) {
587
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
588
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
589
- [call](ClientMetadataHandle md) {
590
- call->OnClientInitialMetadata(*md);
591
- return md;
592
- });
593
- }
594
-
595
- template <typename Derived>
596
- inline void InterceptClientInitialMetadata(
597
- void (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
598
- typename Derived::Call* call, Derived* channel,
599
- CallSpineInterface* call_spine) {
600
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
601
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
602
- [call, channel](ClientMetadataHandle md) {
603
- call->OnClientInitialMetadata(*md, channel);
604
- return md;
605
- });
606
- }
607
-
608
- template <typename Derived>
609
- inline void InterceptClientInitialMetadata(
610
- ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md),
611
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
612
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
613
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
614
- [call_spine,
615
- call](ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
616
- auto return_md = call->OnClientInitialMetadata(*md);
617
- if (return_md == nullptr) return std::move(md);
618
- return call_spine->Cancel(std::move(return_md));
619
- });
568
+ FilterCallData<Derived>* call_data, const CallArgs&) {
569
+ DCHECK(fn == &Derived::Call::OnClientToServerMessage);
570
+ return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
571
+ auto r = call_data->call.OnClientToServerMessage(std::move(msg),
572
+ call_data->channel);
573
+ if (r.ok()) return std::move(*r);
574
+ if (call_data->error_latch.is_set()) return absl::nullopt;
575
+ call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
576
+ return absl::nullopt;
577
+ };
620
578
  }
621
579
 
622
- template <typename Derived>
623
- inline void InterceptClientInitialMetadata(
624
- ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md,
625
- Derived* channel),
626
- typename Derived::Call* call, Derived* channel,
627
- CallSpineInterface* call_spine) {
628
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
629
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
630
- [call_spine, call, channel](
631
- ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
632
- auto return_md = call->OnClientInitialMetadata(*md, channel);
633
- if (return_md == nullptr) return std::move(md);
634
- return call_spine->Cancel(std::move(return_md));
635
- });
580
+ template <typename Derived, typename HookFunction>
581
+ inline void InterceptClientToServerMessage(HookFunction hook,
582
+ const NoInterceptor*,
583
+ FilterCallData<Derived>* call_data,
584
+ const CallArgs& call_args) {
585
+ call_args.client_to_server_messages->InterceptAndMap(
586
+ InterceptClientToServerMessageHandler(hook, call_data, call_args));
636
587
  }
637
588
 
638
- template <typename Derived>
639
- inline void InterceptClientInitialMetadata(
640
- absl::Status (Derived::Call::*fn)(ClientMetadata& md),
641
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
642
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
643
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
644
- [call_spine,
645
- call](ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
646
- auto status = call->OnClientInitialMetadata(*md);
647
- if (status.ok()) return std::move(md);
648
- return call_spine->Cancel(ServerMetadataFromStatus(status));
649
- });
589
+ template <typename Derived, typename HookFunction>
590
+ inline void InterceptClientToServerMessage(HookFunction hook,
591
+ void (Derived::Call::*)(),
592
+ FilterCallData<Derived>* call_data,
593
+ const CallArgs& call_args) {
594
+ call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
595
+ InterceptClientToServerMessageHandler(hook, call_data, call_args),
596
+ [call_data]() { call_data->call.OnClientToServerHalfClose(); });
650
597
  }
651
598
 
652
599
  template <typename Derived>
653
- inline void InterceptClientInitialMetadata(
654
- absl::Status (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
655
- typename Derived::Call* call, Derived* channel,
656
- CallSpineInterface* call_spine) {
657
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
658
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
659
- [call_spine, call, channel](
660
- ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
661
- auto status = call->OnClientInitialMetadata(*md, channel);
662
- if (status.ok()) return std::move(md);
663
- return call_spine->Cancel(ServerMetadataFromStatus(status));
664
- });
665
- }
666
-
667
- // Returning a promise that resolves to something that can be cast to
668
- // ServerMetadataHandle also counts
669
- template <typename Promise, typename Derived>
670
- absl::void_t<decltype(StatusCast<ServerMetadataHandle>(
671
- std::declval<PromiseResult<Promise>>))>
672
- InterceptClientInitialMetadata(Promise (Derived::Call::*promise_factory)(
673
- ClientMetadata& md, Derived* channel),
674
- typename Derived::Call* call, Derived* channel,
675
- CallSpineInterface* call_spine) {
676
- GPR_DEBUG_ASSERT(promise_factory == &Derived::Call::OnClientInitialMetadata);
677
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
678
- [call, call_spine, channel](ClientMetadataHandle md) {
679
- ClientMetadata& md_ref = *md;
680
- return Map(call->OnClientInitialMetadata(md_ref, channel),
681
- [md = std::move(md),
682
- call_spine](PromiseResult<Promise> status) mutable
683
- -> absl::optional<ClientMetadataHandle> {
684
- if (IsStatusOk(status)) return std::move(md);
685
- return call_spine->Cancel(
686
- StatusCast<ServerMetadataHandle>(std::move(status)));
687
- });
688
- });
689
- }
600
+ inline void InterceptClientToServerMessage(const NoInterceptor*,
601
+ const NoInterceptor*,
602
+ FilterCallData<Derived>*,
603
+ const CallArgs&) {}
690
604
 
691
605
  template <typename CallArgs>
692
606
  inline void InterceptServerInitialMetadata(const NoInterceptor*, void*,
@@ -696,7 +610,7 @@ template <typename Derived>
696
610
  inline void InterceptServerInitialMetadata(
697
611
  void (Derived::Call::*fn)(ServerMetadata&),
698
612
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
699
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
613
+ DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
700
614
  call_args.server_initial_metadata->InterceptAndMap(
701
615
  [call_data](ServerMetadataHandle md) {
702
616
  call_data->call.OnServerInitialMetadata(*md);
@@ -708,7 +622,7 @@ template <typename Derived>
708
622
  inline void InterceptServerInitialMetadata(
709
623
  absl::Status (Derived::Call::*fn)(ServerMetadata&),
710
624
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
711
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
625
+ DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
712
626
  call_args.server_initial_metadata->InterceptAndMap(
713
627
  [call_data](
714
628
  ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@@ -725,7 +639,7 @@ template <typename Derived>
725
639
  inline void InterceptServerInitialMetadata(
726
640
  void (Derived::Call::*fn)(ServerMetadata&, Derived*),
727
641
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
728
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
642
+ DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
729
643
  call_args.server_initial_metadata->InterceptAndMap(
730
644
  [call_data](ServerMetadataHandle md) {
731
645
  call_data->call.OnServerInitialMetadata(*md, call_data->channel);
@@ -737,7 +651,7 @@ template <typename Derived>
737
651
  inline void InterceptServerInitialMetadata(
738
652
  absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*),
739
653
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
740
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
654
+ DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
741
655
  call_args.server_initial_metadata->InterceptAndMap(
742
656
  [call_data](
743
657
  ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@@ -751,71 +665,26 @@ inline void InterceptServerInitialMetadata(
751
665
  });
752
666
  }
753
667
 
754
- inline void InterceptServerInitialMetadata(const NoInterceptor*, void*, void*,
755
- CallSpineInterface*) {}
756
-
757
- template <typename Derived>
758
- inline void InterceptServerInitialMetadata(
759
- void (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call,
760
- Derived*, CallSpineInterface* call_spine) {
761
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
762
- call_spine->server_initial_metadata().sender.InterceptAndMap(
763
- [call](ServerMetadataHandle md) {
764
- call->OnServerInitialMetadata(*md);
765
- return md;
766
- });
767
- }
768
-
769
- template <typename Derived>
770
- inline void InterceptServerInitialMetadata(
771
- absl::Status (Derived::Call::*fn)(ServerMetadata&),
772
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
773
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
774
- call_spine->server_initial_metadata().sender.InterceptAndMap(
775
- [call, call_spine](
776
- ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
777
- auto status = call->OnServerInitialMetadata(*md);
778
- if (status.ok()) return std::move(md);
779
- return call_spine->Cancel(ServerMetadataFromStatus(status));
780
- });
781
- }
782
-
783
- template <typename Derived>
784
- inline void InterceptServerInitialMetadata(
785
- void (Derived::Call::*fn)(ServerMetadata&, Derived*),
786
- typename Derived::Call* call, Derived* channel,
787
- CallSpineInterface* call_spine) {
788
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
789
- call_spine->server_initial_metadata().sender.InterceptAndMap(
790
- [call, channel](ServerMetadataHandle md) {
791
- call->OnServerInitialMetadata(*md, channel);
792
- return md;
793
- });
794
- }
668
+ inline void InterceptServerToClientMessage(const NoInterceptor*, void*,
669
+ const CallArgs&) {}
795
670
 
796
671
  template <typename Derived>
797
- inline void InterceptServerInitialMetadata(
798
- absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*),
799
- typename Derived::Call* call, Derived* channel,
800
- CallSpineInterface* call_spine) {
801
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
802
- call_spine->server_initial_metadata().sender.InterceptAndMap(
803
- [call, call_spine, channel](
804
- ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
805
- auto status = call->OnServerInitialMetadata(*md, channel);
806
- if (status.ok()) return std::move(md);
807
- return call_spine->Cancel(ServerMetadataFromStatus(status));
672
+ inline void InterceptServerToClientMessage(
673
+ void (Derived::Call::*fn)(const Message&),
674
+ FilterCallData<Derived>* call_data, const CallArgs& call_args) {
675
+ DCHECK(fn == &Derived::Call::OnServerToClientMessage);
676
+ call_args.server_to_client_messages->InterceptAndMap(
677
+ [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
678
+ call_data->call.OnServerToClientMessage(*msg);
679
+ return std::move(msg);
808
680
  });
809
681
  }
810
682
 
811
- inline void InterceptServerToClientMessage(const NoInterceptor*, void*,
812
- const CallArgs&) {}
813
-
814
683
  template <typename Derived>
815
684
  inline void InterceptServerToClientMessage(
816
685
  ServerMetadataHandle (Derived::Call::*fn)(const Message&),
817
686
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
818
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
687
+ DCHECK(fn == &Derived::Call::OnServerToClientMessage);
819
688
  call_args.server_to_client_messages->InterceptAndMap(
820
689
  [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
821
690
  auto return_md = call_data->call.OnServerToClientMessage(*msg);
@@ -830,7 +699,7 @@ template <typename Derived>
830
699
  inline void InterceptServerToClientMessage(
831
700
  ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
832
701
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
833
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
702
+ DCHECK(fn == &Derived::Call::OnServerToClientMessage);
834
703
  call_args.server_to_client_messages->InterceptAndMap(
835
704
  [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
836
705
  auto return_md =
@@ -846,7 +715,7 @@ template <typename Derived>
846
715
  inline void InterceptServerToClientMessage(
847
716
  MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
848
717
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
849
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
718
+ DCHECK(fn == &Derived::Call::OnServerToClientMessage);
850
719
  call_args.server_to_client_messages->InterceptAndMap(
851
720
  [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
852
721
  return call_data->call.OnServerToClientMessage(std::move(msg),
@@ -858,7 +727,7 @@ template <typename Derived>
858
727
  inline void InterceptServerToClientMessage(
859
728
  absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
860
729
  FilterCallData<Derived>* call_data, const CallArgs& call_args) {
861
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
730
+ DCHECK(fn == &Derived::Call::OnServerToClientMessage);
862
731
  call_args.server_to_client_messages->InterceptAndMap(
863
732
  [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
864
733
  auto r = call_data->call.OnServerToClientMessage(std::move(msg),
@@ -870,111 +739,12 @@ inline void InterceptServerToClientMessage(
870
739
  });
871
740
  }
872
741
 
873
- inline void InterceptServerToClientMessage(const NoInterceptor*, void*, void*,
874
- CallSpineInterface*) {}
875
-
876
- template <typename Derived>
877
- inline void InterceptServerToClientMessage(
878
- ServerMetadataHandle (Derived::Call::*fn)(const Message&),
879
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
880
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
881
- call_spine->server_to_client_messages().sender.InterceptAndMap(
882
- [call, call_spine](MessageHandle msg) -> absl::optional<MessageHandle> {
883
- auto return_md = call->OnServerToClientMessage(*msg);
884
- if (return_md == nullptr) return std::move(msg);
885
- return call_spine->Cancel(std::move(return_md));
886
- });
887
- }
888
-
889
- template <typename Derived>
890
- inline void InterceptServerToClientMessage(
891
- ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
892
- typename Derived::Call* call, Derived* channel,
893
- CallSpineInterface* call_spine) {
894
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
895
- call_spine->server_to_client_messages().sender.InterceptAndMap(
896
- [call, call_spine,
897
- channel](MessageHandle msg) -> absl::optional<MessageHandle> {
898
- auto return_md = call->OnServerToClientMessage(*msg, channel);
899
- if (return_md == nullptr) return std::move(msg);
900
- return call_spine->Cancel(std::move(return_md));
901
- });
902
- }
903
-
904
- template <typename Derived>
905
- inline void InterceptServerToClientMessage(
906
- MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
907
- typename Derived::Call* call, Derived* channel,
908
- CallSpineInterface* call_spine) {
909
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
910
- call_spine->server_to_client_messages().sender.InterceptAndMap(
911
- [call, channel](MessageHandle msg) {
912
- return call->OnServerToClientMessage(std::move(msg), channel);
913
- });
914
- }
915
-
916
- template <typename Derived>
917
- inline void InterceptServerToClientMessage(
918
- absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
919
- typename Derived::Call* call, Derived* channel,
920
- CallSpineInterface* call_spine) {
921
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
922
- call_spine->server_to_client_messages().sender.InterceptAndMap(
923
- [call, call_spine,
924
- channel](MessageHandle msg) -> absl::optional<MessageHandle> {
925
- auto r = call->OnServerToClientMessage(std::move(msg), channel);
926
- if (r.ok()) return std::move(*r);
927
- return call_spine->Cancel(ServerMetadataFromStatus(r.status()));
928
- });
929
- }
930
-
931
- inline void InterceptServerTrailingMetadata(const NoInterceptor*, void*, void*,
932
- CallSpineInterface*) {}
933
-
934
- template <typename Derived>
935
- inline void InterceptServerTrailingMetadata(
936
- void (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call,
937
- Derived*, CallSpineInterface* call_spine) {
938
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
939
- call_spine->server_trailing_metadata().sender.InterceptAndMap(
940
- [call](ServerMetadataHandle md) {
941
- call->OnServerTrailingMetadata(*md);
942
- return md;
943
- });
944
- }
945
-
946
- template <typename Derived>
947
- inline void InterceptServerTrailingMetadata(
948
- void (Derived::Call::*fn)(ServerMetadata&, Derived*),
949
- typename Derived::Call* call, Derived* channel,
950
- CallSpineInterface* call_spine) {
951
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
952
- call_spine->server_trailing_metadata().sender.InterceptAndMap(
953
- [call, channel](ServerMetadataHandle md) {
954
- call->OnServerTrailingMetadata(*md, channel);
955
- return md;
956
- });
957
- }
958
-
959
- template <typename Derived>
960
- inline void InterceptServerTrailingMetadata(
961
- absl::Status (Derived::Call::*fn)(ServerMetadata&),
962
- typename Derived::Call* call, Derived*, CallSpineInterface* call_spine) {
963
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
964
- call_spine->server_trailing_metadata().sender.InterceptAndMap(
965
- [call](ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
966
- auto status = call->OnServerTrailingMetadata(*md);
967
- if (status.ok()) return std::move(md);
968
- return ServerMetadataFromStatus(status);
969
- });
970
- }
971
-
972
742
  inline void InterceptFinalize(const NoInterceptor*, void*, void*) {}
973
743
 
974
744
  template <class Call>
975
745
  inline void InterceptFinalize(void (Call::*fn)(const grpc_call_final_info*),
976
746
  void*, Call* call) {
977
- GPR_DEBUG_ASSERT(fn == &Call::OnFinalize);
747
+ DCHECK(fn == &Call::OnFinalize);
978
748
  GetContext<CallFinalization>()->Add(
979
749
  [call](const grpc_call_final_info* final_info) {
980
750
  call->OnFinalize(final_info);
@@ -985,7 +755,7 @@ template <class Derived>
985
755
  inline void InterceptFinalize(
986
756
  void (Derived::Call::*fn)(const grpc_call_final_info*, Derived*),
987
757
  Derived* channel, typename Derived::Call* call) {
988
- GPR_DEBUG_ASSERT(fn == &Derived::Call::OnFinalize);
758
+ DCHECK(fn == &Derived::Call::OnFinalize);
989
759
  GetContext<CallFinalization>()->Add(
990
760
  [call, channel](const grpc_call_final_info* final_info) {
991
761
  call->OnFinalize(final_info, channel);
@@ -1070,31 +840,6 @@ template <typename Derived>
1070
840
  class ImplementChannelFilter : public ChannelFilter,
1071
841
  public ImplementChannelFilterTag {
1072
842
  public:
1073
- // Natively construct a v3 call.
1074
- void InitCall(CallSpineInterface* call_spine) {
1075
- typename Derived::Call* call =
1076
- GetContext<Arena>()
1077
- ->ManagedNew<promise_filter_detail::CallWrapper<Derived>>(
1078
- static_cast<Derived*>(this));
1079
- promise_filter_detail::InterceptClientInitialMetadata(
1080
- &Derived::Call::OnClientInitialMetadata, call,
1081
- static_cast<Derived*>(this), call_spine);
1082
- promise_filter_detail::InterceptClientToServerMessage(
1083
- &Derived::Call::OnClientToServerMessage, call,
1084
- static_cast<Derived*>(this), call_spine);
1085
- promise_filter_detail::InterceptServerInitialMetadata(
1086
- &Derived::Call::OnServerInitialMetadata, call,
1087
- static_cast<Derived*>(this), call_spine);
1088
- promise_filter_detail::InterceptServerToClientMessage(
1089
- &Derived::Call::OnServerToClientMessage, call,
1090
- static_cast<Derived*>(this), call_spine);
1091
- promise_filter_detail::InterceptServerTrailingMetadata(
1092
- &Derived::Call::OnServerTrailingMetadata, call,
1093
- static_cast<Derived*>(this), call_spine);
1094
- promise_filter_detail::InterceptFinalize(&Derived::Call::OnFinalize,
1095
- static_cast<Derived*>(this), call);
1096
- }
1097
-
1098
843
  // Polyfill for the original promise scheme.
1099
844
  // Allows writing v3 filters that work with v2 stacks.
1100
845
  // (and consequently also v1 stacks since we can polyfill back to that too).
@@ -1103,7 +848,8 @@ class ImplementChannelFilter : public ChannelFilter,
1103
848
  auto* call = promise_filter_detail::MakeFilterCall<Derived>(
1104
849
  static_cast<Derived*>(this));
1105
850
  promise_filter_detail::InterceptClientToServerMessage(
1106
- &Derived::Call::OnClientToServerMessage, call, call_args);
851
+ &Derived::Call::OnClientToServerMessage,
852
+ &Derived::Call::OnClientToServerHalfClose, call, call_args);
1107
853
  promise_filter_detail::InterceptServerInitialMetadata(
1108
854
  &Derived::Call::OnServerInitialMetadata, call, call_args);
1109
855
  promise_filter_detail::InterceptServerToClientMessage(
@@ -1177,8 +923,7 @@ class BaseCallData : public Activity, private Wakeable {
1177
923
  ~BaseCallData() override;
1178
924
 
1179
925
  void set_pollent(grpc_polling_entity* pollent) {
1180
- GPR_ASSERT(nullptr ==
1181
- pollent_.exchange(pollent, std::memory_order_release));
926
+ CHECK(nullptr == pollent_.exchange(pollent, std::memory_order_release));
1182
927
  }
1183
928
 
1184
929
  // Activity implementation (partial).
@@ -1195,26 +940,22 @@ class BaseCallData : public Activity, private Wakeable {
1195
940
 
1196
941
  virtual void StartBatch(grpc_transport_stream_op_batch* batch) = 0;
1197
942
 
943
+ Call* call() { return arena_->GetContext<Call>(); }
944
+
1198
945
  protected:
1199
- class ScopedContext
1200
- : public promise_detail::Context<Arena>,
1201
- public promise_detail::Context<grpc_call_context_element>,
1202
- public promise_detail::Context<grpc_polling_entity>,
1203
- public promise_detail::Context<CallFinalization>,
1204
- public promise_detail::Context<
1205
- grpc_event_engine::experimental::EventEngine>,
1206
- public promise_detail::Context<CallContext> {
946
+ class ScopedContext : public promise_detail::Context<Arena>,
947
+ public promise_detail::Context<grpc_polling_entity>,
948
+ public promise_detail::Context<CallFinalization>,
949
+ public promise_detail::Context<
950
+ grpc_event_engine::experimental::EventEngine> {
1207
951
  public:
1208
952
  explicit ScopedContext(BaseCallData* call_data)
1209
953
  : promise_detail::Context<Arena>(call_data->arena_),
1210
- promise_detail::Context<grpc_call_context_element>(
1211
- call_data->context_),
1212
954
  promise_detail::Context<grpc_polling_entity>(
1213
955
  call_data->pollent_.load(std::memory_order_acquire)),
1214
956
  promise_detail::Context<CallFinalization>(&call_data->finalization_),
1215
957
  promise_detail::Context<grpc_event_engine::experimental::EventEngine>(
1216
- call_data->event_engine_),
1217
- promise_detail::Context<CallContext>(call_data->call_context_) {}
958
+ call_data->event_engine_) {}
1218
959
  };
1219
960
 
1220
961
  class Flusher {
@@ -1224,7 +965,7 @@ class BaseCallData : public Activity, private Wakeable {
1224
965
  ~Flusher();
1225
966
 
1226
967
  void Resume(grpc_transport_stream_op_batch* batch) {
1227
- GPR_ASSERT(!call_->is_last());
968
+ CHECK(!call_->is_last());
1228
969
  if (batch->HasOp()) {
1229
970
  release_.push_back(batch);
1230
971
  } else if (batch->on_complete != nullptr) {
@@ -1303,7 +1044,7 @@ class BaseCallData : public Activity, private Wakeable {
1303
1044
  PipeSender<MessageHandle>* original_sender() override { abort(); }
1304
1045
 
1305
1046
  void GotPipe(PipeReceiver<MessageHandle>* receiver) override {
1306
- GPR_ASSERT(receiver_ == nullptr);
1047
+ CHECK_EQ(receiver_, nullptr);
1307
1048
  receiver_ = receiver;
1308
1049
  }
1309
1050
 
@@ -1311,7 +1052,7 @@ class BaseCallData : public Activity, private Wakeable {
1311
1052
 
1312
1053
  PipeSender<MessageHandle>* Push() override { return &pipe_.sender; }
1313
1054
  PipeReceiver<MessageHandle>* Pull() override {
1314
- GPR_ASSERT(receiver_ != nullptr);
1055
+ CHECK_NE(receiver_, nullptr);
1315
1056
  return receiver_;
1316
1057
  }
1317
1058
 
@@ -1332,12 +1073,12 @@ class BaseCallData : public Activity, private Wakeable {
1332
1073
  void GotPipe(PipeReceiver<MessageHandle>*) override { abort(); }
1333
1074
 
1334
1075
  void GotPipe(PipeSender<MessageHandle>* sender) override {
1335
- GPR_ASSERT(sender_ == nullptr);
1076
+ CHECK_EQ(sender_, nullptr);
1336
1077
  sender_ = sender;
1337
1078
  }
1338
1079
 
1339
1080
  PipeSender<MessageHandle>* Push() override {
1340
- GPR_ASSERT(sender_ != nullptr);
1081
+ CHECK_NE(sender_, nullptr);
1341
1082
  return sender_;
1342
1083
  }
1343
1084
  PipeReceiver<MessageHandle>* Pull() override { return &pipe_.receiver; }
@@ -1560,8 +1301,6 @@ class BaseCallData : public Activity, private Wakeable {
1560
1301
  CallCombiner* const call_combiner_;
1561
1302
  const Timestamp deadline_;
1562
1303
  CallFinalization finalization_;
1563
- CallContext* call_context_ = nullptr;
1564
- grpc_call_context_element* const context_;
1565
1304
  std::atomic<grpc_polling_entity*> pollent_{nullptr};
1566
1305
  Pipe<ServerMetadataHandle>* const server_initial_metadata_pipe_;
1567
1306
  SendMessage* const send_message_;
@@ -1831,6 +1570,15 @@ struct BaseCallDataMethods {
1831
1570
  }
1832
1571
  };
1833
1572
 
1573
+ // The type of object returned by a filter's Create method.
1574
+ template <typename T>
1575
+ using CreatedType = typename decltype(T::Create(ChannelArgs(), {}))::value_type;
1576
+
1577
+ template <typename GrpcChannelOrCallElement>
1578
+ inline ChannelFilter* ChannelFilterFromElem(GrpcChannelOrCallElement* elem) {
1579
+ return *static_cast<ChannelFilter**>(elem->channel_data);
1580
+ }
1581
+
1834
1582
  template <typename CallData, uint8_t kFlags>
1835
1583
  struct CallDataFilterWithFlagsMethods {
1836
1584
  static absl::Status InitCallElem(grpc_call_element* elem,
@@ -1846,7 +1594,7 @@ struct CallDataFilterWithFlagsMethods {
1846
1594
  if ((kFlags & kFilterIsLast) != 0) {
1847
1595
  ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
1848
1596
  } else {
1849
- GPR_ASSERT(then_schedule_closure == nullptr);
1597
+ CHECK_EQ(then_schedule_closure, nullptr);
1850
1598
  }
1851
1599
  }
1852
1600
  };
@@ -1855,32 +1603,25 @@ struct ChannelFilterMethods {
1855
1603
  static ArenaPromise<ServerMetadataHandle> MakeCallPromise(
1856
1604
  grpc_channel_element* elem, CallArgs call_args,
1857
1605
  NextPromiseFactory next_promise_factory) {
1858
- return static_cast<ChannelFilter*>(elem->channel_data)
1859
- ->MakeCallPromise(std::move(call_args),
1860
- std::move(next_promise_factory));
1606
+ return ChannelFilterFromElem(elem)->MakeCallPromise(
1607
+ std::move(call_args), std::move(next_promise_factory));
1861
1608
  }
1862
1609
 
1863
1610
  static void StartTransportOp(grpc_channel_element* elem,
1864
1611
  grpc_transport_op* op) {
1865
- if (!static_cast<ChannelFilter*>(elem->channel_data)
1866
- ->StartTransportOp(op)) {
1612
+ if (!ChannelFilterFromElem(elem)->StartTransportOp(op)) {
1867
1613
  grpc_channel_next_op(elem, op);
1868
1614
  }
1869
1615
  }
1870
1616
 
1871
1617
  static void PostInitChannelElem(grpc_channel_stack*,
1872
1618
  grpc_channel_element* elem) {
1873
- static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
1874
- }
1875
-
1876
- static void DestroyChannelElem(grpc_channel_element* elem) {
1877
- static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
1619
+ ChannelFilterFromElem(elem)->PostInit();
1878
1620
  }
1879
1621
 
1880
1622
  static void GetChannelInfo(grpc_channel_element* elem,
1881
1623
  const grpc_channel_info* info) {
1882
- if (!static_cast<ChannelFilter*>(elem->channel_data)
1883
- ->GetChannelInfo(info)) {
1624
+ if (!ChannelFilterFromElem(elem)->GetChannelInfo(info)) {
1884
1625
  grpc_channel_next_get_info(elem, info);
1885
1626
  }
1886
1627
  }
@@ -1890,19 +1631,20 @@ template <typename F, uint8_t kFlags>
1890
1631
  struct ChannelFilterWithFlagsMethods {
1891
1632
  static absl::Status InitChannelElem(grpc_channel_element* elem,
1892
1633
  grpc_channel_element_args* args) {
1893
- GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
1634
+ CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
1894
1635
  auto status = F::Create(args->channel_args,
1895
1636
  ChannelFilter::Args(args->channel_stack, elem));
1896
1637
  if (!status.ok()) {
1897
- static_assert(
1898
- sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
1899
- "InvalidChannelFilter must fit in F");
1900
- new (elem->channel_data) promise_filter_detail::InvalidChannelFilter();
1638
+ new (elem->channel_data) F*(nullptr);
1901
1639
  return absl_status_to_grpc_error(status.status());
1902
1640
  }
1903
- new (elem->channel_data) F(std::move(*status));
1641
+ new (elem->channel_data) F*(status->release());
1904
1642
  return absl::OkStatus();
1905
1643
  }
1644
+
1645
+ static void DestroyChannelElem(grpc_channel_element* elem) {
1646
+ CreatedType<F> channel_elem(DownCast<F*>(ChannelFilterFromElem(elem)));
1647
+ }
1906
1648
  };
1907
1649
 
1908
1650
  } // namespace promise_filter_detail
@@ -1914,20 +1656,15 @@ struct ChannelFilterWithFlagsMethods {
1914
1656
  // ChannelArgs channel_args, ChannelFilter::Args filter_args);
1915
1657
  // };
1916
1658
  template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
1917
- absl::enable_if_t<
1918
- std::is_base_of<ChannelFilter, F>::value &&
1919
- !std::is_base_of<ImplementChannelFilterTag, F>::value &&
1920
- !std::is_base_of<HackyHackyHackySkipInV3FilterStacks, F>::value,
1921
- grpc_channel_filter>
1659
+ absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value &&
1660
+ !std::is_base_of<ImplementChannelFilterTag, F>::value,
1661
+ grpc_channel_filter>
1922
1662
  MakePromiseBasedFilter(const char* name) {
1923
1663
  using CallData = promise_filter_detail::CallData<kEndpoint>;
1924
1664
 
1925
1665
  return grpc_channel_filter{
1926
1666
  // start_transport_stream_op_batch
1927
1667
  promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
1928
- // make_call_promise
1929
- promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
1930
- nullptr,
1931
1668
  // start_transport_op
1932
1669
  promise_filter_detail::ChannelFilterMethods::StartTransportOp,
1933
1670
  // sizeof_call_data
@@ -1948,53 +1685,8 @@ MakePromiseBasedFilter(const char* name) {
1948
1685
  // post_init_channel_elem
1949
1686
  promise_filter_detail::ChannelFilterMethods::PostInitChannelElem,
1950
1687
  // destroy_channel_elem
1951
- promise_filter_detail::ChannelFilterMethods::DestroyChannelElem,
1952
- // get_channel_info
1953
- promise_filter_detail::ChannelFilterMethods::GetChannelInfo,
1954
- // name
1955
- name,
1956
- };
1957
- }
1958
-
1959
- template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
1960
- absl::enable_if_t<
1961
- std::is_base_of<HackyHackyHackySkipInV3FilterStacks, F>::value,
1962
- grpc_channel_filter>
1963
- MakePromiseBasedFilter(const char* name) {
1964
- using CallData = promise_filter_detail::CallData<kEndpoint>;
1965
-
1966
- return grpc_channel_filter{
1967
- // start_transport_stream_op_batch
1968
- promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
1969
- // make_call_promise
1970
- promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
1971
- [](grpc_channel_element* elem, CallSpineInterface*) {
1972
- GRPC_LOG_EVERY_N_SEC(
1973
- 1, GPR_ERROR,
1974
- "gRPC V3 call stack in use, with a filter ('%s') that is not V3.",
1975
- elem->filter->name);
1976
- },
1977
- // start_transport_op
1978
- promise_filter_detail::ChannelFilterMethods::StartTransportOp,
1979
- // sizeof_call_data
1980
- sizeof(CallData),
1981
- // init_call_elem
1982
- promise_filter_detail::CallDataFilterWithFlagsMethods<
1983
- CallData, kFlags>::InitCallElem,
1984
- // set_pollset_or_pollset_set
1985
- promise_filter_detail::BaseCallDataMethods::SetPollsetOrPollsetSet,
1986
- // destroy_call_elem
1987
- promise_filter_detail::CallDataFilterWithFlagsMethods<
1988
- CallData, kFlags>::DestroyCallElem,
1989
- // sizeof_channel_data
1990
- sizeof(F),
1991
- // init_channel_elem
1992
1688
  promise_filter_detail::ChannelFilterWithFlagsMethods<
1993
- F, kFlags>::InitChannelElem,
1994
- // post_init_channel_elem
1995
- promise_filter_detail::ChannelFilterMethods::PostInitChannelElem,
1996
- // destroy_channel_elem
1997
- promise_filter_detail::ChannelFilterMethods::DestroyChannelElem,
1689
+ F, kFlags>::DestroyChannelElem,
1998
1690
  // get_channel_info
1999
1691
  promise_filter_detail::ChannelFilterMethods::GetChannelInfo,
2000
1692
  // name
@@ -2011,11 +1703,6 @@ MakePromiseBasedFilter(const char* name) {
2011
1703
  return grpc_channel_filter{
2012
1704
  // start_transport_stream_op_batch
2013
1705
  promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
2014
- // make_call_promise
2015
- promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
2016
- [](grpc_channel_element* elem, CallSpineInterface* args) {
2017
- static_cast<F*>(elem->channel_data)->InitCall(args);
2018
- },
2019
1706
  // start_transport_op
2020
1707
  promise_filter_detail::ChannelFilterMethods::StartTransportOp,
2021
1708
  // sizeof_call_data
@@ -2036,7 +1723,8 @@ MakePromiseBasedFilter(const char* name) {
2036
1723
  // post_init_channel_elem
2037
1724
  promise_filter_detail::ChannelFilterMethods::PostInitChannelElem,
2038
1725
  // destroy_channel_elem
2039
- promise_filter_detail::ChannelFilterMethods::DestroyChannelElem,
1726
+ promise_filter_detail::ChannelFilterWithFlagsMethods<
1727
+ F, kFlags>::DestroyChannelElem,
2040
1728
  // get_channel_info
2041
1729
  promise_filter_detail::ChannelFilterMethods::GetChannelInfo,
2042
1730
  // name