grpc 1.50.0 → 1.52.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.
- checksums.yaml +4 -4
- data/Makefile +206 -49
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/event_engine.h +27 -6
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +31 -2
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -13
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
- data/include/grpc/impl/codegen/atm_windows.h +3 -106
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -791
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -758
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +824 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +5 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +25 -2
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
- data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
- data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
- data/src/core/ext/filters/client_channel/client_channel.h +10 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/config_selector.h +16 -20
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
- data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
- data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
- data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
- data/src/core/ext/filters/client_channel/subchannel.h +17 -40
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
- data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
- data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
- data/src/core/ext/filters/http/client_authority_filter.h +18 -18
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
- data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
- data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
- data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
- data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
- data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
- data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
- data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
- data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
- data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
- data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +20 -95
- data/src/core/ext/xds/xds_api.h +5 -8
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_args.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
- data/src/core/ext/xds/xds_client.cc +134 -94
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_client_grpc.cc +31 -24
- data/src/core/ext/xds/xds_client_grpc.h +1 -1
- data/src/core/ext/xds/xds_client_stats.cc +17 -17
- data/src/core/ext/xds/xds_client_stats.h +18 -18
- data/src/core/ext/xds/xds_cluster.cc +359 -203
- data/src/core/ext/xds/xds_cluster.h +52 -35
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
- data/src/core/ext/xds/xds_common_types.cc +209 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +221 -130
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +82 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
- data/src/core/ext/xds/xds_http_filters.cc +65 -73
- data/src/core/ext/xds/xds_http_filters.h +68 -20
- data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +447 -419
- data/src/core/ext/xds/xds_listener.h +45 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
- data/src/core/ext/xds/xds_route_config.cc +514 -528
- data/src/core/ext/xds/xds_route_config.h +39 -28
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
- data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
- data/src/core/ext/xds/xds_transport_grpc.h +1 -1
- data/src/core/lib/address_utils/parse_address.cc +30 -29
- data/src/core/lib/address_utils/parse_address.h +32 -32
- data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
- data/src/core/lib/avl/avl.h +4 -4
- data/src/core/lib/backoff/backoff.cc +17 -17
- data/src/core/lib/backoff/backoff.h +18 -18
- data/src/core/lib/channel/call_tracer.h +10 -1
- data/src/core/lib/channel/channel_args.cc +19 -20
- data/src/core/lib/channel/channel_args.h +59 -43
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
- data/src/core/lib/channel/channel_stack.cc +62 -58
- data/src/core/lib/channel/channel_stack.h +144 -131
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +21 -22
- data/src/core/lib/channel/channel_trace.h +19 -19
- data/src/core/lib/channel/channelz.cc +18 -19
- data/src/core/lib/channel/channelz.h +26 -26
- data/src/core/lib/channel/channelz_registry.cc +17 -17
- data/src/core/lib/channel/channelz_registry.h +18 -18
- data/src/core/lib/channel/connected_channel.cc +732 -63
- data/src/core/lib/channel/connected_channel.h +18 -22
- data/src/core/lib/channel/context.h +18 -18
- data/src/core/lib/channel/promise_based_filter.cc +1137 -150
- data/src/core/lib/channel/promise_based_filter.h +374 -88
- data/src/core/lib/channel/status_util.cc +35 -17
- data/src/core/lib/channel/status_util.h +26 -19
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +41 -48
- data/src/core/lib/compression/compression_internal.h +22 -22
- data/src/core/lib/compression/message_compress.cc +26 -26
- data/src/core/lib/compression/message_compress.h +25 -25
- data/src/core/lib/config/core_configuration.h +1 -1
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +39 -136
- data/src/core/lib/debug/stats.h +46 -52
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/debug/trace.cc +18 -18
- data/src/core/lib/debug/trace.h +19 -19
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/executor/executor.h +1 -1
- data/src/core/lib/event_engine/forkable.h +1 -1
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/socket_notifier.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
- data/src/core/lib/event_engine/thread_pool.cc +125 -43
- data/src/core/lib/event_engine/thread_pool.h +49 -26
- data/src/core/lib/event_engine/time_util.h +1 -1
- data/src/core/lib/event_engine/windows/iocp.cc +13 -12
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -13
- data/src/core/lib/experiments/experiments.h +8 -6
- data/src/core/lib/gpr/alloc.cc +19 -17
- data/src/core/lib/gpr/alloc.h +18 -18
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/cpu_iphone.cc +24 -24
- data/src/core/lib/gpr/cpu_linux.cc +28 -23
- data/src/core/lib/gpr/cpu_posix.cc +23 -22
- data/src/core/lib/gpr/cpu_windows.cc +20 -18
- data/src/core/lib/gpr/log.cc +27 -19
- data/src/core/lib/gpr/log_android.cc +22 -20
- data/src/core/lib/gpr/log_linux.cc +24 -24
- data/src/core/lib/gpr/log_posix.cc +20 -19
- data/src/core/lib/gpr/log_windows.cc +25 -24
- data/src/core/lib/gpr/spinlock.h +18 -18
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +58 -58
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +22 -22
- data/src/core/lib/gpr/string_windows.cc +24 -24
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +22 -20
- data/src/core/lib/gpr/sync_posix.cc +23 -21
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +23 -21
- data/src/core/lib/gpr/time_posix.cc +35 -30
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +18 -19
- data/src/core/lib/gpr/time_windows.cc +25 -22
- data/src/core/lib/gpr/tmpfile.h +22 -22
- data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
- data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
- data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
- data/src/core/lib/gpr/useful.h +40 -27
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +18 -18
- data/src/core/lib/gprpp/bitset.h +24 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +18 -18
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
- data/src/core/lib/gprpp/env.h +20 -20
- data/src/core/lib/gprpp/env_linux.cc +21 -21
- data/src/core/lib/gprpp/env_posix.cc +18 -18
- data/src/core/lib/gprpp/env_windows.cc +18 -18
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +18 -18
- data/src/core/lib/gprpp/fork.cc +21 -22
- data/src/core/lib/gprpp/fork.h +22 -22
- data/src/core/lib/gprpp/global_config.h +18 -18
- data/src/core/lib/gprpp/global_config_custom.h +18 -18
- data/src/core/lib/gprpp/global_config_env.cc +17 -17
- data/src/core/lib/gprpp/global_config_env.h +23 -23
- data/src/core/lib/gprpp/global_config_generic.h +18 -18
- data/src/core/lib/gprpp/host_port.cc +26 -26
- data/src/core/lib/gprpp/host_port.h +29 -28
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +18 -17
- data/src/core/lib/gprpp/memory.h +18 -18
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +18 -18
- data/src/core/lib/gprpp/no_destruct.h +1 -0
- data/src/core/lib/gprpp/orphanable.h +18 -18
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +18 -18
- data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +4 -3
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +20 -20
- data/src/core/lib/gprpp/table.h +1 -0
- data/src/core/lib/gprpp/thd.h +19 -19
- data/src/core/lib/gprpp/thd_posix.cc +30 -31
- data/src/core/lib/gprpp/thd_windows.cc +26 -26
- data/src/core/lib/gprpp/time.cc +16 -11
- data/src/core/lib/gprpp/time.h +13 -3
- data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
- data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +18 -18
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/handshaker/proxy_mapper.h +18 -18
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
- data/src/core/lib/http/format_request.cc +18 -18
- data/src/core/lib/http/format_request.h +18 -18
- data/src/core/lib/http/httpcli.cc +57 -61
- data/src/core/lib/http/httpcli.h +26 -26
- data/src/core/lib/http/httpcli_security_connector.cc +22 -25
- data/src/core/lib/http/parser.cc +76 -87
- data/src/core/lib/http/parser.h +32 -32
- data/src/core/lib/iomgr/block_annotate.h +21 -21
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +120 -98
- data/src/core/lib/iomgr/call_combiner.cc +29 -27
- data/src/core/lib/iomgr/call_combiner.h +21 -22
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- data/src/core/lib/iomgr/cfstream_handle.h +22 -22
- data/src/core/lib/iomgr/closure.h +90 -45
- data/src/core/lib/iomgr/combiner.cc +20 -19
- data/src/core/lib/iomgr/combiner.h +18 -18
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +46 -46
- data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
- data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
- data/src/core/lib/iomgr/endpoint_pair.h +18 -18
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
- data/src/core/lib/iomgr/error.cc +49 -61
- data/src/core/lib/iomgr/error.h +42 -173
- data/src/core/lib/iomgr/error_cfstream.cc +18 -18
- data/src/core/lib/iomgr/error_cfstream.h +19 -19
- data/src/core/lib/iomgr/ev_apple.cc +21 -21
- data/src/core/lib/iomgr/ev_apple.h +17 -17
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
- data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
- data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
- data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
- data/src/core/lib/iomgr/ev_posix.cc +36 -28
- data/src/core/lib/iomgr/ev_posix.h +85 -81
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/exec_ctx.cc +34 -34
- data/src/core/lib/iomgr/exec_ctx.h +141 -141
- data/src/core/lib/iomgr/executor.cc +21 -21
- data/src/core/lib/iomgr/executor.h +24 -24
- data/src/core/lib/iomgr/fork_posix.cc +24 -22
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +18 -18
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/internal_errqueue.h +80 -80
- data/src/core/lib/iomgr/iocp_windows.cc +22 -21
- data/src/core/lib/iomgr/iocp_windows.h +18 -18
- data/src/core/lib/iomgr/iomgr.cc +19 -18
- data/src/core/lib/iomgr/iomgr.h +32 -32
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +25 -25
- data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
- data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +20 -20
- data/src/core/lib/iomgr/lockfree_event.cc +114 -114
- data/src/core/lib/iomgr/lockfree_event.h +19 -19
- data/src/core/lib/iomgr/nameser.h +84 -84
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +27 -27
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +51 -51
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +22 -22
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
- data/src/core/lib/iomgr/pollset_windows.cc +30 -29
- data/src/core/lib/iomgr/pollset_windows.h +22 -22
- data/src/core/lib/iomgr/port.h +29 -29
- data/src/core/lib/iomgr/python_util.h +20 -20
- data/src/core/lib/iomgr/resolve_address.cc +26 -20
- data/src/core/lib/iomgr/resolve_address.h +21 -22
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/resolved_address.h +1 -1
- data/src/core/lib/iomgr/sockaddr.h +21 -21
- data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
- data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +37 -37
- data/src/core/lib/iomgr/socket_utils.h +24 -24
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +37 -36
- data/src/core/lib/iomgr/socket_windows.h +56 -56
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
- data/src/core/lib/iomgr/tcp_client.cc +17 -17
- data/src/core/lib/iomgr/tcp_client.h +26 -26
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
- data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
- data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
- data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
- data/src/core/lib/iomgr/tcp_posix.cc +223 -237
- data/src/core/lib/iomgr/tcp_posix.h +27 -27
- data/src/core/lib/iomgr/tcp_server.cc +30 -22
- data/src/core/lib/iomgr/tcp_server.h +68 -62
- data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
- data/src/core/lib/iomgr/tcp_windows.cc +109 -93
- data/src/core/lib/iomgr/tcp_windows.h +29 -29
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +65 -65
- data/src/core/lib/iomgr/timer_generic.cc +115 -122
- data/src/core/lib/iomgr/timer_generic.h +19 -19
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +19 -19
- data/src/core/lib/iomgr/timer_manager.cc +30 -29
- data/src/core/lib/iomgr/timer_manager.h +25 -25
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +17 -2
- data/src/core/lib/json/json_object_loader.h +37 -1
- data/src/core/lib/json/json_reader.cc +28 -28
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/lib/load_balancing/lb_policy.cc +18 -18
- data/src/core/lib/load_balancing/lb_policy.h +7 -4
- data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
- data/src/core/lib/matchers/matchers.cc +6 -5
- data/src/core/lib/matchers/matchers.h +1 -1
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +58 -27
- data/src/core/lib/promise/arena_promise.h +82 -52
- data/src/core/lib/promise/context.h +14 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +59 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
- data/src/core/lib/promise/for_each.h +155 -0
- data/src/core/lib/promise/latch.h +13 -19
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map.h +1 -0
- data/src/core/lib/promise/map_pipe.h +88 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +19 -0
- data/src/core/lib/promise/seq.h +4 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +342 -0
- data/src/core/lib/promise/try_seq.h +11 -13
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/server_address.cc +18 -17
- data/src/core/lib/resolver/server_address.h +19 -21
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/arena.cc +36 -17
- data/src/core/lib/resource_quota/arena.h +107 -18
- data/src/core/lib/resource_quota/memory_quota.cc +140 -43
- data/src/core/lib/resource_quota/memory_quota.h +85 -23
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +40 -30
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
- data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
- data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +34 -33
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
- data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
- data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
- data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
- data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
- data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
- data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
- data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +32 -33
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
- data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
- data/src/core/lib/security/transport/auth_filters.h +18 -18
- data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
- data/src/core/lib/security/transport/secure_endpoint.h +22 -22
- data/src/core/lib/security/transport/security_handshaker.cc +70 -70
- data/src/core/lib/security/transport/security_handshaker.h +19 -19
- data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +18 -18
- data/src/core/lib/security/util/json_util.cc +21 -22
- data/src/core/lib/security/util/json_util.h +18 -18
- data/src/core/lib/service_config/service_config.h +2 -2
- data/src/core/lib/service_config/service_config_call_data.h +7 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +29 -29
- data/src/core/lib/slice/percent_encoding.cc +17 -17
- data/src/core/lib/slice/percent_encoding.h +24 -24
- data/src/core/lib/slice/slice.cc +44 -38
- data/src/core/lib/slice/slice.h +57 -11
- data/src/core/lib/slice/slice_buffer.cc +63 -59
- data/src/core/lib/slice/slice_buffer.h +27 -2
- data/src/core/lib/slice/slice_internal.h +31 -39
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +19 -19
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +22 -22
- data/src/core/lib/surface/byte_buffer.cc +22 -23
- data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
- data/src/core/lib/surface/call.cc +1521 -335
- data/src/core/lib/surface/call.h +86 -39
- data/src/core/lib/surface/call_details.cc +20 -21
- data/src/core/lib/surface/call_log_batch.cc +18 -18
- data/src/core/lib/surface/call_test_only.h +30 -30
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
- data/src/core/lib/surface/channel.cc +62 -67
- data/src/core/lib/surface/channel.h +40 -32
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +18 -18
- data/src/core/lib/surface/channel_ping.cc +19 -19
- data/src/core/lib/surface/channel_stack_type.cc +21 -17
- data/src/core/lib/surface/channel_stack_type.h +20 -18
- data/src/core/lib/surface/completion_queue.cc +173 -191
- data/src/core/lib/surface/completion_queue.h +32 -32
- data/src/core/lib/surface/completion_queue_factory.cc +28 -28
- data/src/core/lib/surface/completion_queue_factory.h +20 -20
- data/src/core/lib/surface/event_string.cc +17 -17
- data/src/core/lib/surface/event_string.h +20 -20
- data/src/core/lib/surface/init.cc +29 -58
- data/src/core/lib/surface/init.h +18 -18
- data/src/core/lib/surface/init_internally.cc +1 -0
- data/src/core/lib/surface/init_internally.h +9 -0
- data/src/core/lib/surface/lame_client.cc +28 -26
- data/src/core/lib/surface/lame_client.h +19 -19
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +61 -83
- data/src/core/lib/surface/server.h +5 -7
- data/src/core/lib/surface/validate_metadata.cc +28 -29
- data/src/core/lib/surface/validate_metadata.h +18 -18
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +17 -17
- data/src/core/lib/transport/bdp_estimator.h +18 -19
- data/src/core/lib/transport/connectivity_state.cc +19 -19
- data/src/core/lib/transport/connectivity_state.h +19 -19
- data/src/core/lib/transport/error_utils.cc +51 -45
- data/src/core/lib/transport/error_utils.h +21 -21
- data/src/core/lib/transport/handshaker.cc +49 -46
- data/src/core/lib/transport/handshaker.h +43 -38
- data/src/core/lib/transport/handshaker_factory.h +44 -18
- data/src/core/lib/transport/handshaker_registry.cc +25 -19
- data/src/core/lib/transport/handshaker_registry.h +21 -22
- data/src/core/lib/transport/http2_errors.h +20 -20
- data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
- data/src/core/lib/transport/http_connect_handshaker.h +18 -18
- data/src/core/lib/transport/metadata_batch.cc +4 -1
- data/src/core/lib/transport/metadata_batch.h +46 -20
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +1 -0
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +24 -24
- data/src/core/lib/transport/status_conversion.cc +22 -22
- data/src/core/lib/transport/status_conversion.h +20 -20
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +22 -22
- data/src/core/lib/transport/timeout_encoding.h +18 -18
- data/src/core/lib/transport/transport.cc +88 -41
- data/src/core/lib/transport/transport.h +193 -195
- data/src/core/lib/transport/transport_impl.h +42 -42
- data/src/core/lib/transport/transport_op_string.cc +26 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +334 -334
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
- data/src/core/tsi/fake_transport_security.cc +80 -79
- data/src/core/tsi/fake_transport_security.h +30 -30
- data/src/core/tsi/local_transport_security.cc +34 -33
- data/src/core/tsi/local_transport_security.h +31 -31
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +139 -323
- data/src/core/tsi/ssl_transport_security.h +201 -200
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +25 -25
- data/src/core/tsi/transport_security.cc +26 -26
- data/src/core/tsi/transport_security.h +45 -45
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +39 -39
- data/src/core/tsi/transport_security_interface.h +330 -330
- data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +47 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +148 -42
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -19,19 +19,29 @@
|
|
19
19
|
// promise-style. Most of this will be removed once the promises conversion is
|
20
20
|
// completed.
|
21
21
|
|
22
|
+
// TODO(ctiller): When removing this file, also reduce the number of *'s on the
|
23
|
+
// server initial metadata latch.
|
24
|
+
|
22
25
|
#include <grpc/support/port_platform.h>
|
23
26
|
|
24
27
|
#include <stdint.h>
|
25
28
|
#include <stdlib.h>
|
26
29
|
|
27
30
|
#include <atomic>
|
31
|
+
#include <memory>
|
28
32
|
#include <new>
|
33
|
+
#include <string>
|
34
|
+
#include <type_traits>
|
29
35
|
#include <utility>
|
30
36
|
|
31
37
|
#include "absl/container/inlined_vector.h"
|
32
38
|
#include "absl/meta/type_traits.h"
|
39
|
+
#include "absl/status/status.h"
|
40
|
+
#include "absl/strings/string_view.h"
|
41
|
+
#include "absl/types/optional.h"
|
33
42
|
|
34
|
-
#include <grpc/
|
43
|
+
#include <grpc/event_engine/event_engine.h>
|
44
|
+
#include <grpc/grpc.h>
|
35
45
|
#include <grpc/support/log.h>
|
36
46
|
|
37
47
|
#include "src/core/lib/channel/call_finalization.h"
|
@@ -39,6 +49,7 @@
|
|
39
49
|
#include "src/core/lib/channel/channel_fwd.h"
|
40
50
|
#include "src/core/lib/channel/channel_stack.h"
|
41
51
|
#include "src/core/lib/channel/context.h"
|
52
|
+
#include "src/core/lib/event_engine/default_event_engine.h" // IWYU pragma: keep
|
42
53
|
#include "src/core/lib/gprpp/debug_location.h"
|
43
54
|
#include "src/core/lib/gprpp/time.h"
|
44
55
|
#include "src/core/lib/iomgr/call_combiner.h"
|
@@ -50,8 +61,10 @@
|
|
50
61
|
#include "src/core/lib/promise/arena_promise.h"
|
51
62
|
#include "src/core/lib/promise/context.h"
|
52
63
|
#include "src/core/lib/promise/latch.h"
|
64
|
+
#include "src/core/lib/promise/pipe.h"
|
53
65
|
#include "src/core/lib/promise/poll.h"
|
54
66
|
#include "src/core/lib/resource_quota/arena.h"
|
67
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
55
68
|
#include "src/core/lib/transport/error_utils.h"
|
56
69
|
#include "src/core/lib/transport/metadata_batch.h"
|
57
70
|
#include "src/core/lib/transport/transport.h"
|
@@ -99,6 +112,16 @@ class ChannelFilter {
|
|
99
112
|
virtual bool GetChannelInfo(const grpc_channel_info*) { return false; }
|
100
113
|
|
101
114
|
virtual ~ChannelFilter() = default;
|
115
|
+
|
116
|
+
grpc_event_engine::experimental::EventEngine*
|
117
|
+
hack_until_per_channel_stack_event_engines_land_get_event_engine() {
|
118
|
+
return event_engine_.get();
|
119
|
+
}
|
120
|
+
|
121
|
+
private:
|
122
|
+
// TODO(ctiller): remove once per-channel-stack event engines land
|
123
|
+
std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine_ =
|
124
|
+
grpc_event_engine::experimental::GetDefaultEventEngine();
|
102
125
|
};
|
103
126
|
|
104
127
|
// Designator for whether a filter is client side or server side.
|
@@ -112,6 +135,8 @@ enum class FilterEndpoint {
|
|
112
135
|
// Flags for MakePromiseBasedFilter.
|
113
136
|
static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
|
114
137
|
static constexpr uint8_t kFilterIsLast = 2;
|
138
|
+
static constexpr uint8_t kFilterExaminesOutboundMessages = 4;
|
139
|
+
static constexpr uint8_t kFilterExaminesInboundMessages = 8;
|
115
140
|
|
116
141
|
namespace promise_filter_detail {
|
117
142
|
|
@@ -142,16 +167,22 @@ class BaseCallData : public Activity, private Wakeable {
|
|
142
167
|
Waker MakeNonOwningWaker() final;
|
143
168
|
Waker MakeOwningWaker() final;
|
144
169
|
|
170
|
+
std::string ActivityDebugTag() const override { return DebugTag(); }
|
171
|
+
|
145
172
|
void Finalize(const grpc_call_final_info* final_info) {
|
146
173
|
finalization_.Run(final_info);
|
147
174
|
}
|
148
175
|
|
176
|
+
virtual void StartBatch(grpc_transport_stream_op_batch* batch) = 0;
|
177
|
+
|
149
178
|
protected:
|
150
179
|
class ScopedContext
|
151
180
|
: public promise_detail::Context<Arena>,
|
152
181
|
public promise_detail::Context<grpc_call_context_element>,
|
153
182
|
public promise_detail::Context<grpc_polling_entity>,
|
154
|
-
public promise_detail::Context<CallFinalization
|
183
|
+
public promise_detail::Context<CallFinalization>,
|
184
|
+
public promise_detail::Context<
|
185
|
+
grpc_event_engine::experimental::EventEngine> {
|
155
186
|
public:
|
156
187
|
explicit ScopedContext(BaseCallData* call_data)
|
157
188
|
: promise_detail::Context<Arena>(call_data->arena_),
|
@@ -159,8 +190,9 @@ class BaseCallData : public Activity, private Wakeable {
|
|
159
190
|
call_data->context_),
|
160
191
|
promise_detail::Context<grpc_polling_entity>(
|
161
192
|
call_data->pollent_.load(std::memory_order_acquire)),
|
162
|
-
promise_detail::Context<CallFinalization>(&call_data->finalization_)
|
163
|
-
|
193
|
+
promise_detail::Context<CallFinalization>(&call_data->finalization_),
|
194
|
+
promise_detail::Context<grpc_event_engine::experimental::EventEngine>(
|
195
|
+
call_data->event_engine_) {}
|
164
196
|
};
|
165
197
|
|
166
198
|
class Flusher {
|
@@ -181,7 +213,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
181
213
|
}
|
182
214
|
|
183
215
|
void Complete(grpc_transport_stream_op_batch* batch) {
|
184
|
-
call_closures_.Add(batch->on_complete,
|
216
|
+
call_closures_.Add(batch->on_complete, absl::OkStatus(),
|
185
217
|
"Flusher::Complete");
|
186
218
|
}
|
187
219
|
|
@@ -227,16 +259,178 @@ class BaseCallData : public Activity, private Wakeable {
|
|
227
259
|
grpc_transport_stream_op_batch* batch_;
|
228
260
|
};
|
229
261
|
|
230
|
-
static
|
262
|
+
static Arena::PoolPtr<grpc_metadata_batch> WrapMetadata(
|
231
263
|
grpc_metadata_batch* p) {
|
232
|
-
return
|
264
|
+
return Arena::PoolPtr<grpc_metadata_batch>(p,
|
265
|
+
Arena::PooledDeleter(nullptr));
|
233
266
|
}
|
234
267
|
|
235
268
|
static grpc_metadata_batch* UnwrapMetadata(
|
236
|
-
|
237
|
-
return p.
|
269
|
+
Arena::PoolPtr<grpc_metadata_batch> p) {
|
270
|
+
return p.release();
|
238
271
|
}
|
239
272
|
|
273
|
+
// State machine for sending messages: handles intercepting send_message ops
|
274
|
+
// and forwarding them through pipes to the promise, then getting the result
|
275
|
+
// down the stack.
|
276
|
+
// Split into its own class so that we don't spend the memory instantiating
|
277
|
+
// these members for filters that don't need to intercept sent messages.
|
278
|
+
class SendMessage {
|
279
|
+
public:
|
280
|
+
explicit SendMessage(BaseCallData* base)
|
281
|
+
: base_(base), pipe_(base->arena()) {}
|
282
|
+
PipeReceiver<MessageHandle>* outgoing_pipe() { return &pipe_.receiver; }
|
283
|
+
|
284
|
+
// Start a send_message op.
|
285
|
+
void StartOp(CapturedBatch batch);
|
286
|
+
// Publish the outbound pipe to the filter.
|
287
|
+
// This happens when the promise requests to call the next filter: until
|
288
|
+
// this occurs messages can't be sent as we don't know the pipe that the
|
289
|
+
// promise expects to send on.
|
290
|
+
void GotPipe(PipeReceiver<MessageHandle>* receiver);
|
291
|
+
// Called from client/server polling to do the send message part of the
|
292
|
+
// work.
|
293
|
+
void WakeInsideCombiner(Flusher* flusher);
|
294
|
+
// Call is completed, we have trailing metadata. Close things out.
|
295
|
+
void Done(const ServerMetadata& metadata);
|
296
|
+
// Return true if we have a batch captured (for debug logs)
|
297
|
+
bool HaveCapturedBatch() const { return batch_.is_captured(); }
|
298
|
+
// Return true if we're not actively sending a message.
|
299
|
+
bool IsIdle() const;
|
300
|
+
|
301
|
+
private:
|
302
|
+
enum class State : uint8_t {
|
303
|
+
// Starting state: no batch started, no outgoing pipe configured.
|
304
|
+
kInitial,
|
305
|
+
// We have an outgoing pipe, but no batch started.
|
306
|
+
// (this is the steady state).
|
307
|
+
kIdle,
|
308
|
+
// We have a batch started, but no outgoing pipe configured.
|
309
|
+
// Stall until we have one.
|
310
|
+
kGotBatchNoPipe,
|
311
|
+
// We have a batch, and an outgoing pipe. On the next poll we'll push the
|
312
|
+
// message into the pipe to the promise.
|
313
|
+
kGotBatch,
|
314
|
+
// We've pushed a message into the promise, and we're now waiting for it
|
315
|
+
// to pop out the other end so we can forward it down the stack.
|
316
|
+
kPushedToPipe,
|
317
|
+
// We've forwarded a message down the stack, and now we're waiting for
|
318
|
+
// completion.
|
319
|
+
kForwardedBatch,
|
320
|
+
// We've got the completion callback, we'll close things out during poll
|
321
|
+
// and then forward completion callbacks up and transition back to idle.
|
322
|
+
kBatchCompleted,
|
323
|
+
// We're almost done, but need to poll first.
|
324
|
+
kCancelledButNotYetPolled,
|
325
|
+
// We're done.
|
326
|
+
kCancelled,
|
327
|
+
};
|
328
|
+
static const char* StateString(State);
|
329
|
+
|
330
|
+
void OnComplete(absl::Status status);
|
331
|
+
|
332
|
+
BaseCallData* const base_;
|
333
|
+
State state_ = State::kInitial;
|
334
|
+
Pipe<MessageHandle> pipe_;
|
335
|
+
PipeReceiver<MessageHandle>* receiver_ = nullptr;
|
336
|
+
absl::optional<PipeSender<MessageHandle>::PushType> push_;
|
337
|
+
absl::optional<PipeReceiver<MessageHandle>::NextType> next_;
|
338
|
+
absl::optional<NextResult<MessageHandle>> next_result_;
|
339
|
+
CapturedBatch batch_;
|
340
|
+
grpc_closure* intercepted_on_complete_;
|
341
|
+
grpc_closure on_complete_ =
|
342
|
+
MakeMemberClosure<SendMessage, &SendMessage::OnComplete>(this);
|
343
|
+
absl::Status completed_status_;
|
344
|
+
};
|
345
|
+
|
346
|
+
// State machine for receiving messages: handles intercepting recv_message
|
347
|
+
// ops, forwarding them down the stack, and then publishing the result via
|
348
|
+
// pipes to the promise (and ultimately calling the right callbacks for the
|
349
|
+
// batch when our promise has completed processing of them).
|
350
|
+
// Split into its own class so that we don't spend the memory instantiating
|
351
|
+
// these members for filters that don't need to intercept sent messages.
|
352
|
+
class ReceiveMessage {
|
353
|
+
public:
|
354
|
+
explicit ReceiveMessage(BaseCallData* base)
|
355
|
+
: base_(base), pipe_(base->arena()) {}
|
356
|
+
PipeSender<MessageHandle>* incoming_pipe() { return &pipe_.sender; }
|
357
|
+
|
358
|
+
// Start a recv_message op.
|
359
|
+
void StartOp(CapturedBatch& batch);
|
360
|
+
// Publish the inbound pipe to the filter.
|
361
|
+
// This happens when the promise requests to call the next filter: until
|
362
|
+
// this occurs messages can't be received as we don't know the pipe that the
|
363
|
+
// promise expects to forward them with.
|
364
|
+
void GotPipe(PipeSender<MessageHandle>* sender);
|
365
|
+
// Called from client/server polling to do the receive message part of the
|
366
|
+
// work.
|
367
|
+
void WakeInsideCombiner(Flusher* flusher);
|
368
|
+
// Call is completed, we have trailing metadata. Close things out.
|
369
|
+
void Done(const ServerMetadata& metadata, Flusher* flusher);
|
370
|
+
|
371
|
+
private:
|
372
|
+
enum class State : uint8_t {
|
373
|
+
// Starting state: no batch started, no incoming pipe configured.
|
374
|
+
kInitial,
|
375
|
+
// We have an incoming pipe, but no batch started.
|
376
|
+
// (this is the steady state).
|
377
|
+
kIdle,
|
378
|
+
// We received a batch and forwarded it on, but have not got an incoming
|
379
|
+
// pipe configured.
|
380
|
+
kForwardedBatchNoPipe,
|
381
|
+
// We received a batch and forwarded it on.
|
382
|
+
kForwardedBatch,
|
383
|
+
// We got the completion for the recv_message, but we don't yet have a
|
384
|
+
// pipe configured. Stall until this changes.
|
385
|
+
kBatchCompletedNoPipe,
|
386
|
+
// We got the completion for the recv_message, and we have a pipe
|
387
|
+
// configured: next poll will push the message into the pipe for the
|
388
|
+
// filter to process.
|
389
|
+
kBatchCompleted,
|
390
|
+
// We've pushed a message into the promise, and we're now waiting for it
|
391
|
+
// to pop out the other end so we can forward it up the stack.
|
392
|
+
kPushedToPipe,
|
393
|
+
// We've got a message out of the pipe, now we need to wait for processing
|
394
|
+
// to completely quiesce in the promise prior to forwarding the completion
|
395
|
+
// up the stack.
|
396
|
+
kPulledFromPipe,
|
397
|
+
// We're done.
|
398
|
+
kCancelled,
|
399
|
+
// Call got terminated whilst we were idle: we need to close the sender
|
400
|
+
// pipe next poll.
|
401
|
+
kCancelledWhilstIdle,
|
402
|
+
// Call got terminated whilst we had forwarded a recv_message down the
|
403
|
+
// stack: we need to keep track of that until we get the completion so
|
404
|
+
// that we do the right thing in OnComplete.
|
405
|
+
kCancelledWhilstForwarding,
|
406
|
+
// Call got terminated whilst we had a recv_message batch completed, and
|
407
|
+
// we've now received the completion.
|
408
|
+
// On the next poll we'll close things out and forward on completions,
|
409
|
+
// then transition to cancelled.
|
410
|
+
kBatchCompletedButCancelled,
|
411
|
+
// Completed successfully while we're processing a recv message.
|
412
|
+
kCompletedWhilePushedToPipe,
|
413
|
+
kCompletedWhilePulledFromPipe,
|
414
|
+
};
|
415
|
+
static const char* StateString(State);
|
416
|
+
|
417
|
+
void OnComplete(absl::Status status);
|
418
|
+
|
419
|
+
BaseCallData* const base_;
|
420
|
+
Pipe<MessageHandle> pipe_;
|
421
|
+
PipeSender<MessageHandle>* sender_;
|
422
|
+
State state_ = State::kInitial;
|
423
|
+
uint32_t scratch_flags_;
|
424
|
+
absl::optional<SliceBuffer>* intercepted_slice_buffer_;
|
425
|
+
uint32_t* intercepted_flags_;
|
426
|
+
absl::optional<PipeSender<MessageHandle>::PushType> push_;
|
427
|
+
absl::optional<PipeReceiver<MessageHandle>::NextType> next_;
|
428
|
+
absl::Status completed_status_;
|
429
|
+
grpc_closure* intercepted_on_complete_;
|
430
|
+
grpc_closure on_complete_ =
|
431
|
+
MakeMemberClosure<ReceiveMessage, &ReceiveMessage::OnComplete>(this);
|
432
|
+
};
|
433
|
+
|
240
434
|
Arena* arena() { return arena_; }
|
241
435
|
grpc_call_element* elem() const { return elem_; }
|
242
436
|
CallCombiner* call_combiner() const { return call_combiner_; }
|
@@ -245,12 +439,26 @@ class BaseCallData : public Activity, private Wakeable {
|
|
245
439
|
Latch<ServerMetadata*>* server_initial_metadata_latch() const {
|
246
440
|
return server_initial_metadata_latch_;
|
247
441
|
}
|
442
|
+
PipeReceiver<MessageHandle>* outgoing_messages_pipe() const {
|
443
|
+
return send_message_ == nullptr ? nullptr : send_message_->outgoing_pipe();
|
444
|
+
}
|
445
|
+
PipeSender<MessageHandle>* incoming_messages_pipe() const {
|
446
|
+
return receive_message_ == nullptr ? nullptr
|
447
|
+
: receive_message_->incoming_pipe();
|
448
|
+
}
|
449
|
+
SendMessage* send_message() const { return send_message_; }
|
450
|
+
ReceiveMessage* receive_message() const { return receive_message_; }
|
248
451
|
|
249
452
|
bool is_last() const {
|
250
453
|
return grpc_call_stack_element(call_stack_, call_stack_->count - 1) ==
|
251
454
|
elem_;
|
252
455
|
}
|
253
456
|
|
457
|
+
virtual void WakeInsideCombiner(Flusher* flusher) = 0;
|
458
|
+
|
459
|
+
virtual absl::string_view ClientOrServerString() const = 0;
|
460
|
+
std::string LogTag() const;
|
461
|
+
|
254
462
|
private:
|
255
463
|
// Wakeable implementation.
|
256
464
|
void Wakeup() final;
|
@@ -266,7 +474,10 @@ class BaseCallData : public Activity, private Wakeable {
|
|
266
474
|
CallFinalization finalization_;
|
267
475
|
grpc_call_context_element* const context_;
|
268
476
|
std::atomic<grpc_polling_entity*> pollent_{nullptr};
|
269
|
-
Latch<ServerMetadata*>* server_initial_metadata_latch_
|
477
|
+
Latch<ServerMetadata*>* const server_initial_metadata_latch_;
|
478
|
+
SendMessage* const send_message_;
|
479
|
+
ReceiveMessage* const receive_message_;
|
480
|
+
grpc_event_engine::experimental::EventEngine* event_engine_;
|
270
481
|
};
|
271
482
|
|
272
483
|
class ClientCallData : public BaseCallData {
|
@@ -278,7 +489,7 @@ class ClientCallData : public BaseCallData {
|
|
278
489
|
// Activity implementation.
|
279
490
|
void ForceImmediateRepoll() final;
|
280
491
|
// Handle one grpc_transport_stream_op_batch
|
281
|
-
void StartBatch(grpc_transport_stream_op_batch* batch);
|
492
|
+
void StartBatch(grpc_transport_stream_op_batch* batch) override;
|
282
493
|
|
283
494
|
private:
|
284
495
|
// At what stage is our handling of send initial metadata?
|
@@ -303,8 +514,8 @@ class ClientCallData : public BaseCallData {
|
|
303
514
|
kQueued,
|
304
515
|
// We've forwarded the op to the next filter.
|
305
516
|
kForwarded,
|
306
|
-
// The op has completed from below, but we haven't yet forwarded it up
|
307
|
-
// promise gets to interject and mutate it).
|
517
|
+
// The op has completed from below, but we haven't yet forwarded it up
|
518
|
+
// (the promise gets to interject and mutate it).
|
308
519
|
kComplete,
|
309
520
|
// We've called the recv_metadata_ready callback from the original
|
310
521
|
// recv_trailing_metadata op that was presented to us.
|
@@ -314,11 +525,15 @@ class ClientCallData : public BaseCallData {
|
|
314
525
|
kCancelled
|
315
526
|
};
|
316
527
|
|
528
|
+
static const char* StateString(SendInitialState);
|
529
|
+
static const char* StateString(RecvTrailingState);
|
530
|
+
std::string DebugString() const;
|
531
|
+
|
317
532
|
struct RecvInitialMetadata;
|
318
533
|
class PollContext;
|
319
534
|
|
320
535
|
// Handle cancellation.
|
321
|
-
void Cancel(grpc_error_handle error);
|
536
|
+
void Cancel(grpc_error_handle error, Flusher* flusher);
|
322
537
|
// Begin running the promise - which will ultimately take some initial
|
323
538
|
// metadata and return some trailing metadata.
|
324
539
|
void StartPromise(Flusher* flusher);
|
@@ -344,15 +559,20 @@ class ClientCallData : public BaseCallData {
|
|
344
559
|
void SetStatusFromError(grpc_metadata_batch* metadata,
|
345
560
|
grpc_error_handle error);
|
346
561
|
// Wakeup and poll the promise if appropriate.
|
347
|
-
void WakeInsideCombiner(Flusher* flusher);
|
562
|
+
void WakeInsideCombiner(Flusher* flusher) override;
|
348
563
|
void OnWakeup() override;
|
349
564
|
|
565
|
+
absl::string_view ClientOrServerString() const override { return "CLI"; }
|
566
|
+
|
350
567
|
// Contained promise
|
351
568
|
ArenaPromise<ServerMetadataHandle> promise_;
|
352
569
|
// Queued batch containing at least a send_initial_metadata op.
|
353
570
|
CapturedBatch send_initial_metadata_batch_;
|
354
571
|
// Pointer to where trailing metadata will be stored.
|
355
572
|
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
573
|
+
// Trailing metadata as returned by the promise, if we hadn't received
|
574
|
+
// trailing metadata from below yet (so we can substitute it in).
|
575
|
+
ServerMetadataHandle cancelling_metadata_;
|
356
576
|
// State tracking recv initial metadata for filters that care about it.
|
357
577
|
RecvInitialMetadata* recv_initial_metadata_ = nullptr;
|
358
578
|
// Closure to call when we're done with the trailing metadata.
|
@@ -360,7 +580,7 @@ class ClientCallData : public BaseCallData {
|
|
360
580
|
// Our closure pointing to RecvTrailingMetadataReadyCallback.
|
361
581
|
grpc_closure recv_trailing_metadata_ready_;
|
362
582
|
// Error received during cancellation.
|
363
|
-
grpc_error_handle cancelled_error_
|
583
|
+
grpc_error_handle cancelled_error_;
|
364
584
|
// State of the send_initial_metadata op.
|
365
585
|
SendInitialState send_initial_state_ = SendInitialState::kInitial;
|
366
586
|
// State of the recv_trailing_metadata op.
|
@@ -378,7 +598,10 @@ class ServerCallData : public BaseCallData {
|
|
378
598
|
// Activity implementation.
|
379
599
|
void ForceImmediateRepoll() final;
|
380
600
|
// Handle one grpc_transport_stream_op_batch
|
381
|
-
void StartBatch(grpc_transport_stream_op_batch* batch);
|
601
|
+
void StartBatch(grpc_transport_stream_op_batch* batch) override;
|
602
|
+
|
603
|
+
protected:
|
604
|
+
absl::string_view ClientOrServerString() const override { return "SVR"; }
|
382
605
|
|
383
606
|
private:
|
384
607
|
// At what stage is our handling of recv initial metadata?
|
@@ -398,6 +621,10 @@ class ServerCallData : public BaseCallData {
|
|
398
621
|
enum class SendTrailingState {
|
399
622
|
// Start state: no op seen
|
400
623
|
kInitial,
|
624
|
+
// We saw the op, but it was with a send message op (or one was in progress)
|
625
|
+
// - so we'll wait for that to complete before processing the trailing
|
626
|
+
// metadata.
|
627
|
+
kQueuedBehindSendMessage,
|
401
628
|
// We saw the op, and are waiting for the promise to complete
|
402
629
|
// to forward it.
|
403
630
|
kQueued,
|
@@ -407,11 +634,15 @@ class ServerCallData : public BaseCallData {
|
|
407
634
|
kCancelled
|
408
635
|
};
|
409
636
|
|
637
|
+
static const char* StateString(RecvInitialState state);
|
638
|
+
static const char* StateString(SendTrailingState state);
|
639
|
+
std::string DebugString() const;
|
640
|
+
|
410
641
|
class PollContext;
|
411
642
|
struct SendInitialMetadata;
|
412
643
|
|
413
|
-
//
|
414
|
-
void
|
644
|
+
// Shut things down when the call completes.
|
645
|
+
void Completed(grpc_error_handle error, Flusher* flusher);
|
415
646
|
// Construct a promise that will "call" the next filter.
|
416
647
|
// Effectively:
|
417
648
|
// - put the modified initial metadata into the batch being sent up.
|
@@ -424,22 +655,31 @@ class ServerCallData : public BaseCallData {
|
|
424
655
|
static void RecvInitialMetadataReadyCallback(void* arg,
|
425
656
|
grpc_error_handle error);
|
426
657
|
void RecvInitialMetadataReady(grpc_error_handle error);
|
658
|
+
static void RecvTrailingMetadataReadyCallback(void* arg,
|
659
|
+
grpc_error_handle error);
|
660
|
+
void RecvTrailingMetadataReady(grpc_error_handle error);
|
427
661
|
// Wakeup and poll the promise if appropriate.
|
428
|
-
void WakeInsideCombiner(Flusher* flusher);
|
662
|
+
void WakeInsideCombiner(Flusher* flusher) override;
|
429
663
|
void OnWakeup() override;
|
430
664
|
|
431
665
|
// Contained promise
|
432
666
|
ArenaPromise<ServerMetadataHandle> promise_;
|
433
667
|
// Pointer to where initial metadata will be stored.
|
434
668
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
669
|
+
// Pointer to where trailing metadata will be stored.
|
670
|
+
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
435
671
|
// State for sending initial metadata.
|
436
672
|
SendInitialMetadata* send_initial_metadata_ = nullptr;
|
437
|
-
// Closure to call when we're done with the
|
673
|
+
// Closure to call when we're done with the initial metadata.
|
438
674
|
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
439
675
|
// Our closure pointing to RecvInitialMetadataReadyCallback.
|
440
676
|
grpc_closure recv_initial_metadata_ready_;
|
677
|
+
// Closure to call when we're done with the trailing metadata.
|
678
|
+
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
679
|
+
// Our closure pointing to RecvTrailingMetadataReadyCallback.
|
680
|
+
grpc_closure recv_trailing_metadata_ready_;
|
441
681
|
// Error received during cancellation.
|
442
|
-
grpc_error_handle cancelled_error_
|
682
|
+
grpc_error_handle cancelled_error_;
|
443
683
|
// Trailing metadata batch
|
444
684
|
CapturedBatch send_trailing_metadata_batch_;
|
445
685
|
// State of the send_initial_metadata op.
|
@@ -456,23 +696,116 @@ class ServerCallData : public BaseCallData {
|
|
456
696
|
// Specific call data per channel filter.
|
457
697
|
// Note that we further specialize for clients and servers since their
|
458
698
|
// implementations are very different.
|
459
|
-
template <
|
699
|
+
template <FilterEndpoint endpoint>
|
460
700
|
class CallData;
|
461
701
|
|
462
702
|
// Client implementation of call data.
|
463
|
-
template
|
464
|
-
class CallData<
|
703
|
+
template <>
|
704
|
+
class CallData<FilterEndpoint::kClient> : public ClientCallData {
|
465
705
|
public:
|
466
706
|
using ClientCallData::ClientCallData;
|
467
707
|
};
|
468
708
|
|
469
709
|
// Server implementation of call data.
|
470
|
-
template
|
471
|
-
class CallData<
|
710
|
+
template <>
|
711
|
+
class CallData<FilterEndpoint::kServer> : public ServerCallData {
|
472
712
|
public:
|
473
713
|
using ServerCallData::ServerCallData;
|
474
714
|
};
|
475
715
|
|
716
|
+
struct BaseCallDataMethods {
|
717
|
+
static void SetPollsetOrPollsetSet(grpc_call_element* elem,
|
718
|
+
grpc_polling_entity* pollent) {
|
719
|
+
static_cast<BaseCallData*>(elem->call_data)->set_pollent(pollent);
|
720
|
+
}
|
721
|
+
|
722
|
+
static void DestructCallData(grpc_call_element* elem,
|
723
|
+
const grpc_call_final_info* final_info) {
|
724
|
+
auto* cd = static_cast<BaseCallData*>(elem->call_data);
|
725
|
+
cd->Finalize(final_info);
|
726
|
+
cd->~BaseCallData();
|
727
|
+
}
|
728
|
+
|
729
|
+
static void StartTransportStreamOpBatch(
|
730
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
731
|
+
static_cast<BaseCallData*>(elem->call_data)->StartBatch(batch);
|
732
|
+
}
|
733
|
+
};
|
734
|
+
|
735
|
+
template <typename CallData, uint8_t kFlags>
|
736
|
+
struct CallDataFilterWithFlagsMethods {
|
737
|
+
static absl::Status InitCallElem(grpc_call_element* elem,
|
738
|
+
const grpc_call_element_args* args) {
|
739
|
+
new (elem->call_data) CallData(elem, args, kFlags);
|
740
|
+
return absl::OkStatus();
|
741
|
+
}
|
742
|
+
|
743
|
+
static void DestroyCallElem(grpc_call_element* elem,
|
744
|
+
const grpc_call_final_info* final_info,
|
745
|
+
grpc_closure* then_schedule_closure) {
|
746
|
+
BaseCallDataMethods::DestructCallData(elem, final_info);
|
747
|
+
if ((kFlags & kFilterIsLast) != 0) {
|
748
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
749
|
+
} else {
|
750
|
+
GPR_ASSERT(then_schedule_closure == nullptr);
|
751
|
+
}
|
752
|
+
}
|
753
|
+
};
|
754
|
+
|
755
|
+
struct ChannelFilterMethods {
|
756
|
+
static ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
757
|
+
grpc_channel_element* elem, CallArgs call_args,
|
758
|
+
NextPromiseFactory next_promise_factory) {
|
759
|
+
return static_cast<ChannelFilter*>(elem->channel_data)
|
760
|
+
->MakeCallPromise(std::move(call_args),
|
761
|
+
std::move(next_promise_factory));
|
762
|
+
}
|
763
|
+
|
764
|
+
static void StartTransportOp(grpc_channel_element* elem,
|
765
|
+
grpc_transport_op* op) {
|
766
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
767
|
+
->StartTransportOp(op)) {
|
768
|
+
grpc_channel_next_op(elem, op);
|
769
|
+
}
|
770
|
+
}
|
771
|
+
|
772
|
+
static void PostInitChannelElem(grpc_channel_stack*,
|
773
|
+
grpc_channel_element* elem) {
|
774
|
+
static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
|
775
|
+
}
|
776
|
+
|
777
|
+
static void DestroyChannelElem(grpc_channel_element* elem) {
|
778
|
+
static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
|
779
|
+
}
|
780
|
+
|
781
|
+
static void GetChannelInfo(grpc_channel_element* elem,
|
782
|
+
const grpc_channel_info* info) {
|
783
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
784
|
+
->GetChannelInfo(info)) {
|
785
|
+
grpc_channel_next_get_info(elem, info);
|
786
|
+
}
|
787
|
+
}
|
788
|
+
};
|
789
|
+
|
790
|
+
template <typename F, uint8_t kFlags>
|
791
|
+
struct ChannelFilterWithFlagsMethods {
|
792
|
+
static absl::Status InitChannelElem(grpc_channel_element* elem,
|
793
|
+
grpc_channel_element_args* args) {
|
794
|
+
GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
|
795
|
+
auto status = F::Create(ChannelArgs::FromC(args->channel_args),
|
796
|
+
ChannelFilter::Args(args->channel_stack, elem));
|
797
|
+
if (!status.ok()) {
|
798
|
+
static_assert(
|
799
|
+
sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
|
800
|
+
"InvalidChannelFilter must fit in F");
|
801
|
+
new (elem->channel_data) promise_filter_detail::InvalidChannelFilter();
|
802
|
+
return absl_status_to_grpc_error(status.status());
|
803
|
+
}
|
804
|
+
new (elem->channel_data) F(std::move(*status));
|
805
|
+
return absl::OkStatus();
|
806
|
+
}
|
807
|
+
};
|
808
|
+
|
476
809
|
} // namespace promise_filter_detail
|
477
810
|
|
478
811
|
// F implements ChannelFilter and :
|
@@ -484,83 +817,36 @@ class CallData<ChannelFilter, FilterEndpoint::kServer> : public ServerCallData {
|
|
484
817
|
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
485
818
|
absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value, grpc_channel_filter>
|
486
819
|
MakePromiseBasedFilter(const char* name) {
|
487
|
-
using CallData = promise_filter_detail::CallData<
|
820
|
+
using CallData = promise_filter_detail::CallData<kEndpoint>;
|
488
821
|
|
489
822
|
return grpc_channel_filter{
|
490
823
|
// start_transport_stream_op_batch
|
491
|
-
|
492
|
-
static_cast<CallData*>(elem->call_data)->StartBatch(batch);
|
493
|
-
},
|
824
|
+
promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
|
494
825
|
// make_call_promise
|
495
|
-
|
496
|
-
NextPromiseFactory next_promise_factory) {
|
497
|
-
return static_cast<ChannelFilter*>(elem->channel_data)
|
498
|
-
->MakeCallPromise(std::move(call_args),
|
499
|
-
std::move(next_promise_factory));
|
500
|
-
},
|
826
|
+
promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
|
501
827
|
// start_transport_op
|
502
|
-
|
503
|
-
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
504
|
-
->StartTransportOp(op)) {
|
505
|
-
grpc_channel_next_op(elem, op);
|
506
|
-
}
|
507
|
-
},
|
828
|
+
promise_filter_detail::ChannelFilterMethods::StartTransportOp,
|
508
829
|
// sizeof_call_data
|
509
830
|
sizeof(CallData),
|
510
831
|
// init_call_elem
|
511
|
-
|
512
|
-
|
513
|
-
return GRPC_ERROR_NONE;
|
514
|
-
},
|
832
|
+
promise_filter_detail::CallDataFilterWithFlagsMethods<
|
833
|
+
CallData, kFlags>::InitCallElem,
|
515
834
|
// set_pollset_or_pollset_set
|
516
|
-
|
517
|
-
static_cast<CallData*>(elem->call_data)->set_pollent(pollent);
|
518
|
-
},
|
835
|
+
promise_filter_detail::BaseCallDataMethods::SetPollsetOrPollsetSet,
|
519
836
|
// destroy_call_elem
|
520
|
-
|
521
|
-
|
522
|
-
auto* cd = static_cast<CallData*>(elem->call_data);
|
523
|
-
cd->Finalize(final_info);
|
524
|
-
cd->~CallData();
|
525
|
-
if ((kFlags & kFilterIsLast) != 0) {
|
526
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
|
527
|
-
} else {
|
528
|
-
GPR_ASSERT(then_schedule_closure == nullptr);
|
529
|
-
}
|
530
|
-
},
|
837
|
+
promise_filter_detail::CallDataFilterWithFlagsMethods<
|
838
|
+
CallData, kFlags>::DestroyCallElem,
|
531
839
|
// sizeof_channel_data
|
532
840
|
sizeof(F),
|
533
841
|
// init_channel_elem
|
534
|
-
|
535
|
-
|
536
|
-
auto status = F::Create(ChannelArgs::FromC(args->channel_args),
|
537
|
-
ChannelFilter::Args(args->channel_stack, elem));
|
538
|
-
if (!status.ok()) {
|
539
|
-
static_assert(
|
540
|
-
sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
|
541
|
-
"InvalidChannelFilter must fit in F");
|
542
|
-
new (elem->channel_data)
|
543
|
-
promise_filter_detail::InvalidChannelFilter();
|
544
|
-
return absl_status_to_grpc_error(status.status());
|
545
|
-
}
|
546
|
-
new (elem->channel_data) F(std::move(*status));
|
547
|
-
return GRPC_ERROR_NONE;
|
548
|
-
},
|
842
|
+
promise_filter_detail::ChannelFilterWithFlagsMethods<
|
843
|
+
F, kFlags>::InitChannelElem,
|
549
844
|
// post_init_channel_elem
|
550
|
-
|
551
|
-
static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
|
552
|
-
},
|
845
|
+
promise_filter_detail::ChannelFilterMethods::PostInitChannelElem,
|
553
846
|
// destroy_channel_elem
|
554
|
-
|
555
|
-
static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
|
556
|
-
},
|
847
|
+
promise_filter_detail::ChannelFilterMethods::DestroyChannelElem,
|
557
848
|
// get_channel_info
|
558
|
-
|
559
|
-
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
560
|
-
->GetChannelInfo(info)) {
|
561
|
-
grpc_channel_next_get_info(elem, info);
|
562
|
-
}
|
563
|
-
},
|
849
|
+
promise_filter_detail::ChannelFilterMethods::GetChannelInfo,
|
564
850
|
// name
|
565
851
|
name,
|
566
852
|
};
|