grpc 1.36.0 → 1.38.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 +126 -92
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +715 -3166
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +86 -63
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +3 -0
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +38 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -14
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +334 -114
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +485 -199
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +13 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +21 -20
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +1649 -329
- data/src/core/ext/xds/xds_api.h +284 -44
- data/src/core/ext/xds/xds_bootstrap.cc +110 -156
- data/src/core/ext/xds/xds_bootstrap.h +24 -25
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +454 -177
- data/src/core/ext/xds/xds_client.h +62 -22
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +410 -131
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +107 -4
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -45
- data/src/core/lib/channel/handshaker.h +5 -22
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +6 -6
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +37 -38
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/{security/authorization → matchers}/matchers.cc +47 -47
- data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- 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 +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +28 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -60
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +65 -34
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_intern.cc +6 -7
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +68 -55
- data/src/core/lib/surface/server.h +89 -29
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +10 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +478 -462
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -30
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +210 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +128 -61
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -99
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "src/core/lib/channel/channel_stack.h"
|
31
31
|
#include "src/core/lib/gpr/time_precise.h"
|
32
32
|
#include "src/core/lib/gprpp/arena.h"
|
33
|
+
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
33
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
34
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
36
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -41,31 +42,6 @@
|
|
41
42
|
// Channel arg containing a URI indicating the address to connect to.
|
42
43
|
#define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
|
43
44
|
|
44
|
-
// For debugging refcounting.
|
45
|
-
#ifndef NDEBUG
|
46
|
-
#define GRPC_SUBCHANNEL_REF(p, r) (p)->Ref(__FILE__, __LINE__, (r))
|
47
|
-
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) (p)->RefFromWeakRef()
|
48
|
-
#define GRPC_SUBCHANNEL_UNREF(p, r) (p)->Unref(__FILE__, __LINE__, (r))
|
49
|
-
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) (p)->WeakRef(__FILE__, __LINE__, (r))
|
50
|
-
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) (p)->WeakUnref(__FILE__, __LINE__, (r))
|
51
|
-
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS \
|
52
|
-
const char *file, int line, const char *reason
|
53
|
-
#define GRPC_SUBCHANNEL_REF_REASON reason
|
54
|
-
#define GRPC_SUBCHANNEL_REF_MUTATE_EXTRA_ARGS \
|
55
|
-
, GRPC_SUBCHANNEL_REF_EXTRA_ARGS, const char* purpose
|
56
|
-
#define GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE(x) , file, line, reason, x
|
57
|
-
#else
|
58
|
-
#define GRPC_SUBCHANNEL_REF(p, r) (p)->Ref()
|
59
|
-
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) (p)->RefFromWeakRef()
|
60
|
-
#define GRPC_SUBCHANNEL_UNREF(p, r) (p)->Unref()
|
61
|
-
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) (p)->WeakRef()
|
62
|
-
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) (p)->WeakUnref()
|
63
|
-
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS
|
64
|
-
#define GRPC_SUBCHANNEL_REF_REASON ""
|
65
|
-
#define GRPC_SUBCHANNEL_REF_MUTATE_EXTRA_ARGS
|
66
|
-
#define GRPC_SUBCHANNEL_REF_MUTATE_PURPOSE(x)
|
67
|
-
#endif
|
68
|
-
|
69
45
|
namespace grpc_core {
|
70
46
|
|
71
47
|
class SubchannelCall;
|
@@ -111,7 +87,8 @@ class SubchannelCall {
|
|
111
87
|
grpc_call_context_element* context;
|
112
88
|
CallCombiner* call_combiner;
|
113
89
|
};
|
114
|
-
static RefCountedPtr<SubchannelCall> Create(Args args,
|
90
|
+
static RefCountedPtr<SubchannelCall> Create(Args args,
|
91
|
+
grpc_error_handle* error);
|
115
92
|
|
116
93
|
// Continues processing a transport stream op batch.
|
117
94
|
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
@@ -137,20 +114,20 @@ class SubchannelCall {
|
|
137
114
|
template <typename T>
|
138
115
|
friend class RefCountedPtr;
|
139
116
|
|
140
|
-
SubchannelCall(Args args,
|
117
|
+
SubchannelCall(Args args, grpc_error_handle* error);
|
141
118
|
|
142
119
|
// If channelz is enabled, intercepts recv_trailing so that we may check the
|
143
120
|
// status and associate it to a subchannel.
|
144
121
|
void MaybeInterceptRecvTrailingMetadata(
|
145
122
|
grpc_transport_stream_op_batch* batch);
|
146
123
|
|
147
|
-
static void RecvTrailingMetadataReady(void* arg,
|
124
|
+
static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
|
148
125
|
|
149
126
|
// Interface of RefCounted<>.
|
150
127
|
void IncrementRefCount();
|
151
128
|
void IncrementRefCount(const DebugLocation& location, const char* reason);
|
152
129
|
|
153
|
-
static void Destroy(void* arg,
|
130
|
+
static void Destroy(void* arg, grpc_error_handle error);
|
154
131
|
|
155
132
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
156
133
|
grpc_closure* after_call_stack_destroy_ = nullptr;
|
@@ -168,7 +145,7 @@ class SubchannelCall {
|
|
168
145
|
// different from the SubchannelInterface that is exposed to LB policy
|
169
146
|
// implementations. The client channel provides an adaptor class
|
170
147
|
// (SubchannelWrapper) that "converts" between the two.
|
171
|
-
class Subchannel {
|
148
|
+
class Subchannel : public DualRefCounted<Subchannel> {
|
172
149
|
public:
|
173
150
|
class ConnectivityStateWatcherInterface
|
174
151
|
: public RefCounted<ConnectivityStateWatcherInterface> {
|
@@ -204,37 +181,29 @@ class Subchannel {
|
|
204
181
|
ConnectivityStateChange PopConnectivityStateChange();
|
205
182
|
|
206
183
|
private:
|
184
|
+
Mutex mu_; // protects the queue
|
207
185
|
// Keeps track of the updates that the watcher instance must be notified of.
|
208
186
|
// TODO(yashkt): This is currently needed to send the state updates in the
|
209
187
|
// right order when asynchronously notifying. This will no longer be
|
210
188
|
// necessary when we have access to EventManager.
|
211
|
-
std::deque<ConnectivityStateChange> connectivity_state_queue_
|
212
|
-
|
189
|
+
std::deque<ConnectivityStateChange> connectivity_state_queue_
|
190
|
+
ABSL_GUARDED_BY(&mu_);
|
213
191
|
};
|
214
192
|
|
193
|
+
// Creates a subchannel given \a connector and \a args.
|
194
|
+
static RefCountedPtr<Subchannel> Create(
|
195
|
+
OrphanablePtr<SubchannelConnector> connector,
|
196
|
+
const grpc_channel_args* args);
|
197
|
+
|
215
198
|
// The ctor and dtor are not intended to use directly.
|
216
|
-
Subchannel(SubchannelKey
|
199
|
+
Subchannel(SubchannelKey key, OrphanablePtr<SubchannelConnector> connector,
|
217
200
|
const grpc_channel_args* args);
|
218
|
-
~Subchannel();
|
219
|
-
|
220
|
-
// Creates a subchannel given \a connector and \a args.
|
221
|
-
static Subchannel* Create(OrphanablePtr<SubchannelConnector> connector,
|
222
|
-
const grpc_channel_args* args);
|
201
|
+
~Subchannel() override;
|
223
202
|
|
224
203
|
// Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time
|
225
204
|
// is larger than the subchannel's current keepalive time. The updated value
|
226
205
|
// will have an affect when the subchannel creates a new ConnectedSubchannel.
|
227
|
-
void ThrottleKeepaliveTime(int new_keepalive_time);
|
228
|
-
|
229
|
-
// Strong and weak refcounting.
|
230
|
-
Subchannel* Ref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
231
|
-
void Unref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
232
|
-
Subchannel* WeakRef(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
233
|
-
void WeakUnref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
234
|
-
// Attempts to return a strong ref when only the weak refcount is guaranteed
|
235
|
-
// non-zero. If the strong refcount is zero, does not alter the refcount and
|
236
|
-
// returns null.
|
237
|
-
Subchannel* RefFromWeakRef();
|
206
|
+
void ThrottleKeepaliveTime(int new_keepalive_time) ABSL_LOCKS_EXCLUDED(mu_);
|
238
207
|
|
239
208
|
// Gets the string representing the subchannel address.
|
240
209
|
// Caller doesn't take ownership.
|
@@ -251,7 +220,8 @@ class Subchannel {
|
|
251
220
|
// If the return value is GRPC_CHANNEL_READY, also sets *connected_subchannel.
|
252
221
|
grpc_connectivity_state CheckConnectivityState(
|
253
222
|
const absl::optional<std::string>& health_check_service_name,
|
254
|
-
RefCountedPtr<ConnectedSubchannel>* connected_subchannel)
|
223
|
+
RefCountedPtr<ConnectedSubchannel>* connected_subchannel)
|
224
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
255
225
|
|
256
226
|
// Starts watching the subchannel's connectivity state.
|
257
227
|
// The first callback to the watcher will be delivered when the
|
@@ -264,23 +234,27 @@ class Subchannel {
|
|
264
234
|
void WatchConnectivityState(
|
265
235
|
grpc_connectivity_state initial_state,
|
266
236
|
const absl::optional<std::string>& health_check_service_name,
|
267
|
-
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
|
237
|
+
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
|
238
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
268
239
|
|
269
240
|
// Cancels a connectivity state watch.
|
270
241
|
// If the watcher has already been destroyed, this is a no-op.
|
271
242
|
void CancelConnectivityStateWatch(
|
272
243
|
const absl::optional<std::string>& health_check_service_name,
|
273
|
-
ConnectivityStateWatcherInterface* watcher);
|
244
|
+
ConnectivityStateWatcherInterface* watcher) ABSL_LOCKS_EXCLUDED(mu_);
|
274
245
|
|
275
246
|
// Attempt to connect to the backend. Has no effect if already connected.
|
276
|
-
void AttemptToConnect();
|
247
|
+
void AttemptToConnect() ABSL_LOCKS_EXCLUDED(mu_);
|
277
248
|
|
278
249
|
// Resets the connection backoff of the subchannel.
|
279
250
|
// TODO(roth): Move connection backoff out of subchannels and up into LB
|
280
251
|
// policy code (probably by adding a SubchannelGroup between
|
281
252
|
// SubchannelList and SubchannelData), at which point this method can
|
282
253
|
// go away.
|
283
|
-
void ResetBackoff();
|
254
|
+
void ResetBackoff() ABSL_LOCKS_EXCLUDED(mu_);
|
255
|
+
|
256
|
+
// Tears down any existing connection, and arranges for destruction
|
257
|
+
void Orphan() override ABSL_LOCKS_EXCLUDED(mu_);
|
284
258
|
|
285
259
|
// Returns a new channel arg encoding the subchannel address as a URI
|
286
260
|
// string. Caller is responsible for freeing the string.
|
@@ -333,18 +307,20 @@ class Subchannel {
|
|
333
307
|
class HealthWatcherMap {
|
334
308
|
public:
|
335
309
|
void AddWatcherLocked(
|
336
|
-
Subchannel
|
310
|
+
WeakRefCountedPtr<Subchannel> subchannel,
|
311
|
+
grpc_connectivity_state initial_state,
|
337
312
|
const std::string& health_check_service_name,
|
338
313
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
|
339
314
|
void RemoveWatcherLocked(const std::string& health_check_service_name,
|
340
315
|
ConnectivityStateWatcherInterface* watcher);
|
341
316
|
|
342
317
|
// Notifies the watcher when the subchannel's state changes.
|
343
|
-
void NotifyLocked(grpc_connectivity_state state,
|
344
|
-
|
318
|
+
void NotifyLocked(grpc_connectivity_state state, const absl::Status& status)
|
319
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&Subchannel::mu_);
|
345
320
|
|
346
321
|
grpc_connectivity_state CheckConnectivityStateLocked(
|
347
|
-
Subchannel* subchannel, const std::string& health_check_service_name)
|
322
|
+
Subchannel* subchannel, const std::string& health_check_service_name)
|
323
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&Subchannel::mu_);
|
348
324
|
|
349
325
|
void ShutdownLocked();
|
350
326
|
|
@@ -360,72 +336,65 @@ class Subchannel {
|
|
360
336
|
|
361
337
|
// Sets the subchannel's connectivity state to \a state.
|
362
338
|
void SetConnectivityStateLocked(grpc_connectivity_state state,
|
363
|
-
const absl::Status& status)
|
339
|
+
const absl::Status& status)
|
340
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
364
341
|
|
365
342
|
// Methods for connection.
|
366
|
-
void MaybeStartConnectingLocked();
|
367
|
-
static void OnRetryAlarm(void* arg,
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
gpr_atm RefMutate(gpr_atm delta,
|
374
|
-
int barrier GRPC_SUBCHANNEL_REF_MUTATE_EXTRA_ARGS);
|
343
|
+
void MaybeStartConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
344
|
+
static void OnRetryAlarm(void* arg, grpc_error_handle error)
|
345
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
346
|
+
void ContinueConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
347
|
+
static void OnConnectingFinished(void* arg, grpc_error_handle error)
|
348
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
349
|
+
bool PublishTransportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
375
350
|
|
376
351
|
// The subchannel pool this subchannel is in.
|
377
352
|
RefCountedPtr<SubchannelPoolInterface> subchannel_pool_;
|
378
353
|
// TODO(juanlishen): Consider using args_ as key_ directly.
|
379
354
|
// Subchannel key that identifies this subchannel in the subchannel pool.
|
380
|
-
SubchannelKey
|
355
|
+
const SubchannelKey key_;
|
381
356
|
// Channel args.
|
382
357
|
grpc_channel_args* args_;
|
383
358
|
// pollset_set tracking who's interested in a connection being setup.
|
384
359
|
grpc_pollset_set* pollset_set_;
|
385
|
-
//
|
386
|
-
|
387
|
-
|
388
|
-
//
|
389
|
-
// these do not keep the subchannel open.
|
390
|
-
// - upper remaining bits are for public references: these do
|
391
|
-
// keep the subchannel open
|
392
|
-
gpr_atm ref_pair_;
|
393
|
-
|
394
|
-
// Connection states.
|
360
|
+
// Channelz tracking.
|
361
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
362
|
+
|
363
|
+
// Connection state.
|
395
364
|
OrphanablePtr<SubchannelConnector> connector_;
|
396
|
-
// Set during connection.
|
397
365
|
SubchannelConnector::Result connecting_result_;
|
398
366
|
grpc_closure on_connecting_finished_;
|
367
|
+
|
368
|
+
// Protects the other members.
|
369
|
+
Mutex mu_;
|
370
|
+
|
399
371
|
// Active connection, or null.
|
400
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
401
|
-
bool connecting_ = false;
|
402
|
-
bool disconnected_ = false;
|
372
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel_ ABSL_GUARDED_BY(mu_);
|
373
|
+
bool connecting_ ABSL_GUARDED_BY(mu_) = false;
|
374
|
+
bool disconnected_ ABSL_GUARDED_BY(mu_) = false;
|
403
375
|
|
404
376
|
// Connectivity state tracking.
|
405
|
-
grpc_connectivity_state state_ = GRPC_CHANNEL_IDLE;
|
406
|
-
absl::Status status_;
|
377
|
+
grpc_connectivity_state state_ ABSL_GUARDED_BY(mu_) = GRPC_CHANNEL_IDLE;
|
378
|
+
absl::Status status_ ABSL_GUARDED_BY(mu_);
|
407
379
|
// The list of watchers without a health check service name.
|
408
|
-
ConnectivityStateWatcherList watcher_list_;
|
380
|
+
ConnectivityStateWatcherList watcher_list_ ABSL_GUARDED_BY(mu_);
|
409
381
|
// The map of watchers with health check service names.
|
410
|
-
HealthWatcherMap health_watcher_map_;
|
382
|
+
HealthWatcherMap health_watcher_map_ ABSL_GUARDED_BY(mu_);
|
411
383
|
|
412
384
|
// Backoff state.
|
413
|
-
BackOff backoff_;
|
414
|
-
grpc_millis next_attempt_deadline_;
|
415
|
-
grpc_millis min_connect_timeout_ms_;
|
416
|
-
bool backoff_begun_ = false;
|
385
|
+
BackOff backoff_ ABSL_GUARDED_BY(mu_);
|
386
|
+
grpc_millis next_attempt_deadline_ ABSL_GUARDED_BY(mu_);
|
387
|
+
grpc_millis min_connect_timeout_ms_ ABSL_GUARDED_BY(mu_);
|
388
|
+
bool backoff_begun_ ABSL_GUARDED_BY(mu_) = false;
|
417
389
|
|
418
390
|
// Retry alarm.
|
419
|
-
grpc_timer retry_alarm_;
|
420
|
-
grpc_closure on_retry_alarm_;
|
421
|
-
bool have_retry_alarm_ = false;
|
391
|
+
grpc_timer retry_alarm_ ABSL_GUARDED_BY(mu_);
|
392
|
+
grpc_closure on_retry_alarm_ ABSL_GUARDED_BY(mu_);
|
393
|
+
bool have_retry_alarm_ ABSL_GUARDED_BY(mu_) = false;
|
422
394
|
// reset_backoff() was called while alarm was pending.
|
423
|
-
bool retry_immediately_ = false;
|
395
|
+
bool retry_immediately_ ABSL_GUARDED_BY(mu_) = false;
|
424
396
|
// Keepalive time period (-1 for unset)
|
425
|
-
int keepalive_time_ = -1;
|
426
|
-
|
427
|
-
// Channelz tracking.
|
428
|
-
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
397
|
+
int keepalive_time_ ABSL_GUARDED_BY(mu_) = -1;
|
429
398
|
};
|
430
399
|
|
431
400
|
} // namespace grpc_core
|
@@ -44,13 +44,27 @@ SubchannelKey::SubchannelKey(const SubchannelKey& other) {
|
|
44
44
|
}
|
45
45
|
|
46
46
|
SubchannelKey& SubchannelKey::operator=(const SubchannelKey& other) {
|
47
|
+
if (&other == this) {
|
48
|
+
return *this;
|
49
|
+
}
|
47
50
|
grpc_channel_args_destroy(const_cast<grpc_channel_args*>(args_));
|
48
51
|
Init(other.args_, grpc_channel_args_copy);
|
49
52
|
return *this;
|
50
53
|
}
|
51
54
|
|
52
|
-
|
53
|
-
|
55
|
+
SubchannelKey::SubchannelKey(SubchannelKey&& other) noexcept {
|
56
|
+
args_ = other.args_;
|
57
|
+
other.args_ = nullptr;
|
58
|
+
}
|
59
|
+
|
60
|
+
SubchannelKey& SubchannelKey::operator=(SubchannelKey&& other) noexcept {
|
61
|
+
args_ = other.args_;
|
62
|
+
other.args_ = nullptr;
|
63
|
+
return *this;
|
64
|
+
}
|
65
|
+
|
66
|
+
bool SubchannelKey::operator<(const SubchannelKey& other) const {
|
67
|
+
return grpc_channel_args_compare(args_, other.args_) < 0;
|
54
68
|
}
|
55
69
|
|
56
70
|
void SubchannelKey::Init(
|
@@ -41,11 +41,11 @@ class SubchannelKey {
|
|
41
41
|
// Copyable.
|
42
42
|
SubchannelKey(const SubchannelKey& other);
|
43
43
|
SubchannelKey& operator=(const SubchannelKey& other);
|
44
|
-
//
|
45
|
-
SubchannelKey(SubchannelKey&&)
|
46
|
-
SubchannelKey& operator=(SubchannelKey&&)
|
44
|
+
// Movable
|
45
|
+
SubchannelKey(SubchannelKey&&) noexcept;
|
46
|
+
SubchannelKey& operator=(SubchannelKey&&) noexcept;
|
47
47
|
|
48
|
-
|
48
|
+
bool operator<(const SubchannelKey& other) const;
|
49
49
|
|
50
50
|
private:
|
51
51
|
// Initializes the subchannel key with the given \a args and the function to
|
@@ -72,15 +72,17 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
|
72
72
|
// Registers a subchannel against a key. Returns the subchannel registered
|
73
73
|
// with \a key, which may be different from \a constructed because we reuse
|
74
74
|
// (instead of update) any existing subchannel already registered with \a key.
|
75
|
-
virtual Subchannel
|
76
|
-
|
75
|
+
virtual RefCountedPtr<Subchannel> RegisterSubchannel(
|
76
|
+
const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) = 0;
|
77
77
|
|
78
78
|
// Removes the registered subchannel found by \a key.
|
79
|
-
virtual void UnregisterSubchannel(SubchannelKey
|
79
|
+
virtual void UnregisterSubchannel(const SubchannelKey& key,
|
80
|
+
Subchannel* subchannel) = 0;
|
80
81
|
|
81
82
|
// Finds the subchannel registered for the given subchannel key. Returns NULL
|
82
83
|
// if no such channel exists. Thread-safe.
|
83
|
-
virtual Subchannel
|
84
|
+
virtual RefCountedPtr<Subchannel> FindSubchannel(
|
85
|
+
const SubchannelKey& key) = 0;
|
84
86
|
|
85
87
|
// Creates a channel arg from \a subchannel pool.
|
86
88
|
static grpc_arg CreateChannelArg(SubchannelPoolInterface* subchannel_pool);
|
@@ -126,8 +126,8 @@ grpc_millis GetClientIdleTimeout(const grpc_channel_args* args) {
|
|
126
126
|
|
127
127
|
class ChannelData {
|
128
128
|
public:
|
129
|
-
static
|
130
|
-
|
129
|
+
static grpc_error_handle Init(grpc_channel_element* elem,
|
130
|
+
grpc_channel_element_args* args);
|
131
131
|
static void Destroy(grpc_channel_element* elem);
|
132
132
|
|
133
133
|
static void StartTransportOp(grpc_channel_element* elem,
|
@@ -139,11 +139,12 @@ class ChannelData {
|
|
139
139
|
|
140
140
|
private:
|
141
141
|
ChannelData(grpc_channel_element* elem, grpc_channel_element_args* args,
|
142
|
-
|
142
|
+
grpc_error_handle* error);
|
143
143
|
~ChannelData() = default;
|
144
144
|
|
145
|
-
static void IdleTimerCallback(void* arg,
|
146
|
-
static void IdleTransportOpCompleteCallback(void* arg,
|
145
|
+
static void IdleTimerCallback(void* arg, grpc_error_handle error);
|
146
|
+
static void IdleTransportOpCompleteCallback(void* arg,
|
147
|
+
grpc_error_handle error);
|
147
148
|
|
148
149
|
void StartIdleTimer();
|
149
150
|
|
@@ -170,9 +171,9 @@ class ChannelData {
|
|
170
171
|
grpc_closure idle_transport_op_complete_callback_;
|
171
172
|
};
|
172
173
|
|
173
|
-
|
174
|
-
|
175
|
-
|
174
|
+
grpc_error_handle ChannelData::Init(grpc_channel_element* elem,
|
175
|
+
grpc_channel_element_args* args) {
|
176
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
176
177
|
new (elem->channel_data) ChannelData(elem, args, &error);
|
177
178
|
return error;
|
178
179
|
}
|
@@ -187,7 +188,7 @@ void ChannelData::StartTransportOp(grpc_channel_element* elem,
|
|
187
188
|
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
188
189
|
// Catch the disconnect_with_error transport op.
|
189
190
|
if (op->disconnect_with_error != nullptr) {
|
190
|
-
// IncreaseCallCount() introduces a
|
191
|
+
// IncreaseCallCount() introduces a phony call and prevent the timer from
|
191
192
|
// being reset by other threads.
|
192
193
|
chand->IncreaseCallCount();
|
193
194
|
// If the timer has been set, cancel the timer.
|
@@ -283,7 +284,7 @@ void ChannelData::DecreaseCallCount() {
|
|
283
284
|
|
284
285
|
ChannelData::ChannelData(grpc_channel_element* elem,
|
285
286
|
grpc_channel_element_args* args,
|
286
|
-
|
287
|
+
grpc_error_handle* /*error*/)
|
287
288
|
: elem_(elem),
|
288
289
|
channel_stack_(args->channel_stack),
|
289
290
|
client_idle_timeout_(GetClientIdleTimeout(args->channel_args)) {
|
@@ -303,7 +304,7 @@ ChannelData::ChannelData(grpc_channel_element* elem,
|
|
303
304
|
grpc_schedule_on_exec_ctx);
|
304
305
|
}
|
305
306
|
|
306
|
-
void ChannelData::IdleTimerCallback(void* arg,
|
307
|
+
void ChannelData::IdleTimerCallback(void* arg, grpc_error_handle error) {
|
307
308
|
GRPC_IDLE_FILTER_LOG("timer alarms");
|
308
309
|
ChannelData* chand = static_cast<ChannelData*>(arg);
|
309
310
|
if (error != GRPC_ERROR_NONE) {
|
@@ -352,7 +353,7 @@ void ChannelData::IdleTimerCallback(void* arg, grpc_error* error) {
|
|
352
353
|
}
|
353
354
|
|
354
355
|
void ChannelData::IdleTransportOpCompleteCallback(void* arg,
|
355
|
-
|
356
|
+
grpc_error_handle /*error*/) {
|
356
357
|
ChannelData* chand = static_cast<ChannelData*>(arg);
|
357
358
|
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack_, "idle transport op");
|
358
359
|
}
|
@@ -381,15 +382,15 @@ void ChannelData::EnterIdle() {
|
|
381
382
|
|
382
383
|
class CallData {
|
383
384
|
public:
|
384
|
-
static
|
385
|
-
|
385
|
+
static grpc_error_handle Init(grpc_call_element* elem,
|
386
|
+
const grpc_call_element_args* args);
|
386
387
|
static void Destroy(grpc_call_element* elem,
|
387
388
|
const grpc_call_final_info* final_info,
|
388
389
|
grpc_closure* then_schedule_closure);
|
389
390
|
};
|
390
391
|
|
391
|
-
|
392
|
-
|
392
|
+
grpc_error_handle CallData::Init(grpc_call_element* elem,
|
393
|
+
const grpc_call_element_args* /*args*/) {
|
393
394
|
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
394
395
|
chand->IncreaseCallCount();
|
395
396
|
return GRPC_ERROR_NONE;
|