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
@@ -54,11 +54,11 @@
|
|
54
54
|
* (OK, Cancelled, Unknown). */
|
55
55
|
#define NUM_CACHED_STATUS_ELEMS 3
|
56
56
|
|
57
|
-
static void destroy_channel(void* arg,
|
57
|
+
static void destroy_channel(void* arg, grpc_error_handle error);
|
58
58
|
|
59
59
|
grpc_channel* grpc_channel_create_with_builder(
|
60
60
|
grpc_channel_stack_builder* builder,
|
61
|
-
grpc_channel_stack_type channel_stack_type,
|
61
|
+
grpc_channel_stack_type channel_stack_type, grpc_error_handle* error) {
|
62
62
|
char* target = gpr_strdup(grpc_channel_stack_builder_get_target(builder));
|
63
63
|
grpc_channel_args* args = grpc_channel_args_copy(
|
64
64
|
grpc_channel_stack_builder_get_channel_arguments(builder));
|
@@ -70,12 +70,12 @@ grpc_channel* grpc_channel_create_with_builder(
|
|
70
70
|
} else {
|
71
71
|
GRPC_STATS_INC_CLIENT_CHANNELS_CREATED();
|
72
72
|
}
|
73
|
-
|
73
|
+
grpc_error_handle builder_error = grpc_channel_stack_builder_finish(
|
74
74
|
builder, sizeof(grpc_channel), 1, destroy_channel, nullptr,
|
75
75
|
reinterpret_cast<void**>(&channel));
|
76
76
|
if (builder_error != GRPC_ERROR_NONE) {
|
77
77
|
gpr_log(GPR_ERROR, "channel stack builder failed: %s",
|
78
|
-
|
78
|
+
grpc_error_std_string(builder_error).c_str());
|
79
79
|
GPR_ASSERT(channel == nullptr);
|
80
80
|
if (error != nullptr) {
|
81
81
|
*error = builder_error;
|
@@ -225,7 +225,7 @@ grpc_channel* grpc_channel_create(const char* target,
|
|
225
225
|
grpc_channel_stack_type channel_stack_type,
|
226
226
|
grpc_transport* optional_transport,
|
227
227
|
grpc_resource_user* resource_user,
|
228
|
-
|
228
|
+
grpc_error_handle* error) {
|
229
229
|
// We need to make sure that grpc_shutdown() does not shut things down
|
230
230
|
// until after the channel is destroyed. However, the channel may not
|
231
231
|
// actually be destroyed by the time grpc_channel_destroy() returns,
|
@@ -497,7 +497,7 @@ grpc_call* grpc_channel_create_registered_call(
|
|
497
497
|
return call;
|
498
498
|
}
|
499
499
|
|
500
|
-
static void destroy_channel(void* arg,
|
500
|
+
static void destroy_channel(void* arg, grpc_error_handle /*error*/) {
|
501
501
|
grpc_channel* channel = static_cast<grpc_channel*>(arg);
|
502
502
|
if (channel->channelz_node != nullptr) {
|
503
503
|
channel->channelz_node->AddTraceEvent(
|
@@ -35,7 +35,7 @@ grpc_channel* grpc_channel_create(const char* target,
|
|
35
35
|
grpc_channel_stack_type channel_stack_type,
|
36
36
|
grpc_transport* optional_transport,
|
37
37
|
grpc_resource_user* resource_user = nullptr,
|
38
|
-
|
38
|
+
grpc_error_handle* error = nullptr);
|
39
39
|
|
40
40
|
/** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
|
41
41
|
* is safe to use from within core. */
|
@@ -43,7 +43,8 @@ void grpc_channel_destroy_internal(grpc_channel* channel);
|
|
43
43
|
|
44
44
|
grpc_channel* grpc_channel_create_with_builder(
|
45
45
|
grpc_channel_stack_builder* builder,
|
46
|
-
grpc_channel_stack_type channel_stack_type,
|
46
|
+
grpc_channel_stack_type channel_stack_type,
|
47
|
+
grpc_error_handle* error = nullptr);
|
47
48
|
|
48
49
|
/** Create a call given a grpc_channel, in order to call \a method.
|
49
50
|
Progress is tied to activity on \a pollset_set. The returned call object is
|
@@ -38,7 +38,7 @@ static void ping_destroy(void* arg, grpc_cq_completion* /*storage*/) {
|
|
38
38
|
gpr_free(arg);
|
39
39
|
}
|
40
40
|
|
41
|
-
static void ping_done(void* arg,
|
41
|
+
static void ping_done(void* arg, grpc_error_handle error) {
|
42
42
|
ping_result* pr = static_cast<ping_result*>(arg);
|
43
43
|
grpc_cq_end_op(pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, pr,
|
44
44
|
&pr->completion_storage);
|
@@ -70,10 +70,10 @@ struct cq_poller_vtable {
|
|
70
70
|
bool can_listen;
|
71
71
|
size_t (*size)(void);
|
72
72
|
void (*init)(grpc_pollset* pollset, gpr_mu** mu);
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
73
|
+
grpc_error_handle (*kick)(grpc_pollset* pollset,
|
74
|
+
grpc_pollset_worker* specific_worker);
|
75
|
+
grpc_error_handle (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker,
|
76
|
+
grpc_millis deadline);
|
77
77
|
void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure);
|
78
78
|
void (*destroy)(grpc_pollset* pollset);
|
79
79
|
};
|
@@ -103,9 +103,9 @@ void non_polling_poller_destroy(grpc_pollset* pollset) {
|
|
103
103
|
gpr_mu_destroy(&npp->mu);
|
104
104
|
}
|
105
105
|
|
106
|
-
|
107
|
-
|
108
|
-
|
106
|
+
grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
|
107
|
+
grpc_pollset_worker** worker,
|
108
|
+
grpc_millis deadline) {
|
109
109
|
non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
|
110
110
|
if (npp->shutdown) return GRPC_ERROR_NONE;
|
111
111
|
if (npp->kicked_without_poller) {
|
@@ -145,8 +145,8 @@ grpc_error* non_polling_poller_work(grpc_pollset* pollset,
|
|
145
145
|
return GRPC_ERROR_NONE;
|
146
146
|
}
|
147
147
|
|
148
|
-
|
149
|
-
|
148
|
+
grpc_error_handle non_polling_poller_kick(
|
149
|
+
grpc_pollset* pollset, grpc_pollset_worker* specific_worker) {
|
150
150
|
non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
|
151
151
|
if (specific_worker == nullptr) {
|
152
152
|
specific_worker = reinterpret_cast<grpc_pollset_worker*>(p->root);
|
@@ -202,7 +202,7 @@ struct cq_vtable {
|
|
202
202
|
void (*shutdown)(grpc_completion_queue* cq);
|
203
203
|
void (*destroy)(void* data);
|
204
204
|
bool (*begin_op)(grpc_completion_queue* cq, void* tag);
|
205
|
-
void (*end_op)(grpc_completion_queue* cq, void* tag,
|
205
|
+
void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
206
206
|
void (*done)(void* done_arg, grpc_cq_completion* storage),
|
207
207
|
void* done_arg, grpc_cq_completion* storage, bool internal);
|
208
208
|
grpc_event (*next)(grpc_completion_queue* cq, gpr_timespec deadline,
|
@@ -376,17 +376,17 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
|
|
376
376
|
// safe to free up that storage. The storage MUST NOT be freed until the
|
377
377
|
// done callback is invoked.
|
378
378
|
static void cq_end_op_for_next(
|
379
|
-
grpc_completion_queue* cq, void* tag,
|
379
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
380
380
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
381
381
|
grpc_cq_completion* storage, bool internal);
|
382
382
|
|
383
383
|
static void cq_end_op_for_pluck(
|
384
|
-
grpc_completion_queue* cq, void* tag,
|
384
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
385
385
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
386
386
|
grpc_cq_completion* storage, bool internal);
|
387
387
|
|
388
388
|
static void cq_end_op_for_callback(
|
389
|
-
grpc_completion_queue* cq, void* tag,
|
389
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
390
390
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
391
391
|
grpc_cq_completion* storage, bool internal);
|
392
392
|
|
@@ -439,7 +439,7 @@ grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
|
|
439
439
|
} \
|
440
440
|
} while (0)
|
441
441
|
|
442
|
-
static void on_pollset_shutdown_done(void* arg,
|
442
|
+
static void on_pollset_shutdown_done(void* arg, grpc_error_handle error);
|
443
443
|
|
444
444
|
void grpc_cq_global_init() {
|
445
445
|
gpr_tls_init(&g_cached_event);
|
@@ -604,7 +604,7 @@ void grpc_cq_internal_ref(grpc_completion_queue* cq) {
|
|
604
604
|
cq->owning_refs.Ref(debug_location, reason);
|
605
605
|
}
|
606
606
|
|
607
|
-
static void on_pollset_shutdown_done(void* arg,
|
607
|
+
static void on_pollset_shutdown_done(void* arg, grpc_error_handle /*error*/) {
|
608
608
|
grpc_completion_queue* cq = static_cast<grpc_completion_queue*>(arg);
|
609
609
|
GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy");
|
610
610
|
}
|
@@ -690,7 +690,7 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
|
|
690
690
|
* completion
|
691
691
|
* type of GRPC_CQ_NEXT) */
|
692
692
|
static void cq_end_op_for_next(
|
693
|
-
grpc_completion_queue* cq, void* tag,
|
693
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
694
694
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
695
695
|
grpc_cq_completion* storage, bool /*internal*/) {
|
696
696
|
GPR_TIMER_SCOPE("cq_end_op_for_next", 0);
|
@@ -698,14 +698,15 @@ static void cq_end_op_for_next(
|
|
698
698
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
699
699
|
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
700
700
|
error != GRPC_ERROR_NONE)) {
|
701
|
-
|
701
|
+
std::string errmsg = grpc_error_std_string(error);
|
702
702
|
GRPC_API_TRACE(
|
703
703
|
"cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
|
704
704
|
"done=%p, done_arg=%p, storage=%p)",
|
705
|
-
6, (cq, tag, errmsg, done, done_arg, storage));
|
705
|
+
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
706
706
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
707
707
|
error != GRPC_ERROR_NONE) {
|
708
|
-
gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
|
708
|
+
gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
|
709
|
+
errmsg.c_str());
|
709
710
|
}
|
710
711
|
}
|
711
712
|
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
|
@@ -736,13 +737,13 @@ static void cq_end_op_for_next(
|
|
736
737
|
/* Only kick if this is the first item queued */
|
737
738
|
if (is_first) {
|
738
739
|
gpr_mu_lock(cq->mu);
|
739
|
-
|
740
|
+
grpc_error_handle kick_error =
|
740
741
|
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
|
741
742
|
gpr_mu_unlock(cq->mu);
|
742
743
|
|
743
744
|
if (kick_error != GRPC_ERROR_NONE) {
|
744
|
-
|
745
|
-
|
745
|
+
gpr_log(GPR_ERROR, "Kick failed: %s",
|
746
|
+
grpc_error_std_string(kick_error).c_str());
|
746
747
|
GRPC_ERROR_UNREF(kick_error);
|
747
748
|
}
|
748
749
|
}
|
@@ -771,7 +772,7 @@ static void cq_end_op_for_next(
|
|
771
772
|
* completion
|
772
773
|
* type of GRPC_CQ_PLUCK) */
|
773
774
|
static void cq_end_op_for_pluck(
|
774
|
-
grpc_completion_queue* cq, void* tag,
|
775
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
775
776
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
776
777
|
grpc_cq_completion* storage, bool /*internal*/) {
|
777
778
|
GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
|
@@ -782,14 +783,15 @@ static void cq_end_op_for_pluck(
|
|
782
783
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
783
784
|
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
784
785
|
error != GRPC_ERROR_NONE)) {
|
785
|
-
|
786
|
+
std::string errmsg = grpc_error_std_string(error).c_str();
|
786
787
|
GRPC_API_TRACE(
|
787
788
|
"cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
|
788
789
|
"done=%p, done_arg=%p, storage=%p)",
|
789
|
-
6, (cq, tag, errmsg, done, done_arg, storage));
|
790
|
+
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
790
791
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
791
792
|
error != GRPC_ERROR_NONE) {
|
792
|
-
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
793
|
+
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
794
|
+
errmsg.c_str());
|
793
795
|
}
|
794
796
|
}
|
795
797
|
|
@@ -820,15 +822,12 @@ static void cq_end_op_for_pluck(
|
|
820
822
|
}
|
821
823
|
}
|
822
824
|
|
823
|
-
|
825
|
+
grpc_error_handle kick_error =
|
824
826
|
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
|
825
|
-
|
826
827
|
gpr_mu_unlock(cq->mu);
|
827
|
-
|
828
828
|
if (kick_error != GRPC_ERROR_NONE) {
|
829
|
-
|
830
|
-
|
831
|
-
|
829
|
+
gpr_log(GPR_ERROR, "Kick failed: %s",
|
830
|
+
grpc_error_std_string(kick_error).c_str());
|
832
831
|
GRPC_ERROR_UNREF(kick_error);
|
833
832
|
}
|
834
833
|
}
|
@@ -836,14 +835,14 @@ static void cq_end_op_for_pluck(
|
|
836
835
|
GRPC_ERROR_UNREF(error);
|
837
836
|
}
|
838
837
|
|
839
|
-
static void functor_callback(void* arg,
|
838
|
+
static void functor_callback(void* arg, grpc_error_handle error) {
|
840
839
|
auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
|
841
840
|
functor->functor_run(functor, error == GRPC_ERROR_NONE);
|
842
841
|
}
|
843
842
|
|
844
843
|
/* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
|
845
844
|
static void cq_end_op_for_callback(
|
846
|
-
grpc_completion_queue* cq, void* tag,
|
845
|
+
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
847
846
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
848
847
|
grpc_cq_completion* storage, bool internal) {
|
849
848
|
GPR_TIMER_SCOPE("cq_end_op_for_callback", 0);
|
@@ -853,14 +852,15 @@ static void cq_end_op_for_callback(
|
|
853
852
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
854
853
|
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
855
854
|
error != GRPC_ERROR_NONE)) {
|
856
|
-
|
855
|
+
std::string errmsg = grpc_error_std_string(error);
|
857
856
|
GRPC_API_TRACE(
|
858
857
|
"cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
|
859
858
|
"done=%p, done_arg=%p, storage=%p)",
|
860
|
-
6, (cq, tag, errmsg, done, done_arg, storage));
|
859
|
+
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
861
860
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
862
861
|
error != GRPC_ERROR_NONE) {
|
863
|
-
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
862
|
+
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
863
|
+
errmsg.c_str());
|
864
864
|
}
|
865
865
|
}
|
866
866
|
|
@@ -896,7 +896,8 @@ static void cq_end_op_for_callback(
|
|
896
896
|
GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
|
897
897
|
}
|
898
898
|
|
899
|
-
void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
|
899
|
+
void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
|
900
|
+
grpc_error_handle error,
|
900
901
|
void (*done)(void* done_arg, grpc_cq_completion* storage),
|
901
902
|
void* done_arg, grpc_cq_completion* storage,
|
902
903
|
bool internal) {
|
@@ -1056,14 +1057,13 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
|
1056
1057
|
/* The main polling work happens in grpc_pollset_work */
|
1057
1058
|
gpr_mu_lock(cq->mu);
|
1058
1059
|
cq->num_polls++;
|
1059
|
-
|
1060
|
-
|
1060
|
+
grpc_error_handle err = cq->poller_vtable->work(
|
1061
|
+
POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
|
1061
1062
|
gpr_mu_unlock(cq->mu);
|
1062
1063
|
|
1063
1064
|
if (err != GRPC_ERROR_NONE) {
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1065
|
+
gpr_log(GPR_ERROR, "Completion queue next failed: %s",
|
1066
|
+
grpc_error_std_string(err).c_str());
|
1067
1067
|
GRPC_ERROR_UNREF(err);
|
1068
1068
|
ret.type = GRPC_QUEUE_TIMEOUT;
|
1069
1069
|
ret.success = 0;
|
@@ -1299,14 +1299,13 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
|
|
1299
1299
|
break;
|
1300
1300
|
}
|
1301
1301
|
cq->num_polls++;
|
1302
|
-
|
1302
|
+
grpc_error_handle err =
|
1303
1303
|
cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
|
1304
1304
|
if (err != GRPC_ERROR_NONE) {
|
1305
1305
|
del_plucker(cq, tag, &worker);
|
1306
1306
|
gpr_mu_unlock(cq->mu);
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1307
|
+
gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
|
1308
|
+
grpc_error_std_string(err).c_str());
|
1310
1309
|
GRPC_ERROR_UNREF(err);
|
1311
1310
|
ret.type = GRPC_QUEUE_TIMEOUT;
|
1312
1311
|
ret.success = 0;
|
@@ -77,7 +77,8 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag);
|
|
77
77
|
|
78
78
|
/* Queue a GRPC_OP_COMPLETED operation; tag must correspond to the tag passed to
|
79
79
|
grpc_cq_begin_op */
|
80
|
-
void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
|
80
|
+
void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
|
81
|
+
grpc_error_handle error,
|
81
82
|
void (*done)(void* done_arg, grpc_cq_completion* storage),
|
82
83
|
void* done_arg, grpc_cq_completion* storage,
|
83
84
|
bool internal = false);
|
@@ -44,14 +44,14 @@ namespace {
|
|
44
44
|
struct ChannelData {
|
45
45
|
explicit ChannelData(grpc_channel_element_args* args)
|
46
46
|
: state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {
|
47
|
-
|
47
|
+
grpc_error_handle err = grpc_channel_args_find_pointer<grpc_error>(
|
48
48
|
args->channel_args, GRPC_ARG_LAME_FILTER_ERROR);
|
49
49
|
if (err != nullptr) error = GRPC_ERROR_REF(err);
|
50
50
|
}
|
51
51
|
|
52
52
|
~ChannelData() { GRPC_ERROR_UNREF(error); }
|
53
53
|
|
54
|
-
|
54
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
55
55
|
Mutex mu;
|
56
56
|
ConnectivityStateTracker state_tracker;
|
57
57
|
};
|
@@ -98,8 +98,8 @@ static void lame_start_transport_op(grpc_channel_element* elem,
|
|
98
98
|
}
|
99
99
|
}
|
100
100
|
|
101
|
-
static
|
102
|
-
|
101
|
+
static grpc_error_handle lame_init_call_elem(
|
102
|
+
grpc_call_element* elem, const grpc_call_element_args* args) {
|
103
103
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
104
104
|
calld->call_combiner = args->call_combiner;
|
105
105
|
return GRPC_ERROR_NONE;
|
@@ -111,8 +111,8 @@ static void lame_destroy_call_elem(grpc_call_element* /*elem*/,
|
|
111
111
|
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
|
112
112
|
}
|
113
113
|
|
114
|
-
static
|
115
|
-
|
114
|
+
static grpc_error_handle lame_init_channel_elem(
|
115
|
+
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
116
116
|
new (elem->channel_data) ChannelData(args);
|
117
117
|
return GRPC_ERROR_NONE;
|
118
118
|
}
|
@@ -122,13 +122,13 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) {
|
|
122
122
|
chand->~ChannelData();
|
123
123
|
}
|
124
124
|
|
125
|
-
// Channel arg vtable for a
|
125
|
+
// Channel arg vtable for a grpc_error_handle.
|
126
126
|
void* ErrorCopy(void* p) {
|
127
|
-
|
127
|
+
grpc_error_handle error = static_cast<grpc_error_handle>(p);
|
128
128
|
return GRPC_ERROR_REF(error);
|
129
129
|
}
|
130
130
|
void ErrorDestroy(void* p) {
|
131
|
-
|
131
|
+
grpc_error_handle error = static_cast<grpc_error_handle>(p);
|
132
132
|
GRPC_ERROR_UNREF(error);
|
133
133
|
}
|
134
134
|
int ErrorCompare(void* p, void* q) { return GPR_ICMP(p, q); }
|
@@ -137,7 +137,7 @@ const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = {
|
|
137
137
|
|
138
138
|
} // namespace
|
139
139
|
|
140
|
-
grpc_arg MakeLameClientErrorArg(
|
140
|
+
grpc_arg MakeLameClientErrorArg(grpc_error_handle error) {
|
141
141
|
return grpc_channel_arg_pointer_create(
|
142
142
|
const_cast<char*>(GRPC_ARG_LAME_FILTER_ERROR), error,
|
143
143
|
&kLameFilterErrorArgVtable);
|
@@ -169,7 +169,7 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
|
|
169
169
|
"grpc_lame_client_channel_create(target=%s, error_code=%d, "
|
170
170
|
"error_message=%s)",
|
171
171
|
3, (target, (int)error_code, error_message));
|
172
|
-
|
172
|
+
grpc_error_handle error = grpc_error_set_str(
|
173
173
|
grpc_error_set_int(
|
174
174
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"),
|
175
175
|
GRPC_ERROR_INT_GRPC_STATUS, error_code),
|
@@ -25,7 +25,7 @@
|
|
25
25
|
|
26
26
|
namespace grpc_core {
|
27
27
|
// Does NOT take ownership of error.
|
28
|
-
grpc_arg MakeLameClientErrorArg(
|
28
|
+
grpc_arg MakeLameClientErrorArg(grpc_error_handle error);
|
29
29
|
} // namespace grpc_core
|
30
30
|
|
31
31
|
extern const grpc_channel_filter grpc_lame_filter;
|
@@ -159,7 +159,7 @@ class Server::RequestMatcherInterface {
|
|
159
159
|
// Mark all application-requested RPCs failed if they have not been matched to
|
160
160
|
// an incoming RPC. The error parameter indicates why the RPCs are being
|
161
161
|
// failed (always server shutdown in all current implementations).
|
162
|
-
virtual void KillRequests(
|
162
|
+
virtual void KillRequests(grpc_error_handle error) = 0;
|
163
163
|
|
164
164
|
// How many request queues are supported by this matcher. This is an abstract
|
165
165
|
// concept that essentially maps to gRPC completion queues.
|
@@ -211,7 +211,7 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
|
|
211
211
|
}
|
212
212
|
}
|
213
213
|
|
214
|
-
void KillRequests(
|
214
|
+
void KillRequests(grpc_error_handle error) override {
|
215
215
|
for (size_t i = 0; i < requests_per_cq_.size(); i++) {
|
216
216
|
RequestedCall* rc;
|
217
217
|
while ((rc = reinterpret_cast<RequestedCall*>(
|
@@ -336,7 +336,9 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
|
|
336
336
|
|
337
337
|
void ZombifyPending() override {}
|
338
338
|
|
339
|
-
void KillRequests(
|
339
|
+
void KillRequests(grpc_error_handle error) override {
|
340
|
+
GRPC_ERROR_UNREF(error);
|
341
|
+
}
|
340
342
|
|
341
343
|
size_t request_queue_count() const override { return 0; }
|
342
344
|
|
@@ -444,7 +446,7 @@ class ChannelBroadcaster {
|
|
444
446
|
}
|
445
447
|
|
446
448
|
// Broadcasts a shutdown on each channel.
|
447
|
-
void BroadcastShutdown(bool send_goaway,
|
449
|
+
void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) {
|
448
450
|
for (grpc_channel* channel : channels_) {
|
449
451
|
SendShutdown(channel, send_goaway, GRPC_ERROR_REF(force_disconnect));
|
450
452
|
GRPC_CHANNEL_INTERNAL_UNREF(channel, "broadcast");
|
@@ -459,14 +461,14 @@ class ChannelBroadcaster {
|
|
459
461
|
grpc_slice slice;
|
460
462
|
};
|
461
463
|
|
462
|
-
static void ShutdownCleanup(void* arg,
|
464
|
+
static void ShutdownCleanup(void* arg, grpc_error_handle /*error*/) {
|
463
465
|
ShutdownCleanupArgs* a = static_cast<ShutdownCleanupArgs*>(arg);
|
464
466
|
grpc_slice_unref_internal(a->slice);
|
465
467
|
delete a;
|
466
468
|
}
|
467
469
|
|
468
470
|
static void SendShutdown(grpc_channel* channel, bool send_goaway,
|
469
|
-
|
471
|
+
grpc_error_handle send_disconnect) {
|
470
472
|
ShutdownCleanupArgs* sc = new ShutdownCleanupArgs;
|
471
473
|
GRPC_CLOSURE_INIT(&sc->closure, ShutdownCleanup, sc,
|
472
474
|
grpc_schedule_on_exec_ctx);
|
@@ -607,13 +609,13 @@ void Server::Start() {
|
|
607
609
|
starting_cv_.Signal();
|
608
610
|
}
|
609
611
|
|
610
|
-
|
612
|
+
grpc_error_handle Server::SetupTransport(
|
611
613
|
grpc_transport* transport, grpc_pollset* accepting_pollset,
|
612
614
|
const grpc_channel_args* args,
|
613
615
|
const RefCountedPtr<grpc_core::channelz::SocketNode>& socket_node,
|
614
616
|
grpc_resource_user* resource_user) {
|
615
617
|
// Create channel.
|
616
|
-
|
618
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
617
619
|
grpc_channel* channel = grpc_channel_create(
|
618
620
|
nullptr, args, GRPC_SERVER_CHANNEL, transport, resource_user, &error);
|
619
621
|
if (channel == nullptr) {
|
@@ -710,7 +712,8 @@ void Server::DoneRequestEvent(void* req, grpc_cq_completion* /*c*/) {
|
|
710
712
|
delete static_cast<RequestedCall*>(req);
|
711
713
|
}
|
712
714
|
|
713
|
-
void Server::FailCall(size_t cq_idx, RequestedCall* rc,
|
715
|
+
void Server::FailCall(size_t cq_idx, RequestedCall* rc,
|
716
|
+
grpc_error_handle error) {
|
714
717
|
*rc->call = nullptr;
|
715
718
|
rc->initial_metadata->count = 0;
|
716
719
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
@@ -750,7 +753,7 @@ void Server::MaybeFinishShutdown() {
|
|
750
753
|
}
|
751
754
|
}
|
752
755
|
|
753
|
-
void Server::KillPendingWorkLocked(
|
756
|
+
void Server::KillPendingWorkLocked(grpc_error_handle error) {
|
754
757
|
if (started_) {
|
755
758
|
unregistered_request_matcher_->KillRequests(GRPC_ERROR_REF(error));
|
756
759
|
unregistered_request_matcher_->ZombifyPending();
|
@@ -772,7 +775,7 @@ std::vector<grpc_channel*> Server::GetChannelsLocked() const {
|
|
772
775
|
return channels;
|
773
776
|
}
|
774
777
|
|
775
|
-
void Server::ListenerDestroyDone(void* arg,
|
778
|
+
void Server::ListenerDestroyDone(void* arg, grpc_error_handle /*error*/) {
|
776
779
|
Server* server = static_cast<Server*>(arg);
|
777
780
|
MutexLock lock(&server->mu_global_);
|
778
781
|
server->listeners_destroyed_++;
|
@@ -1134,7 +1137,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
|
|
1134
1137
|
args.add_initial_metadata_count = 0;
|
1135
1138
|
args.send_deadline = GRPC_MILLIS_INF_FUTURE;
|
1136
1139
|
grpc_call* call;
|
1137
|
-
|
1140
|
+
grpc_error_handle error = grpc_call_create(&args, &call);
|
1138
1141
|
grpc_call_element* elem =
|
1139
1142
|
grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
|
1140
1143
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
@@ -1146,7 +1149,8 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
|
|
1146
1149
|
calld->Start(elem);
|
1147
1150
|
}
|
1148
1151
|
|
1149
|
-
void Server::ChannelData::FinishDestroy(void* arg,
|
1152
|
+
void Server::ChannelData::FinishDestroy(void* arg,
|
1153
|
+
grpc_error_handle /*error*/) {
|
1150
1154
|
auto* chand = static_cast<Server::ChannelData*>(arg);
|
1151
1155
|
Server* server = chand->server_.get();
|
1152
1156
|
GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server");
|
@@ -1173,7 +1177,7 @@ void Server::ChannelData::Destroy() {
|
|
1173
1177
|
op);
|
1174
1178
|
}
|
1175
1179
|
|
1176
|
-
|
1180
|
+
grpc_error_handle Server::ChannelData::InitChannelElement(
|
1177
1181
|
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
1178
1182
|
GPR_ASSERT(args->is_first);
|
1179
1183
|
GPR_ASSERT(!args->is_last);
|
@@ -1284,7 +1288,7 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
|
|
1284
1288
|
rc, &rc->completion, true);
|
1285
1289
|
}
|
1286
1290
|
|
1287
|
-
void Server::CallData::PublishNewRpc(void* arg,
|
1291
|
+
void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
|
1288
1292
|
grpc_call_element* call_elem = static_cast<grpc_call_element*>(arg);
|
1289
1293
|
auto* calld = static_cast<Server::CallData*>(call_elem->call_data);
|
1290
1294
|
auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
|
@@ -1300,7 +1304,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error* error) {
|
|
1300
1304
|
|
1301
1305
|
namespace {
|
1302
1306
|
|
1303
|
-
void KillZombieClosure(void* call,
|
1307
|
+
void KillZombieClosure(void* call, grpc_error_handle /*error*/) {
|
1304
1308
|
grpc_call_unref(static_cast<grpc_call*>(call));
|
1305
1309
|
}
|
1306
1310
|
|
@@ -1352,8 +1356,8 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
|
|
1352
1356
|
}
|
1353
1357
|
}
|
1354
1358
|
|
1355
|
-
void Server::CallData::RecvInitialMetadataBatchComplete(
|
1356
|
-
|
1359
|
+
void Server::CallData::RecvInitialMetadataBatchComplete(
|
1360
|
+
void* arg, grpc_error_handle error) {
|
1357
1361
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1358
1362
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1359
1363
|
if (error != GRPC_ERROR_NONE) {
|
@@ -1385,7 +1389,8 @@ void Server::CallData::StartTransportStreamOpBatchImpl(
|
|
1385
1389
|
grpc_call_next_op(elem, batch);
|
1386
1390
|
}
|
1387
1391
|
|
1388
|
-
void Server::CallData::RecvInitialMetadataReady(void* arg,
|
1392
|
+
void Server::CallData::RecvInitialMetadataReady(void* arg,
|
1393
|
+
grpc_error_handle error) {
|
1389
1394
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1390
1395
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1391
1396
|
grpc_millis op_deadline;
|
@@ -1411,7 +1416,7 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
|
|
1411
1416
|
/* do nothing */
|
1412
1417
|
} else {
|
1413
1418
|
/* Pass the error reference to calld->recv_initial_metadata_error */
|
1414
|
-
|
1419
|
+
grpc_error_handle src_error = error;
|
1415
1420
|
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1416
1421
|
"Missing :authority or :path", &src_error, 1);
|
1417
1422
|
GRPC_ERROR_UNREF(src_error);
|
@@ -1428,7 +1433,8 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
|
|
1428
1433
|
Closure::Run(DEBUG_LOCATION, closure, error);
|
1429
1434
|
}
|
1430
1435
|
|
1431
|
-
void Server::CallData::RecvTrailingMetadataReady(void* arg,
|
1436
|
+
void Server::CallData::RecvTrailingMetadataReady(void* arg,
|
1437
|
+
grpc_error_handle error) {
|
1432
1438
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1433
1439
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1434
1440
|
if (calld->original_recv_initial_metadata_ready_ != nullptr) {
|
@@ -1449,7 +1455,7 @@ void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) {
|
|
1449
1455
|
error);
|
1450
1456
|
}
|
1451
1457
|
|
1452
|
-
|
1458
|
+
grpc_error_handle Server::CallData::InitCallElement(
|
1453
1459
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1454
1460
|
auto* chand = static_cast<ChannelData*>(elem->channel_data);
|
1455
1461
|
new (elem->call_data) Server::CallData(elem, *args, chand->server());
|