grpc 1.52.2 → 1.53.0.pre2

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

Potentially problematic release.


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

Files changed (890) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +50 -5
  3. data/include/grpc/event_engine/event_engine.h +24 -2
  4. data/include/grpc/event_engine/slice_buffer.h +13 -1
  5. data/include/grpc/impl/grpc_types.h +3 -0
  6. data/include/grpc/support/time.h +6 -4
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
  8. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  9. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  10. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +3 -3
  11. data/src/core/ext/filters/channel_idle/idle_filter_state.h +3 -3
  12. data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
  13. data/src/core/ext/filters/client_channel/backup_poller.h +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
  15. data/src/core/ext/filters/client_channel/client_channel.cc +29 -33
  16. data/src/core/ext/filters/client_channel/client_channel.h +3 -3
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +3 -3
  18. data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
  19. data/src/core/ext/filters/client_channel/client_channel_service_config.h +3 -3
  20. data/src/core/ext/filters/client_channel/config_selector.h +3 -3
  21. data/src/core/ext/filters/client_channel/connector.h +8 -4
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -3
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  25. data/src/core/ext/filters/client_channel/http_proxy.h +3 -3
  26. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +3 -3
  27. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
  28. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -3
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -7
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +3 -3
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -0
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +3 -3
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -3
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
  37. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +1 -78
  38. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +3 -3
  39. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +3 -3
  41. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +3 -3
  42. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -0
  43. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
  44. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +2 -2
  48. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -6
  49. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +3 -3
  50. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +12 -7
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +275 -107
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +10 -3
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -0
  55. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +3 -3
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -2
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -3
  60. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +3 -3
  61. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +3 -3
  62. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +1 -0
  63. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +3 -3
  64. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -7
  65. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -3
  66. data/src/core/ext/filters/client_channel/retry_filter.cc +10 -13
  67. data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
  68. data/src/core/ext/filters/client_channel/retry_service_config.h +3 -3
  69. data/src/core/ext/filters/client_channel/retry_throttle.h +3 -3
  70. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +4 -4
  71. data/src/core/ext/filters/client_channel/subchannel.cc +5 -1
  72. data/src/core/ext/filters/client_channel/subchannel.h +3 -3
  73. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
  74. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -3
  75. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +3 -3
  76. data/src/core/ext/filters/deadline/deadline_filter.cc +40 -48
  77. data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
  78. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -3
  79. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  80. data/src/core/ext/filters/http/client/http_client_filter.cc +26 -21
  81. data/src/core/ext/filters/http/client/http_client_filter.h +3 -3
  82. data/src/core/ext/filters/http/client_authority_filter.h +3 -3
  83. data/src/core/ext/filters/http/message_compress/compression_filter.cc +109 -117
  84. data/src/core/ext/filters/http/message_compress/compression_filter.h +17 -10
  85. data/src/core/ext/filters/http/server/http_server_filter.cc +25 -24
  86. data/src/core/ext/filters/http/server/http_server_filter.h +3 -3
  87. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
  88. data/src/core/ext/filters/message_size/message_size_filter.h +3 -3
  89. data/src/core/ext/filters/rbac/rbac_filter.cc +4 -3
  90. data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
  91. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -3
  92. data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -3
  93. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
  94. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +27 -37
  95. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +5 -5
  96. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  97. data/src/core/ext/transport/chttp2/alpn/alpn.h +3 -3
  98. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -7
  99. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -3
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -0
  101. data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -3
  102. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -3
  103. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +3 -3
  104. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +195 -111
  105. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
  106. data/src/core/ext/transport/chttp2/transport/context_list.h +3 -3
  107. data/src/core/ext/transport/chttp2/transport/decode_huff.h +3 -3
  108. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  109. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
  110. data/src/core/ext/transport/chttp2/transport/frame.h +3 -3
  111. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
  112. data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -3
  113. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
  114. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -3
  115. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -0
  116. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -3
  117. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
  118. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -3
  119. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -0
  120. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -3
  121. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
  122. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -3
  123. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
  124. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +3 -3
  125. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
  126. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +17 -406
  127. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -3
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -3
  130. data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
  131. data/src/core/ext/transport/chttp2/transport/http_trace.h +3 -3
  132. data/src/core/ext/transport/chttp2/transport/huffsyms.h +3 -3
  133. data/src/core/ext/transport/chttp2/transport/internal.h +28 -23
  134. data/src/core/ext/transport/chttp2/transport/parsing.cc +111 -31
  135. data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -3
  136. data/src/core/ext/transport/chttp2/transport/varint.h +3 -3
  137. data/src/core/ext/transport/chttp2/transport/writing.cc +9 -8
  138. data/src/core/ext/transport/inproc/inproc_transport.h +3 -3
  139. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +3 -2
  140. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +9 -0
  141. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +38 -2
  142. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +185 -0
  143. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +7 -3
  144. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +44 -0
  145. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +16 -25
  146. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +48 -74
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +30 -7
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +137 -0
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +15 -12
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +83 -51
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +3 -2
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +15 -0
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +61 -0
  155. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +11 -5
  156. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +37 -6
  157. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +5 -3
  158. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +24 -0
  159. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
  160. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  161. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +6 -3
  162. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +24 -0
  163. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -5
  164. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +50 -0
  165. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
  166. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +254 -17
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +9 -0
  169. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -2
  170. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +9 -0
  171. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
  172. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +21 -12
  173. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
  174. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +23 -0
  175. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +10 -7
  176. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +42 -12
  177. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
  178. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
  179. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
  180. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
  181. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +7 -3
  182. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  183. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +8 -6
  184. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +31 -9
  185. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +5 -3
  186. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +24 -0
  187. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
  188. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
  189. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
  190. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
  191. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
  192. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
  193. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +34 -13
  194. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +10 -0
  195. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +195 -187
  196. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -224
  197. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
  198. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
  199. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
  200. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +94 -93
  201. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
  202. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +189 -187
  203. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
  204. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
  205. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
  206. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -133
  207. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
  208. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -133
  209. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +81 -70
  210. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
  211. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +771 -741
  212. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  213. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
  214. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +14 -13
  215. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
  216. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
  217. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +363 -356
  218. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
  219. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +16 -13
  220. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  221. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  222. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +14 -14
  223. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  224. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  225. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
  226. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  227. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +1 -0
  228. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -3
  229. data/src/core/ext/xds/upb_utils.h +3 -3
  230. data/src/core/ext/xds/xds_api.h +3 -3
  231. data/src/core/ext/xds/xds_bootstrap.h +3 -3
  232. data/src/core/ext/xds/xds_bootstrap_grpc.cc +1 -0
  233. data/src/core/ext/xds/xds_bootstrap_grpc.h +3 -3
  234. data/src/core/ext/xds/xds_certificate_provider.h +3 -3
  235. data/src/core/ext/xds/xds_channel_args.h +3 -3
  236. data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -3
  237. data/src/core/ext/xds/xds_client.cc +8 -3
  238. data/src/core/ext/xds/xds_client.h +3 -3
  239. data/src/core/ext/xds/xds_client_grpc.cc +0 -1
  240. data/src/core/ext/xds/xds_client_grpc.h +3 -3
  241. data/src/core/ext/xds/xds_client_stats.h +4 -3
  242. data/src/core/ext/xds/xds_cluster.cc +11 -7
  243. data/src/core/ext/xds/xds_cluster.h +6 -6
  244. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +3 -3
  245. data/src/core/ext/xds/xds_common_types.cc +1 -0
  246. data/src/core/ext/xds/xds_common_types.h +3 -3
  247. data/src/core/ext/xds/xds_endpoint.cc +1 -1
  248. data/src/core/ext/xds/xds_endpoint.h +3 -3
  249. data/src/core/ext/xds/xds_health_status.h +30 -3
  250. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  251. data/src/core/ext/xds/xds_http_filters.cc +1 -1
  252. data/src/core/ext/xds/xds_http_filters.h +3 -3
  253. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  254. data/src/core/ext/xds/xds_http_stateful_session_filter.h +3 -3
  255. data/src/core/ext/xds/xds_lb_policy_registry.cc +95 -0
  256. data/src/core/ext/xds/xds_lb_policy_registry.h +3 -3
  257. data/src/core/ext/xds/xds_listener.cc +1 -0
  258. data/src/core/ext/xds/xds_listener.h +3 -3
  259. data/src/core/ext/xds/xds_resource_type.h +3 -3
  260. data/src/core/ext/xds/xds_resource_type_impl.h +3 -3
  261. data/src/core/ext/xds/xds_route_config.cc +6 -0
  262. data/src/core/ext/xds/xds_route_config.h +3 -3
  263. data/src/core/ext/xds/xds_routing.h +3 -3
  264. data/src/core/ext/xds/xds_transport.h +3 -3
  265. data/src/core/ext/xds/xds_transport_grpc.h +3 -3
  266. data/src/core/lib/address_utils/parse_address.h +3 -3
  267. data/src/core/lib/address_utils/sockaddr_utils.cc +1 -0
  268. data/src/core/lib/address_utils/sockaddr_utils.h +3 -3
  269. data/src/core/lib/avl/avl.h +3 -3
  270. data/src/core/lib/backoff/backoff.h +3 -3
  271. data/src/core/lib/channel/call_finalization.h +3 -3
  272. data/src/core/lib/channel/call_tracer.h +3 -3
  273. data/src/core/lib/channel/channel_args.cc +1 -0
  274. data/src/core/lib/channel/channel_args.h +11 -5
  275. data/src/core/lib/channel/channel_args_preconditioning.h +3 -3
  276. data/src/core/lib/channel/channel_fwd.h +3 -3
  277. data/src/core/lib/channel/channel_stack.cc +1 -2
  278. data/src/core/lib/channel/channel_stack.h +4 -4
  279. data/src/core/lib/channel/channel_stack_builder.h +3 -3
  280. data/src/core/lib/channel/channel_stack_builder_impl.cc +14 -1
  281. data/src/core/lib/channel/channel_stack_builder_impl.h +3 -3
  282. data/src/core/lib/channel/channel_trace.h +3 -3
  283. data/src/core/lib/channel/channelz.h +3 -3
  284. data/src/core/lib/channel/channelz_registry.h +3 -3
  285. data/src/core/lib/channel/connected_channel.cc +883 -354
  286. data/src/core/lib/channel/connected_channel.h +3 -3
  287. data/src/core/lib/channel/context.h +7 -3
  288. data/src/core/lib/channel/promise_based_filter.cc +509 -259
  289. data/src/core/lib/channel/promise_based_filter.h +118 -43
  290. data/src/core/lib/channel/status_util.h +3 -3
  291. data/src/core/lib/compression/compression_internal.h +3 -3
  292. data/src/core/lib/compression/message_compress.h +3 -3
  293. data/src/core/lib/config/core_configuration.h +3 -3
  294. data/src/core/lib/debug/event_log.h +3 -3
  295. data/src/core/lib/debug/histogram_view.h +3 -3
  296. data/src/core/lib/debug/stats.h +3 -3
  297. data/src/core/lib/debug/stats_data.cc +66 -65
  298. data/src/core/lib/debug/stats_data.h +42 -33
  299. data/src/core/lib/debug/trace.h +4 -26
  300. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
  301. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
  302. data/src/core/lib/event_engine/common_closures.h +3 -3
  303. data/src/core/lib/event_engine/default_event_engine.cc +9 -4
  304. data/src/core/lib/event_engine/default_event_engine.h +30 -6
  305. data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
  306. data/src/core/lib/event_engine/event_engine.cc +25 -0
  307. data/src/core/lib/event_engine/executor/executor.h +3 -3
  308. data/src/core/lib/event_engine/forkable.cc +11 -6
  309. data/src/core/lib/event_engine/forkable.h +3 -3
  310. data/src/core/lib/event_engine/handle_containers.h +10 -3
  311. data/src/core/lib/event_engine/poller.h +3 -3
  312. data/src/core/lib/event_engine/posix.h +158 -0
  313. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +44 -16
  314. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +14 -4
  315. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +6 -7
  316. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  317. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
  318. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -3
  319. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -3
  320. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -3
  321. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +52 -55
  322. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +46 -13
  323. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +82 -12
  324. data/src/core/lib/event_engine/posix_engine/posix_engine.h +23 -9
  325. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
  326. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +60 -7
  327. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +65 -14
  328. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +0 -1
  329. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -6
  330. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
  331. data/src/core/lib/event_engine/posix_engine/timer.h +3 -3
  332. data/src/core/lib/event_engine/posix_engine/timer_heap.h +3 -3
  333. data/src/core/lib/event_engine/posix_engine/timer_manager.h +3 -3
  334. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -3
  335. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +3 -3
  336. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +3 -3
  337. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +3 -3
  338. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
  339. data/src/core/lib/event_engine/resolved_address.cc +19 -0
  340. data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
  341. data/src/core/lib/event_engine/shim.cc +56 -0
  342. data/src/core/lib/event_engine/shim.h +33 -0
  343. data/src/core/lib/event_engine/slice.cc +1 -1
  344. data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -2
  345. data/src/core/lib/event_engine/tcp_socket_utils.h +8 -3
  346. data/src/core/lib/event_engine/thread_local.cc +29 -0
  347. data/src/core/lib/event_engine/thread_local.h +32 -0
  348. data/src/core/lib/event_engine/thread_pool.cc +41 -65
  349. data/src/core/lib/event_engine/thread_pool.h +21 -17
  350. data/src/core/lib/event_engine/time_util.h +3 -3
  351. data/src/core/lib/event_engine/trace.cc +6 -0
  352. data/src/core/lib/event_engine/trace.h +16 -3
  353. data/src/core/lib/event_engine/utils.cc +2 -2
  354. data/src/core/lib/event_engine/utils.h +12 -4
  355. data/src/core/lib/event_engine/windows/iocp.cc +24 -40
  356. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  357. data/src/core/lib/event_engine/windows/win_socket.cc +56 -33
  358. data/src/core/lib/event_engine/windows/win_socket.h +34 -25
  359. data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
  360. data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
  361. data/src/core/lib/event_engine/windows/windows_engine.cc +243 -20
  362. data/src/core/lib/event_engine/windows/windows_engine.h +62 -23
  363. data/src/core/lib/experiments/config.cc +16 -1
  364. data/src/core/lib/experiments/config.h +13 -3
  365. data/src/core/lib/experiments/experiments.cc +14 -8
  366. data/src/core/lib/experiments/experiments.h +80 -21
  367. data/src/core/lib/gpr/alloc.h +3 -3
  368. data/src/core/lib/gpr/spinlock.h +3 -3
  369. data/src/core/lib/gpr/string.h +3 -3
  370. data/src/core/lib/gpr/sync_abseil.cc +15 -7
  371. data/src/core/lib/gpr/time_precise.h +3 -3
  372. data/src/core/lib/gpr/tmpfile.h +3 -3
  373. data/src/core/lib/gpr/useful.h +3 -3
  374. data/src/core/lib/gprpp/atomic_utils.h +3 -3
  375. data/src/core/lib/gprpp/bitset.h +3 -3
  376. data/src/core/lib/gprpp/chunked_vector.h +3 -3
  377. data/src/core/lib/gprpp/construct_destruct.h +3 -3
  378. data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
  379. data/src/core/lib/gprpp/crash.h +3 -3
  380. data/src/core/lib/gprpp/debug_location.h +3 -6
  381. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  382. data/src/core/lib/gprpp/env.h +3 -3
  383. data/src/core/lib/gprpp/examine_stack.h +3 -3
  384. data/src/core/lib/gprpp/fork.cc +21 -4
  385. data/src/core/lib/gprpp/fork.h +7 -5
  386. data/src/core/lib/gprpp/global_config.h +3 -3
  387. data/src/core/lib/gprpp/global_config_custom.h +3 -3
  388. data/src/core/lib/gprpp/global_config_env.cc +1 -0
  389. data/src/core/lib/gprpp/global_config_env.h +3 -3
  390. data/src/core/lib/gprpp/global_config_generic.h +3 -3
  391. data/src/core/lib/gprpp/host_port.cc +2 -0
  392. data/src/core/lib/gprpp/host_port.h +3 -3
  393. data/src/core/lib/gprpp/load_file.h +3 -3
  394. data/src/core/lib/gprpp/manual_constructor.h +3 -3
  395. data/src/core/lib/gprpp/match.h +3 -3
  396. data/src/core/lib/gprpp/memory.h +3 -3
  397. data/src/core/lib/gprpp/mpscq.h +3 -3
  398. data/src/core/lib/gprpp/no_destruct.h +3 -3
  399. data/src/core/lib/gprpp/notification.h +3 -3
  400. data/src/core/lib/gprpp/orphanable.h +3 -3
  401. data/src/core/lib/gprpp/overload.h +3 -3
  402. data/src/core/lib/gprpp/packed_table.h +3 -3
  403. data/src/core/lib/gprpp/per_cpu.h +3 -3
  404. data/src/core/lib/gprpp/ref_counted.h +3 -3
  405. data/src/core/lib/gprpp/ref_counted_ptr.h +3 -3
  406. data/src/core/lib/gprpp/single_set_ptr.h +3 -3
  407. data/src/core/lib/gprpp/sorted_pack.h +3 -3
  408. data/src/core/lib/gprpp/stat.h +3 -3
  409. data/src/core/lib/gprpp/status_helper.h +3 -3
  410. data/src/core/lib/gprpp/strerror.cc +2 -0
  411. data/src/core/lib/gprpp/strerror.h +3 -3
  412. data/src/core/lib/gprpp/sync.h +3 -3
  413. data/src/core/lib/gprpp/table.h +3 -3
  414. data/src/core/lib/gprpp/tchar.h +3 -3
  415. data/src/core/lib/gprpp/thd.h +3 -3
  416. data/src/core/lib/gprpp/time.cc +1 -0
  417. data/src/core/lib/gprpp/time.h +3 -3
  418. data/src/core/lib/gprpp/time_averaged_stats.h +3 -3
  419. data/src/core/lib/gprpp/time_util.h +3 -3
  420. data/src/core/lib/gprpp/unique_type_name.h +3 -3
  421. data/src/core/lib/gprpp/validation_errors.h +3 -3
  422. data/src/core/lib/gprpp/work_serializer.h +3 -3
  423. data/src/core/lib/handshaker/proxy_mapper.h +3 -3
  424. data/src/core/lib/handshaker/proxy_mapper_registry.h +3 -3
  425. data/src/core/lib/http/format_request.cc +1 -0
  426. data/src/core/lib/http/format_request.h +3 -3
  427. data/src/core/lib/http/httpcli.cc +1 -0
  428. data/src/core/lib/http/httpcli.h +3 -3
  429. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
  430. data/src/core/lib/http/parser.h +3 -3
  431. data/src/core/lib/iomgr/block_annotate.h +3 -3
  432. data/src/core/lib/iomgr/buffer_list.h +3 -3
  433. data/src/core/lib/iomgr/call_combiner.cc +4 -4
  434. data/src/core/lib/iomgr/call_combiner.h +3 -3
  435. data/src/core/lib/iomgr/cfstream_handle.h +3 -3
  436. data/src/core/lib/iomgr/closure.cc +27 -0
  437. data/src/core/lib/iomgr/closure.h +5 -3
  438. data/src/core/lib/iomgr/combiner.h +3 -3
  439. data/src/core/lib/iomgr/dynamic_annotations.h +3 -3
  440. data/src/core/lib/iomgr/endpoint.h +3 -3
  441. data/src/core/lib/iomgr/endpoint_cfstream.h +3 -3
  442. data/src/core/lib/iomgr/endpoint_pair.h +3 -3
  443. data/src/core/lib/iomgr/endpoint_pair_windows.cc +10 -2
  444. data/src/core/lib/iomgr/error.h +3 -3
  445. data/src/core/lib/iomgr/error_cfstream.h +3 -3
  446. data/src/core/lib/iomgr/ev_apple.h +3 -3
  447. data/src/core/lib/iomgr/ev_epoll1_linux.h +3 -3
  448. data/src/core/lib/iomgr/ev_poll_posix.h +3 -3
  449. data/src/core/lib/iomgr/ev_posix.h +3 -3
  450. data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
  451. data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
  452. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
  453. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  454. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  455. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  456. data/src/core/lib/iomgr/exec_ctx.h +3 -3
  457. data/src/core/lib/iomgr/executor.h +3 -3
  458. data/src/core/lib/iomgr/fork_posix.cc +5 -4
  459. data/src/core/lib/iomgr/gethostname.h +3 -3
  460. data/src/core/lib/iomgr/grpc_if_nametoindex.h +3 -3
  461. data/src/core/lib/iomgr/internal_errqueue.h +3 -3
  462. data/src/core/lib/iomgr/iocp_windows.h +3 -3
  463. data/src/core/lib/iomgr/iomgr.h +3 -3
  464. data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
  465. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  466. data/src/core/lib/iomgr/load_file.h +3 -3
  467. data/src/core/lib/iomgr/lockfree_event.h +3 -3
  468. data/src/core/lib/iomgr/nameser.h +3 -3
  469. data/src/core/lib/iomgr/polling_entity.h +3 -3
  470. data/src/core/lib/iomgr/pollset.h +3 -3
  471. data/src/core/lib/iomgr/pollset_set.h +3 -3
  472. data/src/core/lib/iomgr/pollset_set_windows.h +3 -3
  473. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  474. data/src/core/lib/iomgr/pollset_windows.h +3 -3
  475. data/src/core/lib/iomgr/port.h +3 -3
  476. data/src/core/lib/iomgr/python_util.h +3 -3
  477. data/src/core/lib/iomgr/resolve_address.h +3 -3
  478. data/src/core/lib/iomgr/resolve_address_impl.h +3 -3
  479. data/src/core/lib/iomgr/resolve_address_posix.h +3 -3
  480. data/src/core/lib/iomgr/resolve_address_windows.h +3 -3
  481. data/src/core/lib/iomgr/resolved_address.h +3 -3
  482. data/src/core/lib/iomgr/sockaddr.h +3 -3
  483. data/src/core/lib/iomgr/sockaddr_posix.h +3 -3
  484. data/src/core/lib/iomgr/sockaddr_windows.h +3 -3
  485. data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
  486. data/src/core/lib/iomgr/socket_mutator.h +3 -3
  487. data/src/core/lib/iomgr/socket_utils.h +3 -3
  488. data/src/core/lib/iomgr/socket_utils_posix.h +3 -3
  489. data/src/core/lib/iomgr/socket_windows.h +3 -3
  490. data/src/core/lib/iomgr/systemd_utils.cc +19 -19
  491. data/src/core/lib/iomgr/systemd_utils.h +24 -24
  492. data/src/core/lib/iomgr/tcp_client.h +3 -3
  493. data/src/core/lib/iomgr/tcp_client_posix.cc +12 -0
  494. data/src/core/lib/iomgr/tcp_client_posix.h +3 -3
  495. data/src/core/lib/iomgr/tcp_client_windows.cc +13 -1
  496. data/src/core/lib/iomgr/tcp_posix.cc +49 -65
  497. data/src/core/lib/iomgr/tcp_posix.h +3 -3
  498. data/src/core/lib/iomgr/tcp_server.h +3 -3
  499. data/src/core/lib/iomgr/tcp_server_posix.cc +219 -4
  500. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -3
  501. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -6
  502. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  503. data/src/core/lib/iomgr/timer.h +3 -3
  504. data/src/core/lib/iomgr/timer_generic.h +3 -3
  505. data/src/core/lib/iomgr/timer_heap.h +3 -3
  506. data/src/core/lib/iomgr/timer_manager.h +3 -3
  507. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -3
  508. data/src/core/lib/iomgr/wakeup_fd_pipe.h +3 -3
  509. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -3
  510. data/src/core/lib/json/json.h +3 -3
  511. data/src/core/lib/json/json_args.h +3 -3
  512. data/src/core/lib/json/json_channel_args.h +3 -3
  513. data/src/core/lib/json/json_object_loader.h +3 -3
  514. data/src/core/lib/json/json_reader.cc +1 -0
  515. data/src/core/lib/json/json_util.h +3 -3
  516. data/src/core/lib/load_balancing/lb_policy.cc +9 -0
  517. data/src/core/lib/load_balancing/lb_policy.h +9 -5
  518. data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
  519. data/src/core/lib/load_balancing/lb_policy_registry.cc +1 -0
  520. data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
  521. data/src/core/lib/load_balancing/subchannel_interface.h +8 -6
  522. data/src/core/lib/matchers/matchers.cc +1 -0
  523. data/src/core/lib/matchers/matchers.h +3 -3
  524. data/src/core/lib/promise/activity.cc +8 -6
  525. data/src/core/lib/promise/activity.h +52 -66
  526. data/src/core/lib/promise/arena_promise.h +3 -3
  527. data/src/core/lib/promise/context.h +3 -3
  528. data/src/core/lib/promise/detail/basic_join.h +197 -0
  529. data/src/core/lib/promise/detail/basic_seq.h +10 -16
  530. data/src/core/lib/promise/detail/promise_factory.h +3 -3
  531. data/src/core/lib/promise/detail/promise_like.h +3 -3
  532. data/src/core/lib/promise/detail/status.h +3 -3
  533. data/src/core/lib/promise/detail/switch.h +3 -3
  534. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -3
  535. data/src/core/lib/promise/if.h +195 -0
  536. data/src/core/lib/promise/interceptor_list.h +308 -0
  537. data/src/core/lib/promise/intra_activity_waiter.h +9 -3
  538. data/src/core/lib/promise/latch.h +99 -5
  539. data/src/core/lib/promise/loop.h +4 -4
  540. data/src/core/lib/promise/map.h +4 -6
  541. data/src/core/lib/promise/pipe.h +296 -193
  542. data/src/core/lib/promise/poll.h +113 -14
  543. data/src/core/lib/promise/promise.h +4 -5
  544. data/src/core/lib/promise/race.h +6 -9
  545. data/src/core/lib/promise/seq.h +3 -3
  546. data/src/core/lib/promise/sleep.h +3 -3
  547. data/src/core/lib/promise/{pipe.cc → trace.cc} +3 -2
  548. data/src/core/lib/promise/trace.h +24 -0
  549. data/src/core/lib/promise/try_join.h +82 -0
  550. data/src/core/lib/promise/try_seq.h +3 -3
  551. data/src/core/lib/resolver/resolver.h +3 -3
  552. data/src/core/lib/resolver/resolver_factory.h +4 -4
  553. data/src/core/lib/resolver/resolver_registry.cc +15 -0
  554. data/src/core/lib/resolver/resolver_registry.h +3 -3
  555. data/src/core/lib/resolver/server_address.cc +1 -0
  556. data/src/core/lib/resolver/server_address.h +3 -3
  557. data/src/core/lib/resource_quota/api.h +3 -3
  558. data/src/core/lib/resource_quota/arena.cc +36 -9
  559. data/src/core/lib/resource_quota/arena.h +84 -22
  560. data/src/core/lib/resource_quota/memory_quota.h +3 -3
  561. data/src/core/lib/resource_quota/periodic_update.h +3 -3
  562. data/src/core/lib/resource_quota/resource_quota.h +3 -3
  563. data/src/core/lib/resource_quota/thread_quota.h +3 -3
  564. data/src/core/lib/resource_quota/trace.h +3 -3
  565. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  566. data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -3
  567. data/src/core/lib/security/authorization/evaluate_args.h +3 -3
  568. data/src/core/lib/security/authorization/grpc_authorization_engine.h +3 -3
  569. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
  570. data/src/core/lib/security/authorization/matchers.h +3 -3
  571. data/src/core/lib/security/authorization/rbac_policy.cc +1 -0
  572. data/src/core/lib/security/authorization/rbac_policy.h +3 -3
  573. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +3 -3
  574. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +3 -3
  575. data/src/core/lib/security/context/security_context.h +3 -3
  576. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
  577. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +3 -3
  578. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +3 -3
  579. data/src/core/lib/security/credentials/call_creds_util.h +3 -3
  580. data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
  581. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
  582. data/src/core/lib/security/credentials/credentials.h +3 -3
  583. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -0
  584. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +3 -3
  585. data/src/core/lib/security/credentials/external/aws_request_signer.cc +1 -0
  586. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  587. data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -0
  588. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  589. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
  590. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  591. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
  592. data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
  593. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  594. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  595. data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
  596. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
  597. data/src/core/lib/security/credentials/jwt/json_token.h +3 -3
  598. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  599. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
  600. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  601. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -3
  602. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  603. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -3
  604. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +3 -3
  605. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -1
  606. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
  607. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
  608. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
  609. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
  610. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  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.h +3 -3
  613. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
  614. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  615. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
  616. data/src/core/lib/security/security_connector/load_system_roots.h +3 -3
  617. data/src/core/lib/security/security_connector/load_system_roots_supported.h +3 -3
  618. data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
  619. data/src/core/lib/security/security_connector/security_connector.h +3 -3
  620. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -0
  621. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +3 -3
  622. data/src/core/lib/security/security_connector/ssl_utils.h +3 -3
  623. data/src/core/lib/security/security_connector/ssl_utils_config.h +3 -3
  624. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
  625. data/src/core/lib/security/transport/auth_filters.h +27 -5
  626. data/src/core/lib/security/transport/secure_endpoint.h +3 -3
  627. data/src/core/lib/security/transport/security_handshaker.cc +9 -0
  628. data/src/core/lib/security/transport/security_handshaker.h +3 -3
  629. data/src/core/lib/security/transport/server_auth_filter.cc +120 -251
  630. data/src/core/lib/security/transport/tsi_error.h +3 -3
  631. data/src/core/lib/security/util/json_util.h +3 -3
  632. data/src/core/lib/service_config/service_config.h +3 -3
  633. data/src/core/lib/service_config/service_config_call_data.h +3 -3
  634. data/src/core/lib/service_config/service_config_impl.h +3 -3
  635. data/src/core/lib/service_config/service_config_parser.h +3 -3
  636. data/src/core/lib/slice/b64.h +3 -3
  637. data/src/core/lib/slice/percent_encoding.h +3 -3
  638. data/src/core/lib/slice/slice.cc +3 -3
  639. data/src/core/lib/slice/slice.h +14 -21
  640. data/src/core/lib/slice/slice_buffer.h +10 -4
  641. data/src/core/lib/slice/slice_internal.h +3 -3
  642. data/src/core/lib/slice/slice_refcount.cc +20 -0
  643. data/src/core/lib/slice/slice_refcount.h +26 -6
  644. data/src/core/lib/slice/slice_string_helpers.h +3 -3
  645. data/src/core/lib/surface/api_trace.h +3 -3
  646. data/src/core/lib/surface/builtins.h +3 -3
  647. data/src/core/lib/surface/call.cc +866 -252
  648. data/src/core/lib/surface/call.h +31 -3
  649. data/src/core/lib/surface/call_log_batch.cc +1 -0
  650. data/src/core/lib/surface/call_test_only.h +3 -3
  651. data/src/core/lib/surface/call_trace.cc +21 -11
  652. data/src/core/lib/surface/call_trace.h +3 -3
  653. data/src/core/lib/surface/channel.h +3 -3
  654. data/src/core/lib/surface/channel_init.h +3 -3
  655. data/src/core/lib/surface/channel_stack_type.h +3 -3
  656. data/src/core/lib/surface/completion_queue.cc +1 -0
  657. data/src/core/lib/surface/completion_queue.h +3 -3
  658. data/src/core/lib/surface/completion_queue_factory.h +3 -3
  659. data/src/core/lib/surface/event_string.cc +1 -0
  660. data/src/core/lib/surface/event_string.h +3 -3
  661. data/src/core/lib/surface/init.cc +1 -1
  662. data/src/core/lib/surface/init.h +3 -3
  663. data/src/core/lib/surface/init_internally.h +3 -3
  664. data/src/core/lib/surface/lame_client.cc +3 -1
  665. data/src/core/lib/surface/lame_client.h +3 -3
  666. data/src/core/lib/surface/server.cc +273 -27
  667. data/src/core/lib/surface/server.h +6 -3
  668. data/src/core/lib/surface/validate_metadata.h +3 -3
  669. data/src/core/lib/surface/version.cc +2 -2
  670. data/src/core/lib/transport/bdp_estimator.h +3 -3
  671. data/src/core/lib/transport/connectivity_state.h +3 -3
  672. data/src/core/lib/transport/error_utils.h +3 -3
  673. data/src/core/lib/transport/handshaker.cc +11 -0
  674. data/src/core/lib/transport/handshaker.h +4 -4
  675. data/src/core/lib/transport/handshaker_factory.h +3 -3
  676. data/src/core/lib/transport/handshaker_registry.h +3 -3
  677. data/src/core/lib/transport/http2_errors.h +3 -3
  678. data/src/core/lib/transport/http_connect_handshaker.h +3 -3
  679. data/src/core/lib/transport/metadata_batch.h +3 -3
  680. data/src/core/lib/transport/parsed_metadata.h +3 -3
  681. data/src/core/lib/transport/pid_controller.h +3 -3
  682. data/src/core/lib/transport/status_conversion.h +3 -3
  683. data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
  684. data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
  685. data/src/core/lib/transport/timeout_encoding.h +3 -3
  686. data/src/core/lib/transport/transport.cc +3 -8
  687. data/src/core/lib/transport/transport.h +16 -8
  688. data/src/core/lib/transport/transport_fwd.h +3 -3
  689. data/src/core/lib/transport/transport_impl.h +3 -3
  690. data/src/core/lib/transport/transport_op_string.cc +1 -0
  691. data/src/core/lib/uri/uri_parser.cc +1 -1
  692. data/src/core/lib/uri/uri_parser.h +3 -3
  693. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -0
  694. data/src/core/tsi/alts/crypt/gsec.h +3 -3
  695. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -3
  696. data/src/core/tsi/alts/frame_protector/alts_crypter.h +3 -3
  697. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +3 -3
  698. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +3 -3
  699. data/src/core/tsi/alts/frame_protector/frame_handler.h +3 -3
  700. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -3
  701. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +3 -3
  702. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -3
  703. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -3
  704. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +3 -3
  705. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -3
  706. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -3
  707. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +3 -3
  708. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +3 -3
  709. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -3
  710. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +3 -3
  711. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +3 -3
  712. data/src/core/tsi/fake_transport_security.h +3 -3
  713. data/src/core/tsi/local_transport_security.h +3 -3
  714. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
  715. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
  716. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
  717. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -3
  718. data/src/core/tsi/ssl_transport_security.cc +113 -24
  719. data/src/core/tsi/ssl_transport_security.h +5 -3
  720. data/src/core/tsi/ssl_transport_security_utils.h +3 -3
  721. data/src/core/tsi/ssl_types.h +3 -3
  722. data/src/core/tsi/transport_security.h +3 -3
  723. data/src/core/tsi/transport_security_grpc.h +3 -3
  724. data/src/core/tsi/transport_security_interface.h +3 -3
  725. data/src/ruby/lib/grpc/version.rb +1 -1
  726. data/src/ruby/pb/generate_proto_ruby.sh +0 -6
  727. data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
  728. data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
  729. data/third_party/abseil-cpp/absl/base/config.h +44 -3
  730. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
  731. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  732. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
  733. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  734. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  735. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  736. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
  737. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
  738. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
  739. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
  740. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  741. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
  742. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
  743. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  744. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  745. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
  746. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  747. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  748. data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
  749. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  750. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  751. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
  752. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
  753. data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
  754. data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
  755. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  756. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
  757. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  758. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
  759. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
  760. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
  761. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
  762. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
  763. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  764. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  765. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  766. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  767. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  768. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  769. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  770. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  771. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  772. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  773. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  774. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  775. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  776. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  777. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  778. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  779. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  780. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  781. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  782. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
  783. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  784. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  785. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
  786. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
  787. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  788. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
  789. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  790. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
  791. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
  792. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  793. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
  794. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  795. data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
  796. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
  797. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  798. data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
  799. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  800. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  801. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  802. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
  803. data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
  804. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
  805. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  806. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
  807. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
  808. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
  809. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
  810. data/third_party/abseil-cpp/absl/random/random.h +6 -6
  811. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
  812. data/third_party/abseil-cpp/absl/status/status.cc +19 -12
  813. data/third_party/abseil-cpp/absl/status/status.h +2 -2
  814. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  815. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  816. data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
  817. data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
  818. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
  819. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  820. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  821. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  822. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  823. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  824. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +326 -70
  825. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
  826. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
  827. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
  828. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
  829. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
  830. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  831. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  832. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
  833. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  834. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
  835. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  836. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  837. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
  838. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  839. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  840. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  841. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  842. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  843. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  844. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
  845. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  846. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
  847. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
  848. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  849. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
  850. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
  851. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  852. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  853. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
  854. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  855. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  856. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  857. data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
  858. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  859. data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
  860. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  861. data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
  862. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
  863. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  864. data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
  865. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  866. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  867. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  868. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
  869. data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
  870. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  871. data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
  872. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  873. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  874. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  875. data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
  876. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  877. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  878. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  879. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  880. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  881. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  882. data/third_party/abseil-cpp/absl/time/time.h +253 -158
  883. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  884. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  885. data/third_party/abseil-cpp/absl/types/span.h +29 -7
  886. metadata +75 -10
  887. data/src/core/lib/event_engine/socket_notifier.h +0 -55
  888. data/src/core/lib/promise/for_each.h +0 -155
  889. data/src/core/lib/promise/map_pipe.h +0 -88
  890. data/src/core/lib/promise/try_concurrently.h +0 -342
@@ -14,8 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #ifndef GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
18
- #define GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
17
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
18
+ #define GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
@@ -41,6 +41,7 @@ struct grpc_deadline_state {
41
41
  ~grpc_deadline_state();
42
42
 
43
43
  // We take a reference to the call stack for the timer callback.
44
+ grpc_call_element* elem;
44
45
  grpc_call_stack* call_stack;
45
46
  grpc_core::CallCombiner* call_combiner;
46
47
  grpc_core::Arena* arena;
@@ -53,11 +54,6 @@ struct grpc_deadline_state {
53
54
  grpc_closure* original_recv_trailing_metadata_ready;
54
55
  };
55
56
 
56
- //
57
- // NOTE: All of these functions require that the first field in
58
- // elem->call_data is a grpc_deadline_state.
59
- //
60
-
61
57
  // Cancels the existing timer and starts a new one with new_deadline.
62
58
  //
63
59
  // Note: It is generally safe to call this with an earlier deadline
@@ -67,7 +63,7 @@ struct grpc_deadline_state {
67
63
  // deadline may result in the timer being called twice.
68
64
  //
69
65
  // Note: Must be called while holding the call combiner.
70
- void grpc_deadline_state_reset(grpc_call_element* elem,
66
+ void grpc_deadline_state_reset(grpc_deadline_state* deadline_state,
71
67
  grpc_core::Timestamp new_deadline);
72
68
 
73
69
  // To be called from the client-side filter's start_transport_stream_op_batch()
@@ -79,7 +75,7 @@ void grpc_deadline_state_reset(grpc_call_element* elem,
79
75
  //
80
76
  // Note: Must be called while holding the call combiner.
81
77
  void grpc_deadline_state_client_start_transport_stream_op_batch(
82
- grpc_call_element* elem, grpc_transport_stream_op_batch* op);
78
+ grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op);
83
79
 
84
80
  // Should deadline checking be performed (according to channel args)
85
81
  bool grpc_deadline_checking_enabled(const grpc_core::ChannelArgs& args);
@@ -90,4 +86,4 @@ bool grpc_deadline_checking_enabled(const grpc_core::ChannelArgs& args);
90
86
  extern const grpc_channel_filter grpc_client_deadline_filter;
91
87
  extern const grpc_channel_filter grpc_server_deadline_filter;
92
88
 
93
- #endif // GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
89
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
@@ -14,8 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #ifndef GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
18
- #define GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
17
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
18
+ #define GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
@@ -68,4 +68,4 @@ class FaultInjectionFilter : public ChannelFilter {
68
68
 
69
69
  } // namespace grpc_core
70
70
 
71
- #endif // GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
71
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H
@@ -14,8 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #ifndef GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
18
- #define GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
17
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
18
+ #define GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
@@ -109,4 +109,4 @@ class FaultInjectionServiceConfigParser final
109
109
 
110
110
  } // namespace grpc_core
111
111
 
112
- #endif // GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
112
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
@@ -21,6 +21,7 @@
21
21
 
22
22
  #include <algorithm>
23
23
  #include <functional>
24
+ #include <initializer_list>
24
25
  #include <memory>
25
26
  #include <string>
26
27
  #include <utility>
@@ -39,10 +40,11 @@
39
40
  #include "src/core/lib/channel/channel_args.h"
40
41
  #include "src/core/lib/channel/channel_stack.h"
41
42
  #include "src/core/lib/promise/context.h"
42
- #include "src/core/lib/promise/detail/basic_seq.h"
43
43
  #include "src/core/lib/promise/latch.h"
44
- #include "src/core/lib/promise/seq.h"
45
- #include "src/core/lib/promise/try_concurrently.h"
44
+ #include "src/core/lib/promise/map.h"
45
+ #include "src/core/lib/promise/pipe.h"
46
+ #include "src/core/lib/promise/poll.h"
47
+ #include "src/core/lib/promise/race.h"
46
48
  #include "src/core/lib/resource_quota/arena.h"
47
49
  #include "src/core/lib/slice/percent_encoding.h"
48
50
  #include "src/core/lib/transport/status_conversion.h"
@@ -117,24 +119,27 @@ ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
117
119
  md->Set(ContentTypeMetadata(), ContentTypeMetadata::kApplicationGrpc);
118
120
  md->Set(UserAgentMetadata(), user_agent_.Ref());
119
121
 
120
- auto* read_latch = GetContext<Arena>()->New<Latch<ServerMetadata*>>();
121
- auto* write_latch =
122
- std::exchange(call_args.server_initial_metadata, read_latch);
123
-
124
- return TryConcurrently(
125
- Seq(next_promise_factory(std::move(call_args)),
126
- [](ServerMetadataHandle md) -> ServerMetadataHandle {
127
- auto r = CheckServerMetadata(md.get());
128
- if (!r.ok()) return ServerMetadataFromStatus(r);
129
- return md;
130
- }))
131
- .NecessaryPull(Seq(read_latch->Wait(),
132
- [write_latch](ServerMetadata** md) -> absl::Status {
133
- auto r = *md == nullptr ? absl::OkStatus()
134
- : CheckServerMetadata(*md);
135
- write_latch->Set(*md);
136
- return r;
137
- }));
122
+ auto* initial_metadata_err =
123
+ GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
124
+
125
+ call_args.server_initial_metadata->InterceptAndMap(
126
+ [initial_metadata_err](
127
+ ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
128
+ auto r = CheckServerMetadata(md.get());
129
+ if (!r.ok()) {
130
+ initial_metadata_err->Set(ServerMetadataFromStatus(r));
131
+ return absl::nullopt;
132
+ }
133
+ return std::move(md);
134
+ });
135
+
136
+ return Race(Map(next_promise_factory(std::move(call_args)),
137
+ [](ServerMetadataHandle md) -> ServerMetadataHandle {
138
+ auto r = CheckServerMetadata(md.get());
139
+ if (!r.ok()) return ServerMetadataFromStatus(r);
140
+ return md;
141
+ }),
142
+ initial_metadata_err->Wait());
138
143
  }
139
144
 
140
145
  HttpClientFilter::HttpClientFilter(HttpSchemeMetadata::ValueType scheme,
@@ -15,8 +15,8 @@
15
15
  //
16
16
  //
17
17
 
18
- #ifndef GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
19
- #define GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
18
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
19
+ #define GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
@@ -58,4 +58,4 @@ class HttpClientFilter : public ChannelFilter {
58
58
 
59
59
  } // namespace grpc_core
60
60
 
61
- #endif // GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
61
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
@@ -16,8 +16,8 @@
16
16
  //
17
17
  //
18
18
 
19
- #ifndef GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
20
- #define GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
19
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
20
+ #define GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -53,4 +53,4 @@ class ClientAuthorityFilter final : public ChannelFilter {
53
53
 
54
54
  } // namespace grpc_core
55
55
 
56
- #endif // GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
56
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
@@ -19,8 +19,9 @@
19
19
  #include <inttypes.h>
20
20
 
21
21
  #include <functional>
22
+ #include <initializer_list>
22
23
  #include <memory>
23
- #include <type_traits>
24
+ #include <string>
24
25
  #include <utility>
25
26
 
26
27
  #include "absl/meta/type_traits.h"
@@ -42,17 +43,16 @@
42
43
  #include "src/core/lib/compression/compression_internal.h"
43
44
  #include "src/core/lib/compression/message_compress.h"
44
45
  #include "src/core/lib/debug/trace.h"
46
+ #include "src/core/lib/promise/activity.h"
45
47
  #include "src/core/lib/promise/context.h"
46
- #include "src/core/lib/promise/detail/promise_like.h"
47
48
  #include "src/core/lib/promise/latch.h"
48
- #include "src/core/lib/promise/map_pipe.h"
49
49
  #include "src/core/lib/promise/pipe.h"
50
- #include "src/core/lib/promise/promise.h"
51
- #include "src/core/lib/promise/seq.h"
52
- #include "src/core/lib/promise/try_concurrently.h"
50
+ #include "src/core/lib/promise/poll.h"
51
+ #include "src/core/lib/promise/race.h"
53
52
  #include "src/core/lib/resource_quota/arena.h"
54
53
  #include "src/core/lib/slice/slice_buffer.h"
55
54
  #include "src/core/lib/surface/call.h"
55
+ #include "src/core/lib/surface/call_trace.h"
56
56
  #include "src/core/lib/transport/metadata_batch.h"
57
57
  #include "src/core/lib/transport/transport.h"
58
58
 
@@ -157,20 +157,19 @@ MessageHandle CompressionFilter::CompressMessage(
157
157
  }
158
158
 
159
159
  absl::StatusOr<MessageHandle> CompressionFilter::DecompressMessage(
160
- MessageHandle message, grpc_compression_algorithm algorithm,
161
- absl::optional<uint32_t> max_recv_message_length) const {
160
+ MessageHandle message, DecompressArgs args) const {
162
161
  if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
163
162
  gpr_log(GPR_ERROR, "DecompressMessage: len=%" PRIdPTR " max=%d alg=%d",
164
- message->payload()->Length(), max_recv_message_length.value_or(-1),
165
- algorithm);
163
+ message->payload()->Length(),
164
+ args.max_recv_message_length.value_or(-1), args.algorithm);
166
165
  }
167
166
  // Check max message length.
168
- if (max_recv_message_length.has_value() &&
167
+ if (args.max_recv_message_length.has_value() &&
169
168
  message->payload()->Length() >
170
- static_cast<size_t>(*max_recv_message_length)) {
169
+ static_cast<size_t>(*args.max_recv_message_length)) {
171
170
  return absl::ResourceExhaustedError(absl::StrFormat(
172
171
  "Received message larger than max (%u vs. %d)",
173
- message->payload()->Length(), *max_recv_message_length));
172
+ message->payload()->Length(), *args.max_recv_message_length));
174
173
  }
175
174
  // Check if decompression is enabled (if not, we can just pass the message
176
175
  // up).
@@ -180,11 +179,11 @@ absl::StatusOr<MessageHandle> CompressionFilter::DecompressMessage(
180
179
  }
181
180
  // Try to decompress the payload.
182
181
  SliceBuffer decompressed_slices;
183
- if (grpc_msg_decompress(algorithm, message->payload()->c_slice_buffer(),
182
+ if (grpc_msg_decompress(args.algorithm, message->payload()->c_slice_buffer(),
184
183
  decompressed_slices.c_slice_buffer()) == 0) {
185
184
  return absl::InternalError(
186
185
  absl::StrCat("Unexpected error decompressing data for algorithm ",
187
- CompressionAlgorithmAsString(algorithm)));
186
+ CompressionAlgorithmAsString(args.algorithm)));
188
187
  }
189
188
  // Swap the decompressed slices into the message.
190
189
  message->payload()->Swap(&decompressed_slices);
@@ -193,123 +192,116 @@ absl::StatusOr<MessageHandle> CompressionFilter::DecompressMessage(
193
192
  return std::move(message);
194
193
  }
195
194
 
196
- class CompressionFilter::DecompressLoop {
197
- public:
198
- explicit DecompressLoop(CompressionFilter* filter, CallArgs& call_args)
199
- : filter_(filter),
200
- mapper_(PipeMapper<MessageHandle>::Intercept(
201
- *call_args.incoming_messages)) {}
202
-
203
- // Once we have a compression algorithm we can construct the decompression
204
- // loop.
205
- // Returns a promise that resolves to MessageHandle.
206
- auto TakeAndRun(grpc_compression_algorithm algorithm) {
207
- // Configure max receive size.
208
- auto max_recv_message_length = filter_->max_recv_size_;
209
- const MessageSizeParsedConfig* limits =
210
- MessageSizeParsedConfig::GetFromCallContext(
211
- GetContext<grpc_call_context_element>(),
212
- filter_->message_size_service_config_parser_index_);
213
- if (limits != nullptr && limits->max_recv_size().has_value() &&
214
- (!max_recv_message_length.has_value() ||
215
- *limits->max_recv_size() < *max_recv_message_length)) {
216
- max_recv_message_length = *limits->max_recv_size();
217
- }
218
- // Interject decompression into the message loop.
219
- return mapper_.TakeAndRun([algorithm, max_recv_message_length,
220
- filter = filter_](MessageHandle message) {
221
- return filter->DecompressMessage(std::move(message), algorithm,
222
- max_recv_message_length);
223
- });
195
+ grpc_compression_algorithm CompressionFilter::HandleOutgoingMetadata(
196
+ grpc_metadata_batch& outgoing_metadata) {
197
+ const auto algorithm = outgoing_metadata.Take(GrpcInternalEncodingRequest())
198
+ .value_or(default_compression_algorithm());
199
+ // Convey supported compression algorithms.
200
+ outgoing_metadata.Set(GrpcAcceptEncodingMetadata(),
201
+ enabled_compression_algorithms());
202
+ if (algorithm != GRPC_COMPRESS_NONE) {
203
+ outgoing_metadata.Set(GrpcEncodingMetadata(), algorithm);
224
204
  }
205
+ return algorithm;
206
+ }
225
207
 
226
- private:
227
- CompressionFilter* filter_;
228
- PipeMapper<MessageHandle> mapper_;
229
- };
230
-
231
- class CompressionFilter::CompressLoop {
232
- public:
233
- explicit CompressLoop(CompressionFilter* filter, CallArgs& call_args)
234
- : filter_(filter),
235
- mapper_(PipeMapper<MessageHandle>::Intercept(
236
- *call_args.outgoing_messages)) {}
237
-
238
- // Once we're ready to send initial metadata we can construct the compression
239
- // loop.
240
- // Returns a promise that resolves to MessageHandle.
241
- auto TakeAndRun(grpc_metadata_batch& outgoing_metadata) {
242
- const auto algorithm =
243
- outgoing_metadata.Take(GrpcInternalEncodingRequest())
244
- .value_or(filter_->default_compression_algorithm());
245
- // Convey supported compression algorithms.
246
- outgoing_metadata.Set(GrpcAcceptEncodingMetadata(),
247
- filter_->enabled_compression_algorithms());
248
- if (algorithm != GRPC_COMPRESS_NONE) {
249
- outgoing_metadata.Set(GrpcEncodingMetadata(), algorithm);
250
- }
251
- // Interject compression into the message loop.
252
- return mapper_.TakeAndRun([filter = filter_, algorithm](MessageHandle m) {
253
- return filter->CompressMessage(std::move(m), algorithm);
254
- });
208
+ CompressionFilter::DecompressArgs CompressionFilter::HandleIncomingMetadata(
209
+ const grpc_metadata_batch& incoming_metadata) {
210
+ // Configure max receive size.
211
+ auto max_recv_message_length = max_recv_size_;
212
+ const MessageSizeParsedConfig* limits =
213
+ MessageSizeParsedConfig::GetFromCallContext(
214
+ GetContext<grpc_call_context_element>(),
215
+ message_size_service_config_parser_index_);
216
+ if (limits != nullptr && limits->max_recv_size().has_value() &&
217
+ (!max_recv_message_length.has_value() ||
218
+ *limits->max_recv_size() < *max_recv_message_length)) {
219
+ max_recv_message_length = *limits->max_recv_size();
255
220
  }
256
-
257
- private:
258
- CompressionFilter* filter_;
259
- PipeMapper<MessageHandle> mapper_;
260
- };
221
+ return DecompressArgs{incoming_metadata.get(GrpcEncodingMetadata())
222
+ .value_or(GRPC_COMPRESS_NONE),
223
+ max_recv_message_length};
224
+ }
261
225
 
262
226
  ArenaPromise<ServerMetadataHandle> ClientCompressionFilter::MakeCallPromise(
263
227
  CallArgs call_args, NextPromiseFactory next_promise_factory) {
264
- auto compress_loop = CompressLoop(this, call_args)
265
- .TakeAndRun(*call_args.client_initial_metadata);
266
- DecompressLoop decompress_loop(this, call_args);
267
- auto* server_initial_metadata = call_args.server_initial_metadata;
268
- // Concurrently:
269
- // - call the next filter
270
- // - wait for initial metadata from the server and then commence decompression
271
- // - compress outgoing messages
272
- return TryConcurrently(next_promise_factory(std::move(call_args)))
273
- .NecessaryPull(Seq(server_initial_metadata->Wait(),
274
- [decompress_loop = std::move(decompress_loop)](
275
- ServerMetadata** server_initial_metadata) mutable
276
- -> ArenaPromise<absl::Status> {
277
- if (*server_initial_metadata == nullptr) {
278
- return ImmediateOkStatus();
279
- }
280
- return decompress_loop.TakeAndRun(
281
- (*server_initial_metadata)
282
- ->get(GrpcEncodingMetadata())
283
- .value_or(GRPC_COMPRESS_NONE));
284
- }))
285
- .Push(std::move(compress_loop));
228
+ auto compression_algorithm =
229
+ HandleOutgoingMetadata(*call_args.client_initial_metadata);
230
+ call_args.client_to_server_messages->InterceptAndMap(
231
+ [compression_algorithm,
232
+ this](MessageHandle message) -> absl::optional<MessageHandle> {
233
+ return CompressMessage(std::move(message), compression_algorithm);
234
+ });
235
+ auto* decompress_args = GetContext<Arena>()->New<DecompressArgs>(
236
+ DecompressArgs{GRPC_COMPRESS_NONE, absl::nullopt});
237
+ auto* decompress_err =
238
+ GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
239
+ call_args.server_initial_metadata->InterceptAndMap(
240
+ [decompress_args, this](ServerMetadataHandle server_initial_metadata)
241
+ -> absl::optional<ServerMetadataHandle> {
242
+ if (server_initial_metadata == nullptr) return absl::nullopt;
243
+ *decompress_args = HandleIncomingMetadata(*server_initial_metadata);
244
+ return std::move(server_initial_metadata);
245
+ });
246
+ call_args.server_to_client_messages->InterceptAndMap(
247
+ [decompress_err, decompress_args,
248
+ this](MessageHandle message) -> absl::optional<MessageHandle> {
249
+ auto r = DecompressMessage(std::move(message), *decompress_args);
250
+ if (!r.ok()) {
251
+ decompress_err->Set(ServerMetadataFromStatus(r.status()));
252
+ return absl::nullopt;
253
+ }
254
+ return std::move(*r);
255
+ });
256
+ // Run the next filter, and race it with getting an error from decompression.
257
+ return Race(next_promise_factory(std::move(call_args)),
258
+ decompress_err->Wait());
286
259
  }
287
260
 
288
261
  ArenaPromise<ServerMetadataHandle> ServerCompressionFilter::MakeCallPromise(
289
262
  CallArgs call_args, NextPromiseFactory next_promise_factory) {
290
- CompressLoop compress_loop(this, call_args);
291
- auto decompress_loop = DecompressLoop(this, call_args)
292
- .TakeAndRun(call_args.client_initial_metadata
293
- ->get(GrpcEncodingMetadata())
294
- .value_or(GRPC_COMPRESS_NONE));
295
- auto* read_latch = GetContext<Arena>()->New<Latch<ServerMetadata*>>();
296
- auto* write_latch =
297
- std::exchange(call_args.server_initial_metadata, read_latch);
263
+ auto decompress_args =
264
+ HandleIncomingMetadata(*call_args.client_initial_metadata);
265
+ auto* decompress_err =
266
+ GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
267
+ call_args.client_to_server_messages->InterceptAndMap(
268
+ [decompress_err, decompress_args,
269
+ this](MessageHandle message) -> absl::optional<MessageHandle> {
270
+ auto r = DecompressMessage(std::move(message), decompress_args);
271
+ if (grpc_call_trace.enabled()) {
272
+ gpr_log(GPR_DEBUG, "DecompressMessage returned %s",
273
+ r.status().ToString().c_str());
274
+ }
275
+ if (!r.ok()) {
276
+ decompress_err->Set(ServerMetadataFromStatus(r.status()));
277
+ return absl::nullopt;
278
+ }
279
+ return std::move(*r);
280
+ });
281
+ auto* compression_algorithm =
282
+ GetContext<Arena>()->New<grpc_compression_algorithm>();
283
+ call_args.server_initial_metadata->InterceptAndMap(
284
+ [this, compression_algorithm](ServerMetadataHandle md) {
285
+ if (grpc_call_trace.enabled()) {
286
+ gpr_log(GPR_INFO, "%s[compression] Write metadata",
287
+ Activity::current()->DebugTag().c_str());
288
+ }
289
+ // Find the compression algorithm.
290
+ *compression_algorithm = HandleOutgoingMetadata(*md);
291
+ return md;
292
+ });
293
+ call_args.server_to_client_messages->InterceptAndMap(
294
+ [compression_algorithm,
295
+ this](MessageHandle message) -> absl::optional<MessageHandle> {
296
+ return CompressMessage(std::move(message), *compression_algorithm);
297
+ });
298
298
  // Concurrently:
299
299
  // - call the next filter
300
300
  // - decompress incoming messages
301
301
  // - wait for initial metadata to be sent, and then commence compression of
302
302
  // outgoing messages
303
- return TryConcurrently(next_promise_factory(std::move(call_args)))
304
- .Pull(std::move(decompress_loop))
305
- .Push(Seq(read_latch->Wait(),
306
- [write_latch, compress_loop = std::move(compress_loop)](
307
- ServerMetadata** md) mutable {
308
- // Find the compression algorithm.
309
- auto loop = compress_loop.TakeAndRun(**md);
310
- write_latch->Set(*md);
311
- return loop;
312
- }));
303
+ return Race(next_promise_factory(std::move(call_args)),
304
+ decompress_err->Wait());
313
305
  }
314
306
 
315
307
  } // namespace grpc_core
@@ -16,8 +16,8 @@
16
16
  //
17
17
  //
18
18
 
19
- #ifndef GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
20
- #define GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
19
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
20
+ #define GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -34,6 +34,7 @@
34
34
  #include "src/core/lib/channel/promise_based_filter.h"
35
35
  #include "src/core/lib/compression/compression_internal.h"
36
36
  #include "src/core/lib/promise/arena_promise.h"
37
+ #include "src/core/lib/transport/metadata_batch.h"
37
38
  #include "src/core/lib/transport/transport.h"
38
39
 
39
40
  namespace grpc_core {
@@ -62,10 +63,12 @@ namespace grpc_core {
62
63
 
63
64
  class CompressionFilter : public ChannelFilter {
64
65
  protected:
65
- explicit CompressionFilter(const ChannelArgs& args);
66
+ struct DecompressArgs {
67
+ grpc_compression_algorithm algorithm;
68
+ absl::optional<uint32_t> max_recv_message_length;
69
+ };
66
70
 
67
- class CompressLoop;
68
- class DecompressLoop;
71
+ explicit CompressionFilter(const ChannelArgs& args);
69
72
 
70
73
  grpc_compression_algorithm default_compression_algorithm() const {
71
74
  return default_compression_algorithm_;
@@ -75,15 +78,19 @@ class CompressionFilter : public ChannelFilter {
75
78
  return enabled_compression_algorithms_;
76
79
  }
77
80
 
78
- private:
81
+ grpc_compression_algorithm HandleOutgoingMetadata(
82
+ grpc_metadata_batch& outgoing_metadata);
83
+ DecompressArgs HandleIncomingMetadata(
84
+ const grpc_metadata_batch& incoming_metadata);
85
+
79
86
  // Compress one message synchronously.
80
87
  MessageHandle CompressMessage(MessageHandle message,
81
88
  grpc_compression_algorithm algorithm) const;
82
89
  // Decompress one message synchronously.
83
- absl::StatusOr<MessageHandle> DecompressMessage(
84
- MessageHandle message, grpc_compression_algorithm algorithm,
85
- absl::optional<uint32_t> max_recv_message_length) const;
90
+ absl::StatusOr<MessageHandle> DecompressMessage(MessageHandle message,
91
+ DecompressArgs args) const;
86
92
 
93
+ private:
87
94
  // Max receive message length, if set.
88
95
  absl::optional<uint32_t> max_recv_size_;
89
96
  size_t message_size_service_config_parser_index_;
@@ -129,4 +136,4 @@ class ServerCompressionFilter final : public CompressionFilter {
129
136
 
130
137
  } // namespace grpc_core
131
138
 
132
- #endif // GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
139
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_COMPRESSION_FILTER_H
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include <functional>
24
24
  #include <memory>
25
+ #include <string>
25
26
  #include <utility>
26
27
 
27
28
  #include "absl/base/attributes.h"
@@ -30,18 +31,19 @@
30
31
  #include "absl/types/optional.h"
31
32
 
32
33
  #include <grpc/grpc.h>
34
+ #include <grpc/support/log.h>
33
35
 
34
36
  #include "src/core/lib/channel/channel_args.h"
35
37
  #include "src/core/lib/channel/channel_stack.h"
36
- #include "src/core/lib/promise/context.h"
37
- #include "src/core/lib/promise/detail/basic_seq.h"
38
- #include "src/core/lib/promise/latch.h"
38
+ #include "src/core/lib/debug/trace.h"
39
+ #include "src/core/lib/promise/activity.h"
40
+ #include "src/core/lib/promise/map.h"
41
+ #include "src/core/lib/promise/pipe.h"
42
+ #include "src/core/lib/promise/poll.h"
39
43
  #include "src/core/lib/promise/promise.h"
40
- #include "src/core/lib/promise/seq.h"
41
- #include "src/core/lib/promise/try_concurrently.h"
42
- #include "src/core/lib/resource_quota/arena.h"
43
44
  #include "src/core/lib/slice/percent_encoding.h"
44
45
  #include "src/core/lib/slice/slice.h"
46
+ #include "src/core/lib/surface/call_trace.h"
45
47
  #include "src/core/lib/transport/metadata_batch.h"
46
48
 
47
49
  namespace grpc_core {
@@ -129,24 +131,23 @@ ArenaPromise<ServerMetadataHandle> HttpServerFilter::MakeCallPromise(
129
131
  md->Remove(UserAgentMetadata());
130
132
  }
131
133
 
132
- auto* read_latch = GetContext<Arena>()->New<Latch<ServerMetadata*>>();
133
- auto* write_latch =
134
- std::exchange(call_args.server_initial_metadata, read_latch);
135
-
136
- return TryConcurrently(
137
- Seq(next_promise_factory(std::move(call_args)),
138
- [](ServerMetadataHandle md) -> ServerMetadataHandle {
139
- FilterOutgoingMetadata(md.get());
140
- return md;
141
- }))
142
- .Push(Seq(read_latch->Wait(), [write_latch](ServerMetadata** md) {
143
- FilterOutgoingMetadata(*md);
144
- (*md)->Set(HttpStatusMetadata(), 200);
145
- (*md)->Set(ContentTypeMetadata(),
146
- ContentTypeMetadata::kApplicationGrpc);
147
- write_latch->Set(*md);
148
- return absl::OkStatus();
149
- }));
134
+ call_args.server_initial_metadata->InterceptAndMap(
135
+ [](ServerMetadataHandle md) {
136
+ if (grpc_call_trace.enabled()) {
137
+ gpr_log(GPR_INFO, "%s[http-server] Write metadata",
138
+ Activity::current()->DebugTag().c_str());
139
+ }
140
+ FilterOutgoingMetadata(md.get());
141
+ md->Set(HttpStatusMetadata(), 200);
142
+ md->Set(ContentTypeMetadata(), ContentTypeMetadata::kApplicationGrpc);
143
+ return md;
144
+ });
145
+
146
+ return Map(next_promise_factory(std::move(call_args)),
147
+ [](ServerMetadataHandle md) -> ServerMetadataHandle {
148
+ FilterOutgoingMetadata(md.get());
149
+ return md;
150
+ });
150
151
  }
151
152
 
152
153
  absl::StatusOr<HttpServerFilter> HttpServerFilter::Create(
@@ -16,8 +16,8 @@
16
16
  //
17
17
  //
18
18
 
19
- #ifndef GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
20
- #define GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
19
+ #ifndef GRPC_SRC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
20
+ #define GRPC_SRC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -60,4 +60,4 @@ class HttpServerFilter : public ChannelFilter {
60
60
  "grpc.http.do_not_use_unless_you_have_permission_from_grpc_team_allow_" \
61
61
  "broken_put_requests"
62
62
 
63
- #endif // GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
63
+ #endif // GRPC_SRC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H