grpc 1.51.0 → 1.52.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +91 -23
- 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 +17 -3
- 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 +14 -2
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -3
- 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 -787
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -755
- 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 +9 -9
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -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 +21 -21
- data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +45 -24
- data/src/core/ext/filters/client_channel/client_channel.cc +40 -31
- data/src/core/ext/filters/client_channel/client_channel.h +7 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -17
- 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 +17 -17
- data/src/core/ext/filters/client_channel/config_selector.h +16 -20
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +8 -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 +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +39 -39
- 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/backend_metric_data.h +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -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 +58 -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 +102 -116
- 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.h +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +17 -17
- 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 +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +173 -196
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +10 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -97
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +14 -13
- 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 +98 -84
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -8
- 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 +21 -35
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +45 -39
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +11 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +16 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +31 -21
- 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 +4 -4
- 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 +0 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- 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 +21 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +60 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -66
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +50 -51
- 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 +1 -1
- 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 +0 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -33
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +59 -73
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +19 -21
- data/src/core/ext/filters/client_channel/retry_throttle.h +18 -18
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +139 -155
- data/src/core/ext/filters/client_channel/subchannel.h +15 -38
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +21 -3
- data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +20 -21
- data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
- data/src/core/ext/filters/http/client_authority_filter.cc +18 -18
- 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 +18 -18
- data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -6
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- 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 +3 -4
- 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 +54 -44
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +24 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +17 -17
- 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 +66 -35
- 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 +75 -38
- data/src/core/ext/transport/chttp2/transport/flow_control.h +56 -31
- data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/frame_data.h +22 -22
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +129 -176
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +39 -58
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +69 -111
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +19 -20
- 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 +170 -163
- data/src/core/ext/transport/chttp2/transport/parsing.cc +96 -28
- 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 +17 -17
- data/src/core/ext/transport/chttp2/transport/varint.h +24 -24
- data/src/core/ext/transport/chttp2/transport/writing.cc +45 -41
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +25 -25
- 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/xds_api.cc +5 -27
- data/src/core/ext/xds/xds_api.h +2 -1
- 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.h +2 -2
- data/src/core/ext/xds/xds_client.cc +14 -6
- data/src/core/ext/xds/xds_client.h +6 -3
- data/src/core/ext/xds/xds_client_grpc.cc +26 -0
- 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 +94 -46
- data/src/core/ext/xds/xds_cluster.h +44 -23
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +30 -50
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +14 -9
- data/src/core/ext/xds/xds_common_types.cc +4 -3
- data/src/core/ext/xds/xds_endpoint.cc +8 -2
- 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 +7 -6
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +11 -6
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +7 -6
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- 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 +0 -4
- data/src/core/ext/xds/xds_listener.cc +14 -28
- data/src/core/ext/xds/xds_listener.h +2 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -6
- data/src/core/ext/xds/xds_route_config.cc +501 -529
- data/src/core/ext/xds/xds_route_config.h +29 -18
- data/src/core/ext/xds/xds_server_config_fetcher.cc +12 -24
- data/src/core/ext/xds/xds_transport_grpc.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.h +1 -1
- data/src/core/lib/address_utils/parse_address.cc +19 -19
- 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 +43 -42
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
- data/src/core/lib/channel/channel_stack.cc +39 -38
- data/src/core/lib/channel/channel_stack.h +127 -127
- data/src/core/lib/channel/channel_stack_builder.cc +17 -17
- data/src/core/lib/channel/channel_stack_builder_impl.cc +18 -18
- data/src/core/lib/channel/channel_trace.cc +17 -17
- data/src/core/lib/channel/channel_trace.h +19 -19
- data/src/core/lib/channel/channelz.cc +17 -18
- 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 +43 -34
- data/src/core/lib/channel/connected_channel.h +18 -18
- data/src/core/lib/channel/context.h +18 -18
- data/src/core/lib/channel/promise_based_filter.cc +191 -68
- data/src/core/lib/channel/promise_based_filter.h +10 -1
- 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 +21 -21
- 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/stats.cc +17 -17
- data/src/core/lib/debug/stats.h +17 -17
- data/src/core/lib/debug/trace.cc +18 -18
- data/src/core/lib/debug/trace.h +19 -19
- 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/posix_engine/ev_epoll1_linux.cc +27 -31
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -2
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +36 -37
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +46 -46
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +10 -12
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +79 -41
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -40
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +14 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -2
- 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 +55 -283
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +4 -49
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +87 -87
- 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 +19 -20
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +20 -20
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +39 -8
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +46 -40
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +8 -7
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -7
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +28 -28
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
- 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 +19 -18
- data/src/core/lib/event_engine/thread_pool.h +17 -17
- 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 +2 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +8 -8
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -1
- data/src/core/lib/experiments/experiments.cc +5 -16
- data/src/core/lib/experiments/experiments.h +7 -12
- 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 +22 -21
- 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 +21 -20
- 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 +57 -57
- 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 +19 -18
- 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/filters/http/message_compress/message_decompress_filter.h → lib/gprpp/crash.cc} +15 -14
- 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/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/ref_counted.h +18 -18
- data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
- data/src/core/lib/gprpp/stat_windows.cc +1 -0
- data/src/core/lib/gprpp/status_helper.cc +4 -3
- 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 +25 -24
- data/src/core/lib/gprpp/time.cc +13 -7
- data/src/core/lib/gprpp/time.h +0 -1
- 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/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 +17 -17
- data/src/core/lib/http/httpcli.h +20 -21
- data/src/core/lib/http/httpcli_security_connector.cc +18 -19
- data/src/core/lib/http/parser.cc +22 -22
- 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 +52 -21
- data/src/core/lib/iomgr/buffer_list.h +63 -57
- data/src/core/lib/iomgr/call_combiner.cc +18 -17
- data/src/core/lib/iomgr/call_combiner.h +18 -18
- data/src/core/lib/iomgr/cfstream_handle.cc +20 -20
- data/src/core/lib/iomgr/cfstream_handle.h +22 -22
- data/src/core/lib/iomgr/closure.h +42 -41
- data/src/core/lib/iomgr/combiner.cc +18 -17
- 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 +18 -18
- 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 +18 -17
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
- data/src/core/lib/iomgr/error.cc +22 -19
- data/src/core/lib/iomgr/error.h +20 -21
- 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 +17 -17
- data/src/core/lib/iomgr/ev_apple.h +17 -17
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +182 -170
- data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
- data/src/core/lib/iomgr/ev_poll_posix.cc +185 -174
- 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 +31 -30
- data/src/core/lib/iomgr/exec_ctx.h +139 -138
- data/src/core/lib/iomgr/executor.cc +20 -19
- 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 +1 -1
- data/src/core/lib/iomgr/internal_errqueue.h +80 -80
- data/src/core/lib/iomgr/iocp_windows.cc +21 -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 +18 -18
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +18 -18
- data/src/core/lib/iomgr/iomgr_windows.cc +22 -21
- data/src/core/lib/iomgr/load_file.cc +19 -18
- data/src/core/lib/iomgr/load_file.h +20 -20
- data/src/core/lib/iomgr/lockfree_event.cc +104 -104
- 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 +26 -25
- 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 +18 -18
- data/src/core/lib/iomgr/resolve_address.cc +18 -17
- data/src/core/lib/iomgr/resolve_address.h +18 -18
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +21 -20
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -3
- 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 +38 -37
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +21 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +76 -76
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +35 -34
- data/src/core/lib/iomgr/socket_windows.h +56 -56
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- 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 +19 -18
- data/src/core/lib/iomgr/tcp_client_posix.cc +39 -38
- data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
- data/src/core/lib/iomgr/tcp_client_windows.cc +28 -27
- data/src/core/lib/iomgr/tcp_posix.cc +136 -134
- 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 +91 -61
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +72 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +28 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +18 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +71 -75
- data/src/core/lib/iomgr/tcp_windows.cc +83 -60
- 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 +106 -107
- 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 +18 -17
- 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 +19 -18
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +19 -18
- 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_object_loader.cc +10 -0
- data/src/core/lib/json/json_object_loader.h +15 -1
- data/src/core/lib/json/json_reader.cc +28 -28
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/lib/load_balancing/lb_policy.cc +17 -17
- data/src/core/lib/load_balancing/lb_policy.h +3 -4
- data/src/core/lib/load_balancing/subchannel_interface.h +1 -1
- data/src/core/lib/matchers/matchers.cc +3 -1
- data/src/core/lib/matchers/matchers.h +1 -1
- data/src/core/lib/promise/activity.h +20 -12
- data/src/core/lib/promise/arena_promise.h +2 -1
- data/src/core/lib/promise/context.h +1 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -0
- data/src/core/lib/promise/detail/switch.h +18 -18
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +18 -12
- data/src/core/lib/promise/for_each.h +68 -42
- data/src/core/lib/promise/latch.h +13 -19
- data/src/core/lib/promise/map.h +1 -0
- data/src/core/lib/promise/map_pipe.h +1 -0
- data/src/core/lib/promise/poll.h +6 -0
- data/src/core/lib/promise/seq.h +1 -0
- data/src/core/lib/promise/try_concurrently.h +1 -0
- data/src/core/lib/promise/try_seq.h +1 -0
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/server_address.cc +17 -17
- data/src/core/lib/resolver/server_address.h +18 -18
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/arena.cc +17 -17
- data/src/core/lib/resource_quota/arena.h +18 -18
- data/src/core/lib/resource_quota/memory_quota.cc +139 -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/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 +30 -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/composite/composite_credentials.cc +21 -21
- 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/fake/fake_credentials.cc +19 -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 +48 -49
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +17 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
- data/src/core/lib/security/credentials/jwt/json_token.cc +23 -23
- data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +17 -17
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -70
- 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 +28 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +18 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +19 -19
- 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 +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -2
- 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 +26 -27
- 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 +24 -26
- 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.h +1 -2
- 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 +18 -18
- 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 +23 -23
- 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 +25 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
- data/src/core/lib/security/security_connector/ssl_utils.cc +32 -32
- 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 +21 -21
- 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 +20 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +28 -28
- data/src/core/lib/security/transport/secure_endpoint.h +22 -22
- data/src/core/lib/security/transport/security_handshaker.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.h +19 -19
- data/src/core/lib/security/transport/server_auth_filter.cc +22 -23
- data/src/core/lib/security/transport/tsi_error.cc +17 -17
- data/src/core/lib/security/transport/tsi_error.h +18 -18
- data/src/core/lib/security/util/json_util.cc +17 -17
- data/src/core/lib/security/util/json_util.h +18 -18
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_call_data.h +7 -1
- data/src/core/lib/slice/b64.cc +24 -24
- 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 +37 -37
- data/src/core/lib/slice/slice.h +38 -5
- data/src/core/lib/slice/slice_buffer.cc +50 -45
- data/src/core/lib/slice/slice_buffer.h +27 -2
- data/src/core/lib/slice/slice_internal.h +18 -18
- 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 +19 -19
- data/src/core/lib/surface/byte_buffer_reader.cc +19 -19
- data/src/core/lib/surface/call.cc +163 -104
- data/src/core/lib/surface/call.h +42 -39
- data/src/core/lib/surface/call_details.cc +17 -18
- 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 +5 -5
- data/src/core/lib/surface/channel.cc +18 -18
- data/src/core/lib/surface/channel.h +31 -31
- 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 +18 -18
- data/src/core/lib/surface/channel_stack_type.cc +17 -17
- data/src/core/lib/surface/channel_stack_type.h +18 -18
- data/src/core/lib/surface/completion_queue.cc +136 -140
- 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 +21 -19
- 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 +1 -0
- data/src/core/lib/surface/lame_client.cc +18 -18
- 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 +15 -15
- data/src/core/lib/surface/server.h +2 -3
- data/src/core/lib/surface/validate_metadata.cc +17 -17
- 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 +17 -17
- data/src/core/lib/transport/connectivity_state.h +19 -19
- data/src/core/lib/transport/error_utils.cc +17 -17
- data/src/core/lib/transport/error_utils.h +18 -18
- data/src/core/lib/transport/handshaker.cc +37 -34
- data/src/core/lib/transport/handshaker.h +42 -37
- data/src/core/lib/transport/handshaker_factory.h +18 -18
- data/src/core/lib/transport/handshaker_registry.cc +17 -17
- data/src/core/lib/transport/handshaker_registry.h +18 -18
- data/src/core/lib/transport/http2_errors.h +20 -20
- data/src/core/lib/transport/http_connect_handshaker.cc +17 -17
- 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 +30 -20
- 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.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 +25 -24
- data/src/core/lib/transport/transport.h +134 -132
- data/src/core/lib/transport/transport_impl.h +41 -41
- data/src/core/lib/transport/transport_op_string.cc +19 -19
- data/src/core/plugin_registry/grpc_plugin_registry.cc +21 -19
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +5 -0
- 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 +68 -67
- 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 +29 -28
- 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 +19 -19
- 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 +38 -37
- 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 +31 -30
- 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 +31 -30
- 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 +53 -52
- 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 +77 -76
- 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 +1 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +18 -18
- 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 +19 -18
- 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 -36
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -56
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +20 -8
- 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
- metadata +93 -24
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- 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
@@ -31,7 +31,7 @@
|
|
31
31
|
#include "absl/strings/str_cat.h"
|
32
32
|
#include "absl/strings/string_view.h"
|
33
33
|
|
34
|
-
#include <grpc/
|
34
|
+
#include <grpc/grpc.h>
|
35
35
|
#include <grpc/slice.h>
|
36
36
|
#include <grpc/status.h>
|
37
37
|
#include <grpc/support/log.h>
|
@@ -59,6 +59,7 @@
|
|
59
59
|
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
60
60
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
61
61
|
#include "src/core/lib/iomgr/pollset_set.h"
|
62
|
+
#include "src/core/lib/slice/slice_internal.h"
|
62
63
|
#include "src/core/lib/surface/channel_init.h"
|
63
64
|
#include "src/core/lib/surface/channel_stack_type.h"
|
64
65
|
#include "src/core/lib/surface/init_internally.h"
|
@@ -150,14 +151,14 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
|
|
150
151
|
deadline_(args.deadline) {
|
151
152
|
grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this);
|
152
153
|
const grpc_call_element_args call_args = {
|
153
|
-
callstk,
|
154
|
-
nullptr,
|
155
|
-
args.context,
|
156
|
-
args.path.c_slice(),
|
157
|
-
args.start_time,
|
158
|
-
args.deadline,
|
159
|
-
args.arena,
|
160
|
-
args.call_combiner
|
154
|
+
callstk, // call_stack
|
155
|
+
nullptr, // server_transport_data
|
156
|
+
args.context, // context
|
157
|
+
args.path.c_slice(), // path
|
158
|
+
args.start_time, // start_time
|
159
|
+
args.deadline, // deadline
|
160
|
+
args.arena, // arena
|
161
|
+
args.call_combiner // call_combiner
|
161
162
|
};
|
162
163
|
*error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1,
|
163
164
|
SubchannelCall::Destroy, this, &call_args);
|
@@ -310,67 +311,44 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
310
311
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
311
312
|
const absl::Status& status) override {
|
312
313
|
Subchannel* c = subchannel_.get();
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
c->channelz_node()
|
314
|
+
{
|
315
|
+
MutexLock lock(&c->mu_);
|
316
|
+
// If we're either shutting down or have already seen this connection
|
317
|
+
// failure (i.e., c->connected_subchannel_ is null), do nothing.
|
318
|
+
//
|
319
|
+
// The transport reports TRANSIENT_FAILURE upon GOAWAY but SHUTDOWN
|
320
|
+
// upon connection close. So if the server gracefully shuts down,
|
321
|
+
// we will see TRANSIENT_FAILURE followed by SHUTDOWN, but if not, we
|
322
|
+
// will see only SHUTDOWN. Either way, we react to the first one we
|
323
|
+
// see, ignoring anything that happens after that.
|
324
|
+
if (c->connected_subchannel_ == nullptr) return;
|
325
|
+
if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
|
326
|
+
new_state == GRPC_CHANNEL_SHUTDOWN) {
|
327
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel)) {
|
328
|
+
gpr_log(GPR_INFO,
|
329
|
+
"subchannel %p %s: Connected subchannel %p reports %s: %s", c,
|
330
|
+
c->key_.ToString().c_str(), c->connected_subchannel_.get(),
|
331
|
+
ConnectivityStateName(new_state), status.ToString().c_str());
|
332
|
+
}
|
333
|
+
c->connected_subchannel_.reset();
|
334
|
+
if (c->channelz_node() != nullptr) {
|
335
|
+
c->channelz_node()->SetChildSocket(nullptr);
|
336
|
+
}
|
337
|
+
// Even though we're reporting IDLE instead of TRANSIENT_FAILURE here,
|
338
|
+
// pass along the status from the transport, since it may have
|
339
|
+
// keepalive info attached to it that the channel needs.
|
340
|
+
// TODO(roth): Consider whether there's a cleaner way to do this.
|
341
|
+
c->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, status);
|
342
|
+
c->backoff_.Reset();
|
334
343
|
}
|
335
|
-
// Even though we're reporting IDLE instead of TRANSIENT_FAILURE here,
|
336
|
-
// pass along the status from the transport, since it may have
|
337
|
-
// keepalive info attached to it that the channel needs.
|
338
|
-
// TODO(roth): Consider whether there's a cleaner way to do this.
|
339
|
-
c->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, status);
|
340
|
-
c->backoff_.Reset();
|
341
344
|
}
|
345
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
346
|
+
c->work_serializer_.DrainQueue();
|
342
347
|
}
|
343
348
|
|
344
349
|
WeakRefCountedPtr<Subchannel> subchannel_;
|
345
350
|
};
|
346
351
|
|
347
|
-
// Asynchronously notifies the \a watcher of a change in the connectvity state
|
348
|
-
// of \a subchannel to the current \a state. Deletes itself when done.
|
349
|
-
class Subchannel::AsyncWatcherNotifierLocked {
|
350
|
-
public:
|
351
|
-
AsyncWatcherNotifierLocked(
|
352
|
-
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher,
|
353
|
-
grpc_connectivity_state state, const absl::Status& status)
|
354
|
-
: watcher_(std::move(watcher)) {
|
355
|
-
watcher_->PushConnectivityStateChange({state, status});
|
356
|
-
ExecCtx::Run(DEBUG_LOCATION,
|
357
|
-
GRPC_CLOSURE_INIT(
|
358
|
-
&closure_,
|
359
|
-
[](void* arg, grpc_error_handle /*error*/) {
|
360
|
-
auto* self =
|
361
|
-
static_cast<AsyncWatcherNotifierLocked*>(arg);
|
362
|
-
self->watcher_->OnConnectivityStateChange();
|
363
|
-
delete self;
|
364
|
-
},
|
365
|
-
this, nullptr),
|
366
|
-
absl::OkStatus());
|
367
|
-
}
|
368
|
-
|
369
|
-
private:
|
370
|
-
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher_;
|
371
|
-
grpc_closure closure_;
|
372
|
-
};
|
373
|
-
|
374
352
|
//
|
375
353
|
// Subchannel::ConnectivityStateWatcherList
|
376
354
|
//
|
@@ -388,7 +366,11 @@ void Subchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
|
|
388
366
|
void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
|
389
367
|
grpc_connectivity_state state, const absl::Status& status) {
|
390
368
|
for (const auto& p : watchers_) {
|
391
|
-
|
369
|
+
subchannel_->work_serializer_.Schedule(
|
370
|
+
[watcher = p.second->Ref(), state, status]() {
|
371
|
+
watcher->OnConnectivityStateChange(state, status);
|
372
|
+
},
|
373
|
+
DEBUG_LOCATION);
|
392
374
|
}
|
393
375
|
}
|
394
376
|
|
@@ -407,7 +389,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
407
389
|
health_check_service_name_(std::move(health_check_service_name)),
|
408
390
|
state_(subchannel_->state_ == GRPC_CHANNEL_READY
|
409
391
|
? GRPC_CHANNEL_CONNECTING
|
410
|
-
: subchannel_->state_)
|
392
|
+
: subchannel_->state_),
|
393
|
+
watcher_list_(subchannel_.get()) {
|
411
394
|
// If the subchannel is already connected, start health checking.
|
412
395
|
if (subchannel_->state_ == GRPC_CHANNEL_READY) StartHealthCheckingLocked();
|
413
396
|
}
|
@@ -424,7 +407,11 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
424
407
|
|
425
408
|
void AddWatcherLocked(
|
426
409
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher) {
|
427
|
-
|
410
|
+
subchannel_->work_serializer_.Schedule(
|
411
|
+
[watcher = watcher->Ref(), state = state_, status = status_]() {
|
412
|
+
watcher->OnConnectivityStateChange(state, status);
|
413
|
+
},
|
414
|
+
DEBUG_LOCATION);
|
428
415
|
watcher_list_.AddWatcherLocked(std::move(watcher));
|
429
416
|
}
|
430
417
|
|
@@ -467,12 +454,17 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
467
454
|
private:
|
468
455
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
469
456
|
const absl::Status& status) override {
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
457
|
+
{
|
458
|
+
MutexLock lock(&subchannel_->mu_);
|
459
|
+
if (new_state != GRPC_CHANNEL_SHUTDOWN &&
|
460
|
+
health_check_client_ != nullptr) {
|
461
|
+
state_ = new_state;
|
462
|
+
status_ = status;
|
463
|
+
watcher_list_.NotifyLocked(new_state, status);
|
464
|
+
}
|
475
465
|
}
|
466
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
467
|
+
subchannel_->work_serializer_.DrainQueue();
|
476
468
|
}
|
477
469
|
|
478
470
|
void StartHealthCheckingLocked()
|
@@ -552,25 +544,6 @@ Subchannel::HealthWatcherMap::CheckConnectivityStateLocked(
|
|
552
544
|
|
553
545
|
void Subchannel::HealthWatcherMap::ShutdownLocked() { map_.clear(); }
|
554
546
|
|
555
|
-
//
|
556
|
-
// Subchannel::ConnectivityStateWatcherInterface
|
557
|
-
//
|
558
|
-
|
559
|
-
void Subchannel::ConnectivityStateWatcherInterface::PushConnectivityStateChange(
|
560
|
-
ConnectivityStateChange state_change) {
|
561
|
-
MutexLock lock(&mu_);
|
562
|
-
connectivity_state_queue_.push_back(std::move(state_change));
|
563
|
-
}
|
564
|
-
|
565
|
-
Subchannel::ConnectivityStateWatcherInterface::ConnectivityStateChange
|
566
|
-
Subchannel::ConnectivityStateWatcherInterface::PopConnectivityStateChange() {
|
567
|
-
MutexLock lock(&mu_);
|
568
|
-
GPR_ASSERT(!connectivity_state_queue_.empty());
|
569
|
-
ConnectivityStateChange state_change = connectivity_state_queue_.front();
|
570
|
-
connectivity_state_queue_.pop_front();
|
571
|
-
return state_change;
|
572
|
-
}
|
573
|
-
|
574
547
|
//
|
575
548
|
// Subchannel
|
576
549
|
//
|
@@ -625,6 +598,7 @@ Subchannel::Subchannel(SubchannelKey key,
|
|
625
598
|
args_(args),
|
626
599
|
pollset_set_(grpc_pollset_set_create()),
|
627
600
|
connector_(std::move(connector)),
|
601
|
+
watcher_list_(this),
|
628
602
|
backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)),
|
629
603
|
event_engine_(args_.GetObjectRef<EventEngine>()) {
|
630
604
|
// A grpc_init is added here to ensure that grpc_shutdown does not happen
|
@@ -717,42 +691,59 @@ channelz::SubchannelNode* Subchannel::channelz_node() {
|
|
717
691
|
void Subchannel::WatchConnectivityState(
|
718
692
|
const absl::optional<std::string>& health_check_service_name,
|
719
693
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
694
|
+
{
|
695
|
+
MutexLock lock(&mu_);
|
696
|
+
grpc_pollset_set* interested_parties = watcher->interested_parties();
|
697
|
+
if (interested_parties != nullptr) {
|
698
|
+
grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
|
699
|
+
}
|
700
|
+
if (!health_check_service_name.has_value()) {
|
701
|
+
work_serializer_.Schedule(
|
702
|
+
[watcher = watcher->Ref(), state = state_, status = status_]() {
|
703
|
+
watcher->OnConnectivityStateChange(state, status);
|
704
|
+
},
|
705
|
+
DEBUG_LOCATION);
|
706
|
+
watcher_list_.AddWatcherLocked(std::move(watcher));
|
707
|
+
} else {
|
708
|
+
health_watcher_map_.AddWatcherLocked(
|
709
|
+
WeakRef(DEBUG_LOCATION, "health_watcher"), *health_check_service_name,
|
710
|
+
std::move(watcher));
|
711
|
+
}
|
732
712
|
}
|
713
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
714
|
+
work_serializer_.DrainQueue();
|
733
715
|
}
|
734
716
|
|
735
717
|
void Subchannel::CancelConnectivityStateWatch(
|
736
718
|
const absl::optional<std::string>& health_check_service_name,
|
737
719
|
ConnectivityStateWatcherInterface* watcher) {
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
720
|
+
{
|
721
|
+
MutexLock lock(&mu_);
|
722
|
+
grpc_pollset_set* interested_parties = watcher->interested_parties();
|
723
|
+
if (interested_parties != nullptr) {
|
724
|
+
grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties);
|
725
|
+
}
|
726
|
+
if (!health_check_service_name.has_value()) {
|
727
|
+
watcher_list_.RemoveWatcherLocked(watcher);
|
728
|
+
} else {
|
729
|
+
health_watcher_map_.RemoveWatcherLocked(*health_check_service_name,
|
730
|
+
watcher);
|
731
|
+
}
|
748
732
|
}
|
733
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
734
|
+
// (Shouldn't actually be necessary in this case, but better safe than sorry.)
|
735
|
+
work_serializer_.DrainQueue();
|
749
736
|
}
|
750
737
|
|
751
738
|
void Subchannel::RequestConnection() {
|
752
|
-
|
753
|
-
|
754
|
-
|
739
|
+
{
|
740
|
+
MutexLock lock(&mu_);
|
741
|
+
if (state_ == GRPC_CHANNEL_IDLE) {
|
742
|
+
StartConnectingLocked();
|
743
|
+
}
|
755
744
|
}
|
745
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
746
|
+
work_serializer_.DrainQueue();
|
756
747
|
}
|
757
748
|
|
758
749
|
void Subchannel::ResetBackoff() {
|
@@ -760,14 +751,18 @@ void Subchannel::ResetBackoff() {
|
|
760
751
|
// does not eliminate the last ref and destroy the Subchannel before the
|
761
752
|
// method returns.
|
762
753
|
auto self = WeakRef(DEBUG_LOCATION, "ResetBackoff");
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
754
|
+
{
|
755
|
+
MutexLock lock(&mu_);
|
756
|
+
backoff_.Reset();
|
757
|
+
if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
|
758
|
+
event_engine_->Cancel(retry_timer_handle_)) {
|
759
|
+
OnRetryTimerLocked();
|
760
|
+
} else if (state_ == GRPC_CHANNEL_CONNECTING) {
|
761
|
+
next_attempt_time_ = Timestamp::Now();
|
762
|
+
}
|
770
763
|
}
|
764
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
765
|
+
work_serializer_.DrainQueue();
|
771
766
|
}
|
772
767
|
|
773
768
|
void Subchannel::Orphan() {
|
@@ -777,12 +772,16 @@ void Subchannel::Orphan() {
|
|
777
772
|
subchannel_pool_->UnregisterSubchannel(key_, this);
|
778
773
|
subchannel_pool_.reset();
|
779
774
|
}
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
775
|
+
{
|
776
|
+
MutexLock lock(&mu_);
|
777
|
+
GPR_ASSERT(!shutdown_);
|
778
|
+
shutdown_ = true;
|
779
|
+
connector_.reset();
|
780
|
+
connected_subchannel_.reset();
|
781
|
+
health_watcher_map_.ShutdownLocked();
|
782
|
+
}
|
783
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
784
|
+
work_serializer_.DrainQueue();
|
786
785
|
}
|
787
786
|
|
788
787
|
void Subchannel::GetOrAddDataProducer(
|
@@ -801,29 +800,6 @@ void Subchannel::RemoveDataProducer(DataProducerInterface* data_producer) {
|
|
801
800
|
}
|
802
801
|
}
|
803
802
|
|
804
|
-
namespace {
|
805
|
-
|
806
|
-
// Returns a string indicating the subchannel's connectivity state change to
|
807
|
-
// \a state.
|
808
|
-
const char* SubchannelConnectivityStateChangeString(
|
809
|
-
grpc_connectivity_state state) {
|
810
|
-
switch (state) {
|
811
|
-
case GRPC_CHANNEL_IDLE:
|
812
|
-
return "Subchannel state change to IDLE";
|
813
|
-
case GRPC_CHANNEL_CONNECTING:
|
814
|
-
return "Subchannel state change to CONNECTING";
|
815
|
-
case GRPC_CHANNEL_READY:
|
816
|
-
return "Subchannel state change to READY";
|
817
|
-
case GRPC_CHANNEL_TRANSIENT_FAILURE:
|
818
|
-
return "Subchannel state change to TRANSIENT_FAILURE";
|
819
|
-
case GRPC_CHANNEL_SHUTDOWN:
|
820
|
-
return "Subchannel state change to SHUTDOWN";
|
821
|
-
}
|
822
|
-
GPR_UNREACHABLE_CODE(return "UNKNOWN");
|
823
|
-
}
|
824
|
-
|
825
|
-
} // namespace
|
826
|
-
|
827
803
|
// Note: Must be called with a state that is different from the current state.
|
828
804
|
void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
|
829
805
|
const absl::Status& status) {
|
@@ -847,8 +823,10 @@ void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
|
|
847
823
|
channelz_node_->UpdateConnectivityState(state);
|
848
824
|
channelz_node_->AddTraceEvent(
|
849
825
|
channelz::ChannelTrace::Severity::Info,
|
850
|
-
|
851
|
-
|
826
|
+
grpc_slice_from_cpp_string(absl::StrCat(
|
827
|
+
"Subchannel connectivity state changed to ",
|
828
|
+
ConnectivityStateName(state),
|
829
|
+
status.ok() ? "" : absl::StrCat(": ", status_.ToString()))));
|
852
830
|
}
|
853
831
|
// Notify non-health watchers.
|
854
832
|
watcher_list_.NotifyLocked(state, status_);
|
@@ -857,8 +835,12 @@ void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
|
|
857
835
|
}
|
858
836
|
|
859
837
|
void Subchannel::OnRetryTimer() {
|
860
|
-
|
861
|
-
|
838
|
+
{
|
839
|
+
MutexLock lock(&mu_);
|
840
|
+
OnRetryTimerLocked();
|
841
|
+
}
|
842
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
843
|
+
work_serializer_.DrainQueue();
|
862
844
|
}
|
863
845
|
|
864
846
|
void Subchannel::OnRetryTimerLocked() {
|
@@ -890,6 +872,8 @@ void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
|
|
890
872
|
MutexLock lock(&c->mu_);
|
891
873
|
c->OnConnectingFinishedLocked(error);
|
892
874
|
}
|
875
|
+
// Drain any connectivity state notifications after releasing the mutex.
|
876
|
+
c->work_serializer_.DrainQueue();
|
893
877
|
c.reset(DEBUG_LOCATION, "Connect");
|
894
878
|
}
|
895
879
|
|
@@ -21,7 +21,6 @@
|
|
21
21
|
|
22
22
|
#include <stddef.h>
|
23
23
|
|
24
|
-
#include <deque>
|
25
24
|
#include <functional>
|
26
25
|
#include <map>
|
27
26
|
#include <memory>
|
@@ -32,7 +31,7 @@
|
|
32
31
|
#include "absl/types/optional.h"
|
33
32
|
|
34
33
|
#include <grpc/event_engine/event_engine.h>
|
35
|
-
#include <grpc/impl/
|
34
|
+
#include <grpc/impl/connectivity_state.h>
|
36
35
|
|
37
36
|
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
38
37
|
#include "src/core/ext/filters/client_channel/connector.h"
|
@@ -50,6 +49,7 @@
|
|
50
49
|
#include "src/core/lib/gprpp/sync.h"
|
51
50
|
#include "src/core/lib/gprpp/time.h"
|
52
51
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
52
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
53
53
|
#include "src/core/lib/iomgr/call_combiner.h"
|
54
54
|
#include "src/core/lib/iomgr/closure.h"
|
55
55
|
#include "src/core/lib/iomgr/error.h"
|
@@ -167,46 +167,18 @@ class SubchannelCall {
|
|
167
167
|
// (SubchannelWrapper) that "converts" between the two.
|
168
168
|
class Subchannel : public DualRefCounted<Subchannel> {
|
169
169
|
public:
|
170
|
+
// TODO(roth): Once we remove pollset_set, consider whether this can
|
171
|
+
// just use the normal AsyncConnectivityStateWatcherInterface API.
|
170
172
|
class ConnectivityStateWatcherInterface
|
171
173
|
: public RefCounted<ConnectivityStateWatcherInterface> {
|
172
174
|
public:
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
~ConnectivityStateWatcherInterface() override = default;
|
179
|
-
|
180
|
-
// Will be invoked whenever the subchannel's connectivity state
|
181
|
-
// changes. There will be only one invocation of this method on a
|
182
|
-
// given watcher instance at any given time.
|
183
|
-
// Implementations should call PopConnectivityStateChange to get the next
|
184
|
-
// connectivity state change.
|
185
|
-
virtual void OnConnectivityStateChange() = 0;
|
175
|
+
// Invoked whenever the subchannel's connectivity state changes.
|
176
|
+
// There will be only one invocation of this method on a given watcher
|
177
|
+
// instance at any given time.
|
178
|
+
virtual void OnConnectivityStateChange(grpc_connectivity_state state,
|
179
|
+
const absl::Status& status) = 0;
|
186
180
|
|
187
181
|
virtual grpc_pollset_set* interested_parties() = 0;
|
188
|
-
|
189
|
-
// Enqueues connectivity state change notifications.
|
190
|
-
// When the state changes to READY, connected_subchannel will
|
191
|
-
// contain a ref to the connected subchannel. When it changes from
|
192
|
-
// READY to some other state, the implementation must release its
|
193
|
-
// ref to the connected subchannel.
|
194
|
-
// TODO(yashkt): This is currently needed to send the state updates in the
|
195
|
-
// right order when asynchronously notifying. This will no longer be
|
196
|
-
// necessary when we have access to EventManager.
|
197
|
-
void PushConnectivityStateChange(ConnectivityStateChange state_change);
|
198
|
-
|
199
|
-
// Dequeues connectivity state change notifications.
|
200
|
-
ConnectivityStateChange PopConnectivityStateChange();
|
201
|
-
|
202
|
-
private:
|
203
|
-
Mutex mu_; // protects the queue
|
204
|
-
// Keeps track of the updates that the watcher instance must be notified of.
|
205
|
-
// TODO(yashkt): This is currently needed to send the state updates in the
|
206
|
-
// right order when asynchronously notifying. This will no longer be
|
207
|
-
// necessary when we have access to EventManager.
|
208
|
-
std::deque<ConnectivityStateChange> connectivity_state_queue_
|
209
|
-
ABSL_GUARDED_BY(&mu_);
|
210
182
|
};
|
211
183
|
|
212
184
|
// A base class for producers of subchannel-specific data.
|
@@ -298,6 +270,9 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
298
270
|
// the subchannel's state.
|
299
271
|
class ConnectivityStateWatcherList {
|
300
272
|
public:
|
273
|
+
explicit ConnectivityStateWatcherList(Subchannel* subchannel)
|
274
|
+
: subchannel_(subchannel) {}
|
275
|
+
|
301
276
|
~ConnectivityStateWatcherList() { Clear(); }
|
302
277
|
|
303
278
|
void AddWatcherLocked(
|
@@ -313,6 +288,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
313
288
|
bool empty() const { return watchers_.empty(); }
|
314
289
|
|
315
290
|
private:
|
291
|
+
Subchannel* subchannel_;
|
316
292
|
// TODO(roth): Once we can use C++-14 heterogeneous lookups, this can
|
317
293
|
// be a set instead of a map.
|
318
294
|
std::map<ConnectivityStateWatcherInterface*,
|
@@ -355,7 +331,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
355
331
|
};
|
356
332
|
|
357
333
|
class ConnectedSubchannelStateWatcher;
|
358
|
-
class AsyncWatcherNotifierLocked;
|
359
334
|
|
360
335
|
// Sets the subchannel's connectivity state to \a state.
|
361
336
|
void SetConnectivityStateLocked(grpc_connectivity_state state,
|
@@ -411,6 +386,8 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
411
386
|
ConnectivityStateWatcherList watcher_list_ ABSL_GUARDED_BY(mu_);
|
412
387
|
// The map of watchers with health check service names.
|
413
388
|
HealthWatcherMap health_watcher_map_ ABSL_GUARDED_BY(mu_);
|
389
|
+
// Used for sending connectivity state notifications.
|
390
|
+
WorkSerializer work_serializer_;
|
414
391
|
|
415
392
|
// Active connection, or null.
|
416
393
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_ ABSL_GUARDED_BY(mu_);
|
@@ -1,20 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2018 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
18
|
|
19
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
@@ -97,4 +97,4 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
|
97
97
|
|
98
98
|
} // namespace grpc_core
|
99
99
|
|
100
|
-
#endif
|
100
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
@@ -18,12 +18,15 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
20
20
|
|
21
|
+
#include <functional>
|
22
|
+
#include <memory>
|
21
23
|
#include <new>
|
24
|
+
#include <utility>
|
22
25
|
|
23
26
|
#include "absl/status/status.h"
|
24
27
|
#include "absl/types/optional.h"
|
25
28
|
|
26
|
-
#include <grpc/
|
29
|
+
#include <grpc/grpc.h>
|
27
30
|
#include <grpc/status.h>
|
28
31
|
#include <grpc/support/log.h>
|
29
32
|
|
@@ -35,6 +38,9 @@
|
|
35
38
|
#include "src/core/lib/iomgr/error.h"
|
36
39
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
37
40
|
#include "src/core/lib/iomgr/timer.h"
|
41
|
+
#include "src/core/lib/promise/arena_promise.h"
|
42
|
+
#include "src/core/lib/promise/context.h"
|
43
|
+
#include "src/core/lib/surface/call.h"
|
38
44
|
#include "src/core/lib/surface/channel_init.h"
|
39
45
|
#include "src/core/lib/surface/channel_stack_type.h"
|
40
46
|
#include "src/core/lib/transport/metadata_batch.h"
|
@@ -344,7 +350,10 @@ static void deadline_server_start_transport_stream_op_batch(
|
|
344
350
|
|
345
351
|
const grpc_channel_filter grpc_client_deadline_filter = {
|
346
352
|
deadline_client_start_transport_stream_op_batch,
|
347
|
-
|
353
|
+
[](grpc_channel_element*, grpc_core::CallArgs call_args,
|
354
|
+
grpc_core::NextPromiseFactory next_promise_factory) {
|
355
|
+
return next_promise_factory(std::move(call_args));
|
356
|
+
},
|
348
357
|
grpc_channel_next_op,
|
349
358
|
sizeof(base_call_data),
|
350
359
|
deadline_init_call_elem,
|
@@ -360,7 +369,16 @@ const grpc_channel_filter grpc_client_deadline_filter = {
|
|
360
369
|
|
361
370
|
const grpc_channel_filter grpc_server_deadline_filter = {
|
362
371
|
deadline_server_start_transport_stream_op_batch,
|
363
|
-
|
372
|
+
[](grpc_channel_element*, grpc_core::CallArgs call_args,
|
373
|
+
grpc_core::NextPromiseFactory next_promise_factory) {
|
374
|
+
auto deadline = call_args.client_initial_metadata->get(
|
375
|
+
grpc_core::GrpcTimeoutMetadata());
|
376
|
+
if (deadline.has_value()) {
|
377
|
+
grpc_core::GetContext<grpc_core::CallContext>()->UpdateDeadline(
|
378
|
+
*deadline);
|
379
|
+
}
|
380
|
+
return next_promise_factory(std::move(call_args));
|
381
|
+
},
|
364
382
|
grpc_channel_next_op,
|
365
383
|
sizeof(server_call_data),
|
366
384
|
deadline_init_call_elem,
|
@@ -90,4 +90,4 @@ bool grpc_deadline_checking_enabled(const grpc_core::ChannelArgs& args);
|
|
90
90
|
extern const grpc_channel_filter grpc_client_deadline_filter;
|
91
91
|
extern const grpc_channel_filter grpc_server_deadline_filter;
|
92
92
|
|
93
|
-
#endif
|
93
|
+
#endif // GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <atomic>
|
25
25
|
#include <functional>
|
26
26
|
#include <string>
|
27
|
+
#include <type_traits>
|
27
28
|
#include <utility>
|
28
29
|
|
29
30
|
#include "absl/status/status.h"
|
@@ -206,7 +207,7 @@ FaultInjectionFilter::MakeInjectionDecision(
|
|
206
207
|
initial_metadata->GetStringValue(fi_policy->delay_header, &buffer);
|
207
208
|
if (value.has_value()) {
|
208
209
|
delay = Duration::Milliseconds(
|
209
|
-
std::max(AsInt<int64_t>(*value).value_or(0), int64_t
|
210
|
+
std::max(AsInt<int64_t>(*value).value_or(0), int64_t{0}));
|
210
211
|
}
|
211
212
|
}
|
212
213
|
if (!fi_policy->delay_percentage_header.empty()) {
|