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
@@ -1,76 +1,510 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
20
18
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
21
19
|
|
22
20
|
#include <grpc/support/port_platform.h>
|
23
21
|
|
24
|
-
#include
|
22
|
+
#include <map>
|
23
|
+
#include <memory>
|
24
|
+
#include <set>
|
25
|
+
#include <string>
|
26
|
+
|
27
|
+
#include "absl/status/status.h"
|
28
|
+
#include "absl/types/optional.h"
|
29
|
+
|
30
|
+
#include <grpc/support/log.h>
|
31
|
+
|
25
32
|
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
|
33
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
34
|
+
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
35
|
+
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
26
36
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
27
|
-
#include "src/core/
|
37
|
+
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
38
|
+
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
39
|
+
#include "src/core/ext/filters/client_channel/service_config.h"
|
40
|
+
#include "src/core/ext/filters/client_channel/subchannel.h"
|
41
|
+
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
42
|
+
#include "src/core/lib/gprpp/sync.h"
|
43
|
+
#include "src/core/lib/iomgr/error.h"
|
44
|
+
#include "src/core/lib/iomgr/polling_entity.h"
|
45
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
46
|
+
#include "src/core/lib/surface/channel.h"
|
47
|
+
#include "src/core/lib/transport/connectivity_state.h"
|
48
|
+
|
49
|
+
//
|
50
|
+
// Client channel filter
|
51
|
+
//
|
52
|
+
|
53
|
+
// A client channel is a channel that begins disconnected, and can connect
|
54
|
+
// to some endpoint on demand. If that endpoint disconnects, it will be
|
55
|
+
// connected to again later.
|
56
|
+
//
|
57
|
+
// Calls on a disconnected client channel are queued until a connection is
|
58
|
+
// established.
|
28
59
|
|
29
60
|
// Channel arg key for server URI string.
|
30
61
|
#define GRPC_ARG_SERVER_URI "grpc.server_uri"
|
31
62
|
|
32
|
-
|
33
|
-
|
34
|
-
|
63
|
+
// Channel arg containing a pointer to the ClientChannel object.
|
64
|
+
#define GRPC_ARG_CLIENT_CHANNEL "grpc.internal.client_channel"
|
65
|
+
|
66
|
+
// Channel arg containing a pointer to the ServiceConfig object.
|
67
|
+
#define GRPC_ARG_SERVICE_CONFIG_OBJ "grpc.internal.service_config_obj"
|
68
|
+
|
69
|
+
// Max number of batches that can be pending on a call at any given
|
70
|
+
// time. This includes one batch for each of the following ops:
|
71
|
+
// recv_initial_metadata
|
72
|
+
// send_initial_metadata
|
73
|
+
// recv_message
|
74
|
+
// send_message
|
75
|
+
// recv_trailing_metadata
|
76
|
+
// send_trailing_metadata
|
77
|
+
#define MAX_PENDING_BATCHES 6
|
78
|
+
|
79
|
+
namespace grpc_core {
|
80
|
+
|
81
|
+
class ClientChannel {
|
82
|
+
public:
|
83
|
+
static const grpc_channel_filter kFilterVtable;
|
84
|
+
|
85
|
+
class LoadBalancedCall;
|
86
|
+
|
87
|
+
// Returns the ClientChannel object from channel, or null if channel
|
88
|
+
// is not a client channel.
|
89
|
+
static ClientChannel* GetFromChannel(grpc_channel* channel);
|
90
|
+
|
91
|
+
grpc_connectivity_state CheckConnectivityState(bool try_to_connect);
|
92
|
+
|
93
|
+
// Starts a one-time connectivity state watch. When the channel's state
|
94
|
+
// becomes different from *state, sets *state to the new state and
|
95
|
+
// schedules on_complete. The watcher_timer_init callback is invoked as
|
96
|
+
// soon as the watch is actually started (i.e., after hopping into the
|
97
|
+
// client channel combiner). I/O will be serviced via pollent.
|
98
|
+
//
|
99
|
+
// This is intended to be used when starting a watch from outside of C-core
|
100
|
+
// via grpc_channel_watch_connectivity_state(). It should not be used
|
101
|
+
// by other callers.
|
102
|
+
void AddExternalConnectivityWatcher(grpc_polling_entity pollent,
|
103
|
+
grpc_connectivity_state* state,
|
104
|
+
grpc_closure* on_complete,
|
105
|
+
grpc_closure* watcher_timer_init) {
|
106
|
+
new ExternalConnectivityWatcher(this, pollent, state, on_complete,
|
107
|
+
watcher_timer_init);
|
108
|
+
}
|
109
|
+
|
110
|
+
// Cancels a pending external watcher previously added by
|
111
|
+
// AddExternalConnectivityWatcher().
|
112
|
+
void CancelExternalConnectivityWatcher(grpc_closure* on_complete) {
|
113
|
+
ExternalConnectivityWatcher::RemoveWatcherFromExternalWatchersMap(
|
114
|
+
this, on_complete, /*cancel=*/true);
|
115
|
+
}
|
116
|
+
|
117
|
+
int NumExternalConnectivityWatchers() const {
|
118
|
+
MutexLock lock(&external_watchers_mu_);
|
119
|
+
return static_cast<int>(external_watchers_.size());
|
120
|
+
}
|
121
|
+
|
122
|
+
// Starts and stops a connectivity watch. The watcher will be initially
|
123
|
+
// notified as soon as the state changes from initial_state and then on
|
124
|
+
// every subsequent state change until either the watch is stopped or
|
125
|
+
// it is notified that the state has changed to SHUTDOWN.
|
126
|
+
//
|
127
|
+
// This is intended to be used when starting watches from code inside of
|
128
|
+
// C-core (e.g., for a nested control plane channel for things like xds).
|
129
|
+
void AddConnectivityWatcher(
|
130
|
+
grpc_connectivity_state initial_state,
|
131
|
+
OrphanablePtr<AsyncConnectivityStateWatcherInterface> watcher);
|
132
|
+
void RemoveConnectivityWatcher(
|
133
|
+
AsyncConnectivityStateWatcherInterface* watcher);
|
134
|
+
|
135
|
+
RefCountedPtr<LoadBalancedCall> CreateLoadBalancedCall(
|
136
|
+
const grpc_call_element_args& args, grpc_polling_entity* pollent,
|
137
|
+
grpc_closure* on_call_destruction_complete);
|
138
|
+
|
139
|
+
private:
|
140
|
+
class CallData;
|
141
|
+
class ResolverResultHandler;
|
142
|
+
class SubchannelWrapper;
|
143
|
+
class ClientChannelControlHelper;
|
144
|
+
class ConnectivityWatcherAdder;
|
145
|
+
class ConnectivityWatcherRemover;
|
146
|
+
|
147
|
+
// Represents a pending connectivity callback from an external caller
|
148
|
+
// via grpc_client_channel_watch_connectivity_state().
|
149
|
+
class ExternalConnectivityWatcher : public ConnectivityStateWatcherInterface {
|
150
|
+
public:
|
151
|
+
ExternalConnectivityWatcher(ClientChannel* chand,
|
152
|
+
grpc_polling_entity pollent,
|
153
|
+
grpc_connectivity_state* state,
|
154
|
+
grpc_closure* on_complete,
|
155
|
+
grpc_closure* watcher_timer_init);
|
156
|
+
|
157
|
+
~ExternalConnectivityWatcher() override;
|
158
|
+
|
159
|
+
// Removes the watcher from the external_watchers_ map.
|
160
|
+
static void RemoveWatcherFromExternalWatchersMap(ClientChannel* chand,
|
161
|
+
grpc_closure* on_complete,
|
162
|
+
bool cancel);
|
163
|
+
|
164
|
+
void Notify(grpc_connectivity_state state,
|
165
|
+
const absl::Status& /* status */) override;
|
166
|
+
|
167
|
+
void Cancel();
|
168
|
+
|
169
|
+
private:
|
170
|
+
// Adds the watcher to state_tracker_. Consumes the ref that is passed to it
|
171
|
+
// from Start().
|
172
|
+
void AddWatcherLocked()
|
173
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_);
|
174
|
+
void RemoveWatcherLocked()
|
175
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_);
|
176
|
+
|
177
|
+
ClientChannel* chand_;
|
178
|
+
grpc_polling_entity pollent_;
|
179
|
+
grpc_connectivity_state initial_state_;
|
180
|
+
grpc_connectivity_state* state_;
|
181
|
+
grpc_closure* on_complete_;
|
182
|
+
grpc_closure* watcher_timer_init_;
|
183
|
+
Atomic<bool> done_{false};
|
184
|
+
};
|
185
|
+
|
186
|
+
struct ResolverQueuedCall {
|
187
|
+
grpc_call_element* elem;
|
188
|
+
ResolverQueuedCall* next = nullptr;
|
189
|
+
};
|
190
|
+
struct LbQueuedCall {
|
191
|
+
LoadBalancedCall* lb_call;
|
192
|
+
LbQueuedCall* next = nullptr;
|
193
|
+
};
|
194
|
+
|
195
|
+
ClientChannel(grpc_channel_element_args* args, grpc_error_handle* error);
|
196
|
+
~ClientChannel();
|
197
|
+
|
198
|
+
// Filter vtable functions.
|
199
|
+
static grpc_error_handle Init(grpc_channel_element* elem,
|
200
|
+
grpc_channel_element_args* args);
|
201
|
+
static void Destroy(grpc_channel_element* elem);
|
202
|
+
static void StartTransportOp(grpc_channel_element* elem,
|
203
|
+
grpc_transport_op* op);
|
204
|
+
static void GetChannelInfo(grpc_channel_element* elem,
|
205
|
+
const grpc_channel_info* info);
|
35
206
|
|
36
|
-
|
37
|
-
|
207
|
+
// Note: Does NOT return a new ref.
|
208
|
+
grpc_error_handle disconnect_error() const {
|
209
|
+
return disconnect_error_.Load(MemoryOrder::ACQUIRE);
|
210
|
+
}
|
38
211
|
|
39
|
-
|
212
|
+
// Note: All methods with "Locked" suffix must be invoked from within
|
213
|
+
// work_serializer_.
|
40
214
|
|
41
|
-
|
42
|
-
|
215
|
+
void OnResolverResultChangedLocked(Resolver::Result result)
|
216
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
217
|
+
void OnResolverErrorLocked(grpc_error_handle error)
|
218
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
43
219
|
|
44
|
-
|
45
|
-
|
220
|
+
void CreateOrUpdateLbPolicyLocked(
|
221
|
+
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
222
|
+
Resolver::Result result) ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
223
|
+
OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
|
224
|
+
const grpc_channel_args& args)
|
225
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
226
|
+
|
227
|
+
void UpdateStateAndPickerLocked(
|
228
|
+
grpc_connectivity_state state, const absl::Status& status,
|
229
|
+
const char* reason,
|
230
|
+
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker)
|
231
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
232
|
+
|
233
|
+
void UpdateServiceConfigInControlPlaneLocked(
|
234
|
+
RefCountedPtr<ServiceConfig> service_config,
|
235
|
+
RefCountedPtr<ConfigSelector> config_selector,
|
236
|
+
const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
|
237
|
+
const char* lb_policy_name)
|
238
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
239
|
+
|
240
|
+
void UpdateServiceConfigInDataPlaneLocked()
|
241
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
242
|
+
|
243
|
+
void CreateResolverLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
244
|
+
void DestroyResolverAndLbPolicyLocked()
|
245
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
246
|
+
|
247
|
+
grpc_error_handle DoPingLocked(grpc_transport_op* op)
|
248
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
249
|
+
|
250
|
+
void StartTransportOpLocked(grpc_transport_op* op)
|
251
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
252
|
+
|
253
|
+
void TryToConnectLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_);
|
254
|
+
|
255
|
+
// These methods all require holding resolution_mu_.
|
256
|
+
void AddResolverQueuedCall(ResolverQueuedCall* call,
|
257
|
+
grpc_polling_entity* pollent)
|
258
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(resolution_mu_);
|
259
|
+
void RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
260
|
+
grpc_polling_entity* pollent)
|
261
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(resolution_mu_);
|
262
|
+
|
263
|
+
// These methods all require holding data_plane_mu_.
|
264
|
+
void AddLbQueuedCall(LbQueuedCall* call, grpc_polling_entity* pollent)
|
265
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
266
|
+
void RemoveLbQueuedCall(LbQueuedCall* to_remove, grpc_polling_entity* pollent)
|
267
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
268
|
+
RefCountedPtr<ConnectedSubchannel> GetConnectedSubchannelInDataPlane(
|
269
|
+
SubchannelInterface* subchannel) const
|
270
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
271
|
+
|
272
|
+
//
|
273
|
+
// Fields set at construction and never modified.
|
274
|
+
//
|
275
|
+
const bool deadline_checking_enabled_;
|
276
|
+
const bool enable_retries_;
|
277
|
+
grpc_channel_stack* owning_stack_;
|
278
|
+
ClientChannelFactory* client_channel_factory_;
|
279
|
+
const grpc_channel_args* channel_args_;
|
280
|
+
RefCountedPtr<ServiceConfig> default_service_config_;
|
281
|
+
std::string server_name_;
|
282
|
+
UniquePtr<char> target_uri_;
|
283
|
+
channelz::ChannelNode* channelz_node_;
|
284
|
+
grpc_pollset_set* interested_parties_;
|
285
|
+
|
286
|
+
//
|
287
|
+
// Fields related to name resolution. Guarded by resolution_mu_.
|
288
|
+
//
|
289
|
+
mutable Mutex resolution_mu_;
|
290
|
+
// Linked list of calls queued waiting for resolver result.
|
291
|
+
ResolverQueuedCall* resolver_queued_calls_ ABSL_GUARDED_BY(resolution_mu_) =
|
292
|
+
nullptr;
|
293
|
+
// Data from service config.
|
294
|
+
grpc_error_handle resolver_transient_failure_error_
|
295
|
+
ABSL_GUARDED_BY(resolution_mu_) = GRPC_ERROR_NONE;
|
296
|
+
bool received_service_config_data_ ABSL_GUARDED_BY(resolution_mu_) = false;
|
297
|
+
RefCountedPtr<ServiceConfig> service_config_ ABSL_GUARDED_BY(resolution_mu_);
|
298
|
+
RefCountedPtr<ConfigSelector> config_selector_
|
299
|
+
ABSL_GUARDED_BY(resolution_mu_);
|
300
|
+
RefCountedPtr<DynamicFilters> dynamic_filters_
|
301
|
+
ABSL_GUARDED_BY(resolution_mu_);
|
302
|
+
|
303
|
+
//
|
304
|
+
// Fields used in the data plane. Guarded by data_plane_mu_.
|
305
|
+
//
|
306
|
+
mutable Mutex data_plane_mu_;
|
307
|
+
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker_
|
308
|
+
ABSL_GUARDED_BY(data_plane_mu_);
|
309
|
+
// Linked list of calls queued waiting for LB pick.
|
310
|
+
LbQueuedCall* lb_queued_calls_ ABSL_GUARDED_BY(data_plane_mu_) = nullptr;
|
311
|
+
|
312
|
+
//
|
313
|
+
// Fields used in the control plane. Guarded by work_serializer.
|
314
|
+
//
|
315
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
316
|
+
ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(work_serializer_);
|
317
|
+
OrphanablePtr<Resolver> resolver_ ABSL_GUARDED_BY(work_serializer_);
|
318
|
+
bool previous_resolution_contained_addresses_
|
319
|
+
ABSL_GUARDED_BY(work_serializer_) = false;
|
320
|
+
RefCountedPtr<ServiceConfig> saved_service_config_
|
321
|
+
ABSL_GUARDED_BY(work_serializer_);
|
322
|
+
RefCountedPtr<ConfigSelector> saved_config_selector_
|
323
|
+
ABSL_GUARDED_BY(work_serializer_);
|
324
|
+
absl::optional<std::string> health_check_service_name_
|
325
|
+
ABSL_GUARDED_BY(work_serializer_);
|
326
|
+
OrphanablePtr<LoadBalancingPolicy> lb_policy_
|
327
|
+
ABSL_GUARDED_BY(work_serializer_);
|
328
|
+
RefCountedPtr<SubchannelPoolInterface> subchannel_pool_
|
329
|
+
ABSL_GUARDED_BY(work_serializer_);
|
330
|
+
// The number of SubchannelWrapper instances referencing a given Subchannel.
|
331
|
+
std::map<Subchannel*, int> subchannel_refcount_map_
|
332
|
+
ABSL_GUARDED_BY(work_serializer_);
|
333
|
+
// The set of SubchannelWrappers that currently exist.
|
334
|
+
// No need to hold a ref, since the map is updated in the control-plane
|
335
|
+
// work_serializer when the SubchannelWrappers are created and destroyed.
|
336
|
+
std::set<SubchannelWrapper*> subchannel_wrappers_
|
337
|
+
ABSL_GUARDED_BY(work_serializer_);
|
338
|
+
// Pending ConnectedSubchannel updates for each SubchannelWrapper.
|
339
|
+
// Updates are queued here in the control plane work_serializer and then
|
340
|
+
// applied in the data plane mutex when the picker is updated.
|
341
|
+
std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel>>
|
342
|
+
pending_subchannel_updates_ ABSL_GUARDED_BY(work_serializer_);
|
343
|
+
int keepalive_time_ ABSL_GUARDED_BY(work_serializer_) = -1;
|
344
|
+
|
345
|
+
//
|
346
|
+
// Fields accessed from both data plane mutex and control plane
|
347
|
+
// work_serializer.
|
348
|
+
//
|
349
|
+
Atomic<grpc_error_handle> disconnect_error_;
|
350
|
+
|
351
|
+
//
|
352
|
+
// Fields guarded by a mutex, since they need to be accessed
|
353
|
+
// synchronously via get_channel_info().
|
354
|
+
//
|
355
|
+
Mutex info_mu_;
|
356
|
+
UniquePtr<char> info_lb_policy_name_ ABSL_GUARDED_BY(info_mu_);
|
357
|
+
UniquePtr<char> info_service_config_json_ ABSL_GUARDED_BY(info_mu_);
|
358
|
+
|
359
|
+
//
|
360
|
+
// Fields guarded by a mutex, since they need to be accessed
|
361
|
+
// synchronously via grpc_channel_num_external_connectivity_watchers().
|
362
|
+
//
|
363
|
+
mutable Mutex external_watchers_mu_;
|
364
|
+
std::map<grpc_closure*, RefCountedPtr<ExternalConnectivityWatcher>>
|
365
|
+
external_watchers_ ABSL_GUARDED_BY(external_watchers_mu_);
|
366
|
+
};
|
46
367
|
|
47
|
-
// Starts a one-time connectivity state watch. When the channel's state
|
48
|
-
// becomes different from *state, sets *state to the new state and
|
49
|
-
// schedules on_complete. The watcher_timer_init callback is invoked as
|
50
|
-
// soon as the watch is actually started (i.e., after hopping into the
|
51
|
-
// client channel combiner). I/O will be serviced via pollent.
|
52
368
|
//
|
53
|
-
//
|
54
|
-
// via grpc_channel_watch_connectivity_state(). It should not be used
|
55
|
-
// by other callers.
|
56
|
-
void grpc_client_channel_watch_connectivity_state(
|
57
|
-
grpc_channel_element* elem, grpc_polling_entity pollent,
|
58
|
-
grpc_connectivity_state* state, grpc_closure* on_complete,
|
59
|
-
grpc_closure* watcher_timer_init);
|
60
|
-
|
61
|
-
// Starts and stops a connectivity watch. The watcher will be initially
|
62
|
-
// notified as soon as the state changes from initial_state and then on
|
63
|
-
// every subsequent state change until either the watch is stopped or
|
64
|
-
// it is notified that the state has changed to SHUTDOWN.
|
369
|
+
// ClientChannel::LoadBalancedCall
|
65
370
|
//
|
66
|
-
|
67
|
-
//
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
371
|
+
|
372
|
+
// This object is ref-counted, but it cannot inherit from RefCounted<>,
|
373
|
+
// because it is allocated on the arena and can't free its memory when
|
374
|
+
// its refcount goes to zero. So instead, it manually implements the
|
375
|
+
// same API as RefCounted<>, so that it can be used with RefCountedPtr<>.
|
376
|
+
class ClientChannel::LoadBalancedCall
|
377
|
+
: public RefCounted<LoadBalancedCall, PolymorphicRefCount, kUnrefCallDtor> {
|
378
|
+
public:
|
379
|
+
// If on_call_destruction_complete is non-null, then it will be
|
380
|
+
// invoked once the LoadBalancedCall is completely destroyed.
|
381
|
+
// If it is null, then the caller is responsible for checking whether
|
382
|
+
// the LB call has a subchannel call and ensuring that the
|
383
|
+
// on_call_destruction_complete closure passed down from the surface
|
384
|
+
// is not invoked until after the subchannel call stack is destroyed.
|
385
|
+
LoadBalancedCall(ClientChannel* chand, const grpc_call_element_args& args,
|
386
|
+
grpc_polling_entity* pollent,
|
387
|
+
grpc_closure* on_call_destruction_complete);
|
388
|
+
~LoadBalancedCall() override;
|
389
|
+
|
390
|
+
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
391
|
+
|
392
|
+
// Invoked by channel for queued LB picks when the picker is updated.
|
393
|
+
static void PickSubchannel(void* arg, grpc_error_handle error);
|
394
|
+
// Helper function for performing an LB pick while holding the data plane
|
395
|
+
// mutex. Returns true if the pick is complete, in which case the caller
|
396
|
+
// must invoke PickDone() or AsyncPickDone() with the returned error.
|
397
|
+
bool PickSubchannelLocked(grpc_error_handle* error)
|
398
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
399
|
+
// Schedules a callback to process the completed pick. The callback
|
400
|
+
// will not run until after this method returns.
|
401
|
+
void AsyncPickDone(grpc_error_handle error);
|
402
|
+
|
403
|
+
RefCountedPtr<SubchannelCall> subchannel_call() const {
|
404
|
+
return subchannel_call_;
|
405
|
+
}
|
406
|
+
|
407
|
+
private:
|
408
|
+
class LbQueuedCallCanceller;
|
409
|
+
class Metadata;
|
410
|
+
class LbCallState;
|
411
|
+
|
412
|
+
// Returns the index into pending_batches_ to be used for batch.
|
413
|
+
static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
|
414
|
+
void PendingBatchesAdd(grpc_transport_stream_op_batch* batch);
|
415
|
+
static void FailPendingBatchInCallCombiner(void* arg,
|
416
|
+
grpc_error_handle error);
|
417
|
+
// A predicate type and some useful implementations for PendingBatchesFail().
|
418
|
+
typedef bool (*YieldCallCombinerPredicate)(
|
419
|
+
const CallCombinerClosureList& closures);
|
420
|
+
static bool YieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
421
|
+
return true;
|
422
|
+
}
|
423
|
+
static bool NoYieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
424
|
+
return false;
|
425
|
+
}
|
426
|
+
static bool YieldCallCombinerIfPendingBatchesFound(
|
427
|
+
const CallCombinerClosureList& closures) {
|
428
|
+
return closures.size() > 0;
|
429
|
+
}
|
430
|
+
// Fails all pending batches.
|
431
|
+
// If yield_call_combiner_predicate returns true, assumes responsibility for
|
432
|
+
// yielding the call combiner.
|
433
|
+
void PendingBatchesFail(
|
434
|
+
grpc_error_handle error,
|
435
|
+
YieldCallCombinerPredicate yield_call_combiner_predicate);
|
436
|
+
static void ResumePendingBatchInCallCombiner(void* arg,
|
437
|
+
grpc_error_handle ignored);
|
438
|
+
// Resumes all pending batches on subchannel_call_.
|
439
|
+
void PendingBatchesResume();
|
440
|
+
|
441
|
+
static void RecvTrailingMetadataReadyForLoadBalancingPolicy(
|
442
|
+
void* arg, grpc_error_handle error);
|
443
|
+
void InjectRecvTrailingMetadataReadyForLoadBalancingPolicy(
|
444
|
+
grpc_transport_stream_op_batch* batch);
|
445
|
+
|
446
|
+
void CreateSubchannelCall();
|
447
|
+
// Invoked when a pick is completed, on both success or failure.
|
448
|
+
static void PickDone(void* arg, grpc_error_handle error);
|
449
|
+
// Removes the call from the channel's list of queued picks if present.
|
450
|
+
void MaybeRemoveCallFromLbQueuedCallsLocked()
|
451
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
452
|
+
// Adds the call to the channel's list of queued picks if not already present.
|
453
|
+
void MaybeAddCallToLbQueuedCallsLocked()
|
454
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
455
|
+
|
456
|
+
ClientChannel* chand_;
|
457
|
+
|
458
|
+
// TODO(roth): Instead of duplicating these fields in every filter
|
459
|
+
// that uses any one of them, we should store them in the call
|
460
|
+
// context. This will save per-call memory overhead.
|
461
|
+
grpc_slice path_; // Request path.
|
462
|
+
gpr_cycle_counter call_start_time_;
|
463
|
+
grpc_millis deadline_;
|
464
|
+
Arena* arena_;
|
465
|
+
grpc_call_stack* owning_call_;
|
466
|
+
CallCombiner* call_combiner_;
|
467
|
+
grpc_call_context_element* call_context_;
|
468
|
+
grpc_polling_entity* pollent_;
|
469
|
+
grpc_closure* on_call_destruction_complete_;
|
470
|
+
|
471
|
+
// Set when we get a cancel_stream op.
|
472
|
+
grpc_error_handle cancel_error_ = GRPC_ERROR_NONE;
|
473
|
+
|
474
|
+
// Set when we fail inside the LB call.
|
475
|
+
grpc_error_handle failure_error_ = GRPC_ERROR_NONE;
|
476
|
+
|
477
|
+
grpc_closure pick_closure_;
|
478
|
+
|
479
|
+
// Accessed while holding ClientChannel::data_plane_mu_.
|
480
|
+
ClientChannel::LbQueuedCall queued_call_
|
481
|
+
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
|
482
|
+
bool queued_pending_lb_pick_ ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) =
|
483
|
+
false;
|
484
|
+
LbQueuedCallCanceller* lb_call_canceller_
|
485
|
+
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) = nullptr;
|
486
|
+
|
487
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
488
|
+
const LoadBalancingPolicy::BackendMetricData* backend_metric_data_ = nullptr;
|
489
|
+
std::function<void(grpc_error_handle, LoadBalancingPolicy::MetadataInterface*,
|
490
|
+
LoadBalancingPolicy::CallState*)>
|
491
|
+
lb_recv_trailing_metadata_ready_;
|
492
|
+
|
493
|
+
RefCountedPtr<SubchannelCall> subchannel_call_;
|
494
|
+
|
495
|
+
// For intercepting recv_trailing_metadata_ready for the LB policy.
|
496
|
+
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
497
|
+
grpc_closure recv_trailing_metadata_ready_;
|
498
|
+
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
499
|
+
|
500
|
+
// Batches are added to this list when received from above.
|
501
|
+
// They are removed when we are done handling the batch (i.e., when
|
502
|
+
// either we have invoked all of the batch's callbacks or we have
|
503
|
+
// passed the batch down to the subchannel call and are not
|
504
|
+
// intercepting any of its callbacks).
|
505
|
+
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
506
|
+
};
|
507
|
+
|
508
|
+
} // namespace grpc_core
|
75
509
|
|
76
510
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|