grpc 1.37.1 → 1.38.0.pre1
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 +64 -58
- 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 +2 -2
- 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 +5 -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 +628 -3101
- 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_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- 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 +1 -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/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 +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
- 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/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 +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- 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 +13 -11
- 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 +43 -28
- 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 +1 -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 +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- 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 +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- 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 +2 -2
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
- 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 +8 -8
- 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_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 +31 -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/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 +101 -93
- data/src/core/ext/xds/xds_api.h +6 -6
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- 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 +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- 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 +3 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -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 +21 -13
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- 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/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- 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 +4 -5
- 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 +3 -3
- 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 +217 -106
- 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 +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- 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 +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +4 -4
- 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 +11 -10
- 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 +36 -34
- 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 +25 -23
- 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 +6 -6
- 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_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/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- 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 +22 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -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 +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- 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/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 +3 -2
- 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 +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- 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 +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -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/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -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/rb_grpc_imports.generated.h +1 -1
- 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/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 +477 -461
- 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/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 +11 -3
- 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/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 -2
- 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 +7 -25
- 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/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 -8
- 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 +185 -17
- 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 -121
- 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 +98 -64
- 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
- metadata +68 -45
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- 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
@@ -0,0 +1,39 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_EVENT_ENGINE_PORT_H
|
15
|
+
#define GRPC_EVENT_ENGINE_PORT_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
// Platform-specific sockaddr includes
|
20
|
+
#ifdef GRPC_UV
|
21
|
+
#include <uv.h>
|
22
|
+
#elif defined(GPR_ANDROID) || defined(GPR_LINUX) || defined(GPR_APPLE) || \
|
23
|
+
defined(GPR_FREEBSD) || defined(GPR_OPENBSD) || defined(GPR_SOLARIS) || \
|
24
|
+
defined(GPR_AIX) || defined(GPR_NACL) || defined(GPR_FUCHSIA) || \
|
25
|
+
defined(GRPC_POSIX_SOCKET)
|
26
|
+
#define GRPC_EVENT_ENGINE_POSIX
|
27
|
+
#include <netdb.h>
|
28
|
+
#include <netinet/in.h>
|
29
|
+
#include <sys/socket.h>
|
30
|
+
#elif defined(GPR_WINDOWS)
|
31
|
+
#include <winsock2.h>
|
32
|
+
#include <ws2tcpip.h>
|
33
|
+
// must be included after the above
|
34
|
+
#include <mswsock.h>
|
35
|
+
#else
|
36
|
+
#error UNKNOWN PLATFORM
|
37
|
+
#endif
|
38
|
+
|
39
|
+
#endif // GRPC_EVENT_ENGINE_PORT_H
|
@@ -0,0 +1,81 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
15
|
+
#define GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include <functional>
|
20
|
+
|
21
|
+
#include "absl/status/status.h"
|
22
|
+
|
23
|
+
// forward-declaring an internal struct, not used publicly.
|
24
|
+
struct grpc_resource_quota;
|
25
|
+
struct grpc_resource_user;
|
26
|
+
|
27
|
+
namespace grpc_event_engine {
|
28
|
+
namespace experimental {
|
29
|
+
|
30
|
+
// TODO(nnoble): forward declared here, needs definition.
|
31
|
+
class SliceBuffer;
|
32
|
+
|
33
|
+
class SliceAllocator {
|
34
|
+
public:
|
35
|
+
// gRPC-internal constructor
|
36
|
+
explicit SliceAllocator(grpc_resource_user* user);
|
37
|
+
// Not copyable
|
38
|
+
SliceAllocator(SliceAllocator& other) = delete;
|
39
|
+
SliceAllocator& operator=(const SliceAllocator& other) = delete;
|
40
|
+
// Moveable
|
41
|
+
SliceAllocator(SliceAllocator&& other) = default;
|
42
|
+
SliceAllocator& operator=(SliceAllocator&& other) = default;
|
43
|
+
~SliceAllocator();
|
44
|
+
|
45
|
+
using AllocateCallback =
|
46
|
+
std::function<void(absl::Status, SliceBuffer* buffer)>;
|
47
|
+
// TODO(hork): explain what happens under resource exhaustion.
|
48
|
+
/// Requests \a size bytes from gRPC, and populates \a dest with the allocated
|
49
|
+
/// slices. Ownership of the \a SliceBuffer is not transferred.
|
50
|
+
absl::Status Allocate(size_t size, SliceBuffer* dest,
|
51
|
+
SliceAllocator::AllocateCallback cb);
|
52
|
+
|
53
|
+
private:
|
54
|
+
grpc_resource_user* resource_user_;
|
55
|
+
};
|
56
|
+
|
57
|
+
class SliceAllocatorFactory {
|
58
|
+
public:
|
59
|
+
// gRPC-internal constructor
|
60
|
+
explicit SliceAllocatorFactory(grpc_resource_quota* quota);
|
61
|
+
// Not copyable
|
62
|
+
SliceAllocatorFactory(SliceAllocatorFactory& other) = delete;
|
63
|
+
SliceAllocatorFactory& operator=(const SliceAllocatorFactory& other) = delete;
|
64
|
+
// Moveable
|
65
|
+
SliceAllocatorFactory(SliceAllocatorFactory&& other) = default;
|
66
|
+
SliceAllocatorFactory& operator=(SliceAllocatorFactory&& other) = default;
|
67
|
+
~SliceAllocatorFactory();
|
68
|
+
|
69
|
+
/// On Endpoint creation, call \a CreateSliceAllocator with the name of the
|
70
|
+
/// endpoint peer (a URI string, most likely). Note: \a peer_name must outlive
|
71
|
+
/// the Endpoint.
|
72
|
+
SliceAllocator CreateSliceAllocator(absl::string_view peer_name);
|
73
|
+
|
74
|
+
private:
|
75
|
+
grpc_resource_quota* resource_quota_;
|
76
|
+
};
|
77
|
+
|
78
|
+
} // namespace experimental
|
79
|
+
} // namespace grpc_event_engine
|
80
|
+
|
81
|
+
#endif // GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
data/include/grpc/grpc.h
CHANGED
@@ -414,7 +414,7 @@ GRPCAPI void grpc_server_register_completion_queue(grpc_server* server,
|
|
414
414
|
// There might be more methods added later, so users should take care to memset
|
415
415
|
// this to 0 before using it.
|
416
416
|
typedef struct {
|
417
|
-
void (*
|
417
|
+
void (*on_serving_status_update)(void* user_data, const char* uri,
|
418
418
|
grpc_status_code code,
|
419
419
|
const char* error_message);
|
420
420
|
void* user_data;
|
@@ -424,7 +424,7 @@ typedef struct grpc_server_config_fetcher grpc_server_config_fetcher;
|
|
424
424
|
|
425
425
|
/** EXPERIMENTAL. Creates an xDS config fetcher. */
|
426
426
|
GRPCAPI grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
|
427
|
-
grpc_server_xds_status_notifier notifier);
|
427
|
+
grpc_server_xds_status_notifier notifier, const grpc_channel_args* args);
|
428
428
|
|
429
429
|
/** EXPERIMENTAL. Destroys a config fetcher. */
|
430
430
|
GRPCAPI void grpc_server_config_fetcher_destroy(
|
@@ -29,10 +29,24 @@ extern "C" {
|
|
29
29
|
#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name"
|
30
30
|
#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name"
|
31
31
|
#define GRPC_X509_PEM_CERT_PROPERTY_NAME "x509_pem_cert"
|
32
|
+
// Please note that internally, we just faithfully pass whatever value we got by
|
33
|
+
// calling SSL_get_peer_cert_chain() in OpenSSL/BoringSSL. This will mean in
|
34
|
+
// OpenSSL, the following conditions might apply:
|
35
|
+
// 1. On the client side, this property returns the full certificate chain. On
|
36
|
+
// the server side, this property will return the certificate chain without the
|
37
|
+
// leaf certificate. Application can use GRPC_X509_PEM_CERT_PROPERTY_NAME to
|
38
|
+
// get the peer leaf certificate.
|
39
|
+
// 2. If the session is resumed, this property could be empty for OpenSSL (but
|
40
|
+
// not for BoringSSL).
|
41
|
+
// For more, please refer to the official OpenSSL manual:
|
42
|
+
// https://www.openssl.org/docs/man1.1.0/man3/SSL_get_peer_cert_chain.html.
|
32
43
|
#define GRPC_X509_PEM_CERT_CHAIN_PROPERTY_NAME "x509_pem_cert_chain"
|
33
44
|
#define GRPC_SSL_SESSION_REUSED_PROPERTY "ssl_session_reused"
|
34
45
|
#define GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME "security_level"
|
46
|
+
#define GRPC_PEER_DNS_PROPERTY_NAME "peer_dns"
|
35
47
|
#define GRPC_PEER_SPIFFE_ID_PROPERTY_NAME "peer_spiffe_id"
|
48
|
+
#define GRPC_PEER_EMAIL_PROPERTY_NAME "peer_email"
|
49
|
+
#define GRPC_PEER_IP_PROPERTY_NAME "peer_ip"
|
36
50
|
|
37
51
|
/** Environment variable that points to the default SSL roots file. This file
|
38
52
|
must be a PEM encoded file with all the roots such as the one that can be
|
@@ -353,6 +353,17 @@ typedef struct {
|
|
353
353
|
/* Timeout in milliseconds to use for calls to the grpclb load balancer.
|
354
354
|
If 0 or unset, the balancer calls will have no deadline. */
|
355
355
|
#define GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS "grpc.grpclb_call_timeout_ms"
|
356
|
+
/* Specifies the xDS bootstrap config as a JSON string.
|
357
|
+
FOR TESTING PURPOSES ONLY -- DO NOT USE IN PRODUCTION.
|
358
|
+
This option allows controlling the bootstrap configuration on a
|
359
|
+
per-channel basis, which is useful in tests. However, this results
|
360
|
+
in having a separate xDS client instance per channel rather than
|
361
|
+
using the global instance, which is not the intended way to use xDS.
|
362
|
+
Currently, this will (a) add unnecessary load on the xDS server and
|
363
|
+
(b) break use of CSDS, and there may be additional side effects in
|
364
|
+
the future. */
|
365
|
+
#define GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG \
|
366
|
+
"grpc.TEST_ONLY_DO_NOT_USE_IN_PROD.xds_bootstrap_config"
|
356
367
|
/* Timeout in milliseconds to wait for the serverlist from the grpclb load
|
357
368
|
balancer before using fallback backend addresses from the resolver.
|
358
369
|
If 0, enter fallback mode immediately. Default value is 10000. */
|
@@ -39,6 +39,11 @@
|
|
39
39
|
#endif
|
40
40
|
#endif // GPR_ABSEIL_SYNC
|
41
41
|
|
42
|
+
/*
|
43
|
+
* Defines GRPC_ERROR_IS_ABSEIL_STATUS to use absl::Status for grpc_error_handle
|
44
|
+
*/
|
45
|
+
// #define GRPC_ERROR_IS_ABSEIL_STATUS 1
|
46
|
+
|
42
47
|
/* Get windows.h included everywhere (we need it) */
|
43
48
|
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
|
44
49
|
#ifndef WIN32_LEAN_AND_MEAN
|
@@ -2,6 +2,15 @@
|
|
2
2
|
framework module grpc {
|
3
3
|
umbrella header "grpc.h"
|
4
4
|
|
5
|
+
header "byte_buffer.h"
|
6
|
+
header "byte_buffer_reader.h"
|
7
|
+
header "census.h"
|
8
|
+
header "compression.h"
|
9
|
+
header "fork.h"
|
10
|
+
header "grpc.h"
|
11
|
+
header "grpc_posix.h"
|
12
|
+
header "grpc_security.h"
|
13
|
+
header "grpc_security_constants.h"
|
5
14
|
header "impl/codegen/atm.h"
|
6
15
|
header "impl/codegen/byte_buffer.h"
|
7
16
|
header "impl/codegen/byte_buffer_reader.h"
|
@@ -19,6 +28,10 @@ framework module grpc {
|
|
19
28
|
header "impl/codegen/sync.h"
|
20
29
|
header "impl/codegen/sync_abseil.h"
|
21
30
|
header "impl/codegen/sync_generic.h"
|
31
|
+
header "load_reporting.h"
|
32
|
+
header "slice.h"
|
33
|
+
header "slice_buffer.h"
|
34
|
+
header "status.h"
|
22
35
|
header "support/alloc.h"
|
23
36
|
header "support/atm.h"
|
24
37
|
header "support/cpu.h"
|
@@ -31,22 +44,9 @@ framework module grpc {
|
|
31
44
|
header "support/sync_generic.h"
|
32
45
|
header "support/thd_id.h"
|
33
46
|
header "support/time.h"
|
34
|
-
header "byte_buffer.h"
|
35
|
-
header "byte_buffer_reader.h"
|
36
|
-
header "census.h"
|
37
|
-
header "compression.h"
|
38
|
-
header "fork.h"
|
39
|
-
header "grpc.h"
|
40
|
-
header "grpc_posix.h"
|
41
|
-
header "grpc_security.h"
|
42
|
-
header "grpc_security_constants.h"
|
43
|
-
header "load_reporting.h"
|
44
|
-
header "slice.h"
|
45
|
-
header "slice_buffer.h"
|
46
|
-
header "status.h"
|
47
47
|
header "support/workaround_list.h"
|
48
48
|
|
49
|
-
|
49
|
+
textual header "impl/codegen/atm_gcc_atomic.h"
|
50
50
|
textual header "impl/codegen/atm_gcc_sync.h"
|
51
51
|
textual header "impl/codegen/atm_windows.h"
|
52
52
|
textual header "impl/codegen/sync_custom.h"
|
@@ -89,7 +89,7 @@ static void backup_poller_shutdown_unref(backup_poller* p) {
|
|
89
89
|
}
|
90
90
|
}
|
91
91
|
|
92
|
-
static void done_poller(void* arg,
|
92
|
+
static void done_poller(void* arg, grpc_error_handle /*error*/) {
|
93
93
|
backup_poller_shutdown_unref(static_cast<backup_poller*>(arg));
|
94
94
|
}
|
95
95
|
|
@@ -112,7 +112,7 @@ static void g_poller_unref() {
|
|
112
112
|
}
|
113
113
|
}
|
114
114
|
|
115
|
-
static void run_poller(void* arg,
|
115
|
+
static void run_poller(void* arg, grpc_error_handle error) {
|
116
116
|
backup_poller* p = static_cast<backup_poller*>(arg);
|
117
117
|
if (error != GRPC_ERROR_NONE) {
|
118
118
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -127,7 +127,7 @@ static void run_poller(void* arg, grpc_error* error) {
|
|
127
127
|
backup_poller_shutdown_unref(p);
|
128
128
|
return;
|
129
129
|
}
|
130
|
-
|
130
|
+
grpc_error_handle err =
|
131
131
|
grpc_pollset_work(p->pollset, nullptr, grpc_core::ExecCtx::Get()->Now());
|
132
132
|
gpr_mu_unlock(p->pollset_mu);
|
133
133
|
GRPC_LOG_IF_ERROR("Run client channel backup poller", err);
|
@@ -1,28 +1,23 @@
|
|
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
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
21
19
|
#include "src/core/lib/surface/channel.h"
|
22
20
|
|
23
|
-
#include <inttypes.h>
|
24
|
-
|
25
|
-
#include <grpc/support/alloc.h>
|
26
21
|
#include <grpc/support/log.h>
|
27
22
|
|
28
23
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
@@ -32,195 +27,205 @@
|
|
32
27
|
|
33
28
|
grpc_connectivity_state grpc_channel_check_connectivity_state(
|
34
29
|
grpc_channel* channel, int try_to_connect) {
|
35
|
-
/* forward through to the underlying client channel */
|
36
|
-
grpc_channel_element* client_channel_elem =
|
37
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
38
30
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
39
31
|
grpc_core::ExecCtx exec_ctx;
|
40
|
-
grpc_connectivity_state state;
|
41
32
|
GRPC_API_TRACE(
|
42
33
|
"grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2,
|
43
34
|
(channel, try_to_connect));
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
35
|
+
// Forward through to the underlying client channel.
|
36
|
+
grpc_core::ClientChannel* client_channel =
|
37
|
+
grpc_core::ClientChannel::GetFromChannel(channel);
|
38
|
+
if (GPR_UNLIKELY(client_channel == nullptr)) {
|
39
|
+
gpr_log(GPR_ERROR,
|
40
|
+
"grpc_channel_check_connectivity_state called on something that is "
|
41
|
+
"not a client channel");
|
42
|
+
return GRPC_CHANNEL_SHUTDOWN;
|
49
43
|
}
|
50
|
-
|
51
|
-
|
52
|
-
"not a client channel, but '%s'",
|
53
|
-
client_channel_elem->filter->name);
|
44
|
+
return client_channel->CheckConnectivityState(try_to_connect);
|
45
|
+
}
|
54
46
|
|
55
|
-
|
47
|
+
int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
|
48
|
+
grpc_core::ClientChannel* client_channel =
|
49
|
+
grpc_core::ClientChannel::GetFromChannel(channel);
|
50
|
+
if (client_channel == nullptr) {
|
51
|
+
gpr_log(GPR_ERROR,
|
52
|
+
"grpc_channel_num_external_connectivity_watchers called on "
|
53
|
+
"something that is not a client channel");
|
54
|
+
return 0;
|
55
|
+
}
|
56
|
+
return client_channel->NumExternalConnectivityWatchers();
|
56
57
|
}
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
CALLING_BACK_AND_FINISHED,
|
62
|
-
} callback_phase;
|
59
|
+
int grpc_channel_support_connectivity_watcher(grpc_channel* channel) {
|
60
|
+
return grpc_core::ClientChannel::GetFromChannel(channel) != nullptr;
|
61
|
+
}
|
63
62
|
|
63
|
+
namespace grpc_core {
|
64
64
|
namespace {
|
65
|
-
struct state_watcher {
|
66
|
-
gpr_mu mu;
|
67
|
-
callback_phase phase;
|
68
|
-
grpc_closure on_complete;
|
69
|
-
grpc_closure on_timeout;
|
70
|
-
grpc_closure watcher_timer_init;
|
71
|
-
grpc_timer alarm;
|
72
|
-
grpc_connectivity_state state;
|
73
|
-
grpc_completion_queue* cq;
|
74
|
-
grpc_cq_completion completion_storage;
|
75
|
-
grpc_channel* channel;
|
76
|
-
grpc_error* error;
|
77
|
-
void* tag;
|
78
|
-
};
|
79
|
-
} // namespace
|
80
|
-
|
81
|
-
static void delete_state_watcher(state_watcher* w) {
|
82
|
-
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
83
|
-
grpc_channel_get_channel_stack(w->channel));
|
84
|
-
if (client_channel_elem->filter == &grpc_client_channel_filter) {
|
85
|
-
GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_channel_connectivity");
|
86
|
-
} else {
|
87
|
-
abort();
|
88
|
-
}
|
89
|
-
gpr_mu_destroy(&w->mu);
|
90
|
-
gpr_free(w);
|
91
|
-
}
|
92
65
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
66
|
+
class StateWatcher {
|
67
|
+
public:
|
68
|
+
StateWatcher(grpc_channel* channel, grpc_completion_queue* cq, void* tag,
|
69
|
+
grpc_connectivity_state last_observed_state,
|
70
|
+
gpr_timespec deadline)
|
71
|
+
: channel_(channel), cq_(cq), tag_(tag), state_(last_observed_state) {
|
72
|
+
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
|
73
|
+
GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity");
|
74
|
+
GRPC_CLOSURE_INIT(&on_complete_, WatchComplete, this, nullptr);
|
75
|
+
GRPC_CLOSURE_INIT(&on_timeout_, TimeoutComplete, this, nullptr);
|
76
|
+
auto* watcher_timer_init_state = new WatcherTimerInitState(
|
77
|
+
this, grpc_timespec_to_millis_round_up(deadline));
|
78
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel);
|
79
|
+
GPR_ASSERT(client_channel != nullptr);
|
80
|
+
client_channel->AddExternalConnectivityWatcher(
|
81
|
+
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)), &state_,
|
82
|
+
&on_complete_, watcher_timer_init_state->closure());
|
104
83
|
}
|
105
|
-
gpr_mu_unlock(&w->mu);
|
106
84
|
|
107
|
-
|
108
|
-
|
85
|
+
~StateWatcher() {
|
86
|
+
GRPC_CHANNEL_INTERNAL_UNREF(channel_, "watch_channel_connectivity");
|
109
87
|
}
|
110
|
-
}
|
111
|
-
|
112
|
-
static void partly_done(state_watcher* w, bool due_to_completion,
|
113
|
-
grpc_error* error) {
|
114
|
-
bool end_op = false;
|
115
|
-
void* end_op_tag = nullptr;
|
116
|
-
grpc_error* end_op_error = nullptr;
|
117
|
-
grpc_completion_queue* end_op_cq = nullptr;
|
118
|
-
grpc_cq_completion* end_op_completion_storage = nullptr;
|
119
88
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
}
|
89
|
+
private:
|
90
|
+
// A fire-and-forget object used to delay starting the timer until the
|
91
|
+
// ClientChannel actually starts the watch.
|
92
|
+
class WatcherTimerInitState {
|
93
|
+
public:
|
94
|
+
WatcherTimerInitState(StateWatcher* state_watcher, grpc_millis deadline)
|
95
|
+
: state_watcher_(state_watcher), deadline_(deadline) {
|
96
|
+
GRPC_CLOSURE_INIT(&closure_, WatcherTimerInit, this, nullptr);
|
97
|
+
}
|
130
98
|
|
131
|
-
|
99
|
+
grpc_closure* closure() { return &closure_; }
|
132
100
|
|
133
|
-
|
134
|
-
|
135
|
-
|
101
|
+
private:
|
102
|
+
static void WatcherTimerInit(void* arg, grpc_error_handle /*error*/) {
|
103
|
+
auto* self = static_cast<WatcherTimerInitState*>(arg);
|
104
|
+
grpc_timer_init(&self->state_watcher_->timer_, self->deadline_,
|
105
|
+
&self->state_watcher_->on_timeout_);
|
106
|
+
delete self;
|
136
107
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
108
|
+
|
109
|
+
StateWatcher* state_watcher_;
|
110
|
+
grpc_millis deadline_;
|
111
|
+
grpc_closure closure_;
|
112
|
+
};
|
113
|
+
|
114
|
+
enum CallbackPhase { kWaiting, kReadyToCallBack, kCallingBackAndFinished };
|
115
|
+
|
116
|
+
// Called when the completion is returned to the CQ.
|
117
|
+
static void FinishedCompletion(void* arg, grpc_cq_completion* /*ignored*/) {
|
118
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
119
|
+
bool should_delete = false;
|
120
|
+
{
|
121
|
+
MutexLock lock(&self->mu_);
|
122
|
+
switch (self->phase_) {
|
123
|
+
case kWaiting:
|
124
|
+
case kReadyToCallBack:
|
125
|
+
GPR_UNREACHABLE_CODE(return );
|
126
|
+
case kCallingBackAndFinished:
|
127
|
+
should_delete = true;
|
128
|
+
}
|
145
129
|
}
|
130
|
+
if (should_delete) delete self;
|
146
131
|
}
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
132
|
+
|
133
|
+
void PartlyDone(bool due_to_completion, grpc_error_handle error) {
|
134
|
+
bool end_op = false;
|
135
|
+
void* end_op_tag = nullptr;
|
136
|
+
grpc_error_handle end_op_error = GRPC_ERROR_NONE;
|
137
|
+
grpc_completion_queue* end_op_cq = nullptr;
|
138
|
+
grpc_cq_completion* end_op_completion_storage = nullptr;
|
139
|
+
if (due_to_completion) {
|
140
|
+
grpc_timer_cancel(&timer_);
|
141
|
+
} else {
|
142
|
+
grpc_core::ClientChannel* client_channel =
|
143
|
+
grpc_core::ClientChannel::GetFromChannel(channel_);
|
144
|
+
GPR_ASSERT(client_channel != nullptr);
|
145
|
+
client_channel->CancelExternalConnectivityWatcher(&on_complete_);
|
146
|
+
}
|
147
|
+
{
|
148
|
+
MutexLock lock(&mu_);
|
149
|
+
if (due_to_completion) {
|
150
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
|
151
|
+
GRPC_LOG_IF_ERROR("watch_completion_error", GRPC_ERROR_REF(error));
|
152
|
+
}
|
153
|
+
GRPC_ERROR_UNREF(error);
|
154
|
+
error = GRPC_ERROR_NONE;
|
155
|
+
} else {
|
156
|
+
if (error == GRPC_ERROR_NONE) {
|
157
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
158
|
+
"Timed out waiting for connection state change");
|
159
|
+
} else if (error == GRPC_ERROR_CANCELLED) {
|
160
|
+
error = GRPC_ERROR_NONE;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
switch (phase_) {
|
164
|
+
case kWaiting:
|
165
|
+
GRPC_ERROR_REF(error);
|
166
|
+
error_ = error;
|
167
|
+
phase_ = kReadyToCallBack;
|
168
|
+
break;
|
169
|
+
case kReadyToCallBack:
|
170
|
+
if (error != GRPC_ERROR_NONE) {
|
171
|
+
GPR_ASSERT(!due_to_completion);
|
172
|
+
GRPC_ERROR_UNREF(error_);
|
173
|
+
GRPC_ERROR_REF(error);
|
174
|
+
error_ = error;
|
175
|
+
}
|
176
|
+
phase_ = kCallingBackAndFinished;
|
177
|
+
end_op = true;
|
178
|
+
end_op_cq = cq_;
|
179
|
+
end_op_tag = tag_;
|
180
|
+
end_op_error = error_;
|
181
|
+
end_op_completion_storage = &completion_storage_;
|
182
|
+
break;
|
183
|
+
case kCallingBackAndFinished:
|
184
|
+
GPR_UNREACHABLE_CODE(return );
|
159
185
|
}
|
160
|
-
|
161
|
-
|
162
|
-
end_op_cq
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
break;
|
167
|
-
case CALLING_BACK_AND_FINISHED:
|
168
|
-
GPR_UNREACHABLE_CODE(return );
|
169
|
-
break;
|
186
|
+
}
|
187
|
+
if (end_op) {
|
188
|
+
grpc_cq_end_op(end_op_cq, end_op_tag, end_op_error, FinishedCompletion,
|
189
|
+
this, end_op_completion_storage);
|
190
|
+
}
|
191
|
+
GRPC_ERROR_UNREF(error);
|
170
192
|
}
|
171
|
-
gpr_mu_unlock(&w->mu);
|
172
193
|
|
173
|
-
|
174
|
-
|
175
|
-
|
194
|
+
static void WatchComplete(void* arg, grpc_error_handle error) {
|
195
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
196
|
+
self->PartlyDone(/*due_to_completion=*/true, GRPC_ERROR_REF(error));
|
176
197
|
}
|
177
198
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
partly_done(static_cast<state_watcher*>(pw), true, GRPC_ERROR_REF(error));
|
183
|
-
}
|
199
|
+
static void TimeoutComplete(void* arg, grpc_error_handle error) {
|
200
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
201
|
+
self->PartlyDone(/*due_to_completion=*/false, GRPC_ERROR_REF(error));
|
202
|
+
}
|
184
203
|
|
185
|
-
|
186
|
-
|
187
|
-
|
204
|
+
grpc_channel* channel_;
|
205
|
+
grpc_completion_queue* cq_;
|
206
|
+
void* tag_;
|
188
207
|
|
189
|
-
|
190
|
-
grpc_channel_element* client_channel_elem =
|
191
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
192
|
-
return grpc_client_channel_num_external_connectivity_watchers(
|
193
|
-
client_channel_elem);
|
194
|
-
}
|
208
|
+
grpc_connectivity_state state_;
|
195
209
|
|
196
|
-
|
197
|
-
state_watcher* w;
|
198
|
-
gpr_timespec deadline;
|
199
|
-
} watcher_timer_init_arg;
|
210
|
+
grpc_cq_completion completion_storage_;
|
200
211
|
|
201
|
-
|
202
|
-
|
212
|
+
grpc_closure on_complete_;
|
213
|
+
grpc_timer timer_;
|
214
|
+
grpc_closure on_timeout_;
|
203
215
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
}
|
216
|
+
Mutex mu_;
|
217
|
+
CallbackPhase phase_ ABSL_GUARDED_BY(mu_) = kWaiting;
|
218
|
+
grpc_error_handle error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
|
219
|
+
};
|
208
220
|
|
209
|
-
|
210
|
-
|
211
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
212
|
-
return client_channel_elem->filter != &grpc_client_channel_filter ? 0 : 1;
|
213
|
-
}
|
221
|
+
} // namespace
|
222
|
+
} // namespace grpc_core
|
214
223
|
|
215
224
|
void grpc_channel_watch_connectivity_state(
|
216
225
|
grpc_channel* channel, grpc_connectivity_state last_observed_state,
|
217
226
|
gpr_timespec deadline, grpc_completion_queue* cq, void* tag) {
|
218
|
-
grpc_channel_element* client_channel_elem =
|
219
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
220
227
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
221
228
|
grpc_core::ExecCtx exec_ctx;
|
222
|
-
state_watcher* w = static_cast<state_watcher*>(gpr_malloc(sizeof(*w)));
|
223
|
-
|
224
229
|
GRPC_API_TRACE(
|
225
230
|
"grpc_channel_watch_connectivity_state("
|
226
231
|
"channel=%p, last_observed_state=%d, "
|
@@ -230,35 +235,5 @@ void grpc_channel_watch_connectivity_state(
|
|
230
235
|
7,
|
231
236
|
(channel, (int)last_observed_state, deadline.tv_sec, deadline.tv_nsec,
|
232
237
|
(int)deadline.clock_type, cq, tag));
|
233
|
-
|
234
|
-
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
|
235
|
-
|
236
|
-
gpr_mu_init(&w->mu);
|
237
|
-
GRPC_CLOSURE_INIT(&w->on_complete, watch_complete, w,
|
238
|
-
grpc_schedule_on_exec_ctx);
|
239
|
-
GRPC_CLOSURE_INIT(&w->on_timeout, timeout_complete, w,
|
240
|
-
grpc_schedule_on_exec_ctx);
|
241
|
-
w->phase = WAITING;
|
242
|
-
w->state = last_observed_state;
|
243
|
-
w->cq = cq;
|
244
|
-
w->tag = tag;
|
245
|
-
w->channel = channel;
|
246
|
-
w->error = nullptr;
|
247
|
-
|
248
|
-
watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(
|
249
|
-
gpr_malloc(sizeof(watcher_timer_init_arg)));
|
250
|
-
wa->w = w;
|
251
|
-
wa->deadline = deadline;
|
252
|
-
GRPC_CLOSURE_INIT(&w->watcher_timer_init, watcher_timer_init, wa,
|
253
|
-
grpc_schedule_on_exec_ctx);
|
254
|
-
|
255
|
-
if (client_channel_elem->filter == &grpc_client_channel_filter) {
|
256
|
-
GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity");
|
257
|
-
grpc_client_channel_watch_connectivity_state(
|
258
|
-
client_channel_elem,
|
259
|
-
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)), &w->state,
|
260
|
-
&w->on_complete, &w->watcher_timer_init);
|
261
|
-
} else {
|
262
|
-
abort();
|
263
|
-
}
|
238
|
+
new grpc_core::StateWatcher(channel, cq, tag, last_observed_state, deadline);
|
264
239
|
}
|