From ca945a58e9ccff69df9815bdb657c4b32e2e6b37 Mon Sep 17 00:00:00 2001 From: Esun Kim Date: Thu, 22 Apr 2021 12:00:28 -0700 Subject: [PATCH] Introduced grpc_error_handle (#25902) - Define grpc_error_handle - Replace grpc_error* with grpc_error_handle --- doc/core/grpc-error.md | 16 +- .../filters/client_channel/backup_poller.cc | 6 +- .../client_channel/channel_connectivity.cc | 12 +- .../filters/client_channel/client_channel.cc | 131 +++--- .../filters/client_channel/client_channel.h | 40 +- .../filters/client_channel/config_selector.h | 2 +- .../ext/filters/client_channel/connector.h | 2 +- .../filters/client_channel/dynamic_filters.cc | 14 +- .../filters/client_channel/dynamic_filters.h | 6 +- .../health/health_check_client.cc | 37 +- .../health/health_check_client.h | 24 +- .../client_channel/http_connect_handshaker.cc | 26 +- .../ext/filters/client_channel/lb_policy.cc | 2 +- .../ext/filters/client_channel/lb_policy.h | 8 +- .../grpclb/client_load_reporting_filter.cc | 12 +- .../client_channel/lb_policy/grpclb/grpclb.cc | 63 +-- .../lb_policy/pick_first/pick_first.cc | 8 +- .../lb_policy/priority/priority.cc | 26 +- .../lb_policy/round_robin/round_robin.cc | 6 +- .../weighted_target/weighted_target.cc | 30 +- .../client_channel/lb_policy/xds/cds.cc | 32 +- .../lb_policy/xds/xds_cluster_impl.cc | 24 +- .../lb_policy/xds/xds_cluster_manager.cc | 28 +- .../lb_policy/xds/xds_cluster_resolver.cc | 40 +- .../client_channel/lb_policy_factory.h | 2 +- .../client_channel/lb_policy_registry.cc | 8 +- .../client_channel/lb_policy_registry.h | 2 +- .../ext/filters/client_channel/resolver.h | 4 +- .../resolver/dns/c_ares/dns_resolver_ares.cc | 24 +- .../resolver/dns/c_ares/grpc_ares_ev_driver.h | 2 +- .../dns/c_ares/grpc_ares_ev_driver_libuv.cc | 6 +- .../dns/c_ares/grpc_ares_ev_driver_posix.cc | 2 +- .../dns/c_ares/grpc_ares_ev_driver_windows.cc | 20 +- .../resolver/dns/c_ares/grpc_ares_wrapper.cc | 43 +- .../resolver/dns/c_ares/grpc_ares_wrapper.h | 2 +- .../resolver/dns/native/dns_resolver.cc | 16 +- .../google_c2p/google_c2p_resolver.cc | 20 +- .../resolver/xds/xds_resolver.cc | 50 +- .../client_channel/resolver_result_parsing.cc | 20 +- .../client_channel/resolver_result_parsing.h | 4 +- .../filters/client_channel/retry_filter.cc | 88 ++-- .../client_channel/retry_service_config.cc | 24 +- .../client_channel/retry_service_config.h | 4 +- .../filters/client_channel/service_config.cc | 29 +- .../filters/client_channel/service_config.h | 13 +- .../service_config_channel_arg_filter.cc | 6 +- .../client_channel/service_config_parser.cc | 12 +- .../client_channel/service_config_parser.h | 11 +- .../ext/filters/client_channel/subchannel.cc | 21 +- .../ext/filters/client_channel/subchannel.h | 13 +- .../filters/client_idle/client_idle_filter.cc | 31 +- .../ext/filters/deadline/deadline_filter.cc | 20 +- .../fault_injection/fault_injection_filter.cc | 35 +- .../fault_injection/service_config_parser.cc | 10 +- .../fault_injection/service_config_parser.h | 2 +- .../filters/http/client/http_client_filter.cc | 49 +- .../filters/http/client_authority_filter.cc | 6 +- .../message_compress_filter.cc | 45 +- .../message_decompress_filter.cc | 42 +- .../filters/http/server/http_server_filter.cc | 50 +- .../server_load_reporting_filter.cc | 8 +- .../server_load_reporting_filter.h | 10 +- .../ext/filters/max_age/max_age_filter.cc | 22 +- .../message_size/message_size_filter.cc | 25 +- .../message_size/message_size_filter.h | 2 +- .../workaround_cronet_compression_filter.cc | 7 +- .../chttp2/client/chttp2_connector.cc | 14 +- .../chttp2/client/chttp2_connector.h | 14 +- .../chttp2/client/insecure/channel_create.cc | 4 +- .../client/insecure/channel_create_posix.cc | 2 +- .../client/secure/secure_channel_create.cc | 4 +- .../transport/chttp2/server/chttp2_server.cc | 74 ++- .../transport/chttp2/server/chttp2_server.h | 4 +- .../chttp2/server/insecure/server_chttp2.cc | 4 +- .../server/insecure/server_chttp2_posix.cc | 2 +- .../server/secure/server_secure_chttp2.cc | 4 +- .../chttp2/transport/chttp2_transport.cc | 229 ++++----- .../chttp2/transport/context_list.cc | 9 +- .../transport/chttp2/transport/context_list.h | 8 +- .../chttp2/transport/flow_control.cc | 6 +- .../transport/chttp2/transport/flow_control.h | 16 +- .../transport/chttp2/transport/frame_data.cc | 16 +- .../transport/chttp2/transport/frame_data.h | 20 +- .../chttp2/transport/frame_goaway.cc | 15 +- .../transport/chttp2/transport/frame_goaway.h | 12 +- .../transport/chttp2/transport/frame_ping.cc | 15 +- .../transport/chttp2/transport/frame_ping.h | 13 +- .../chttp2/transport/frame_rst_stream.cc | 14 +- .../chttp2/transport/frame_rst_stream.h | 12 +- .../chttp2/transport/frame_settings.cc | 11 +- .../chttp2/transport/frame_settings.h | 12 +- .../chttp2/transport/frame_window_update.cc | 10 +- .../chttp2/transport/frame_window_update.h | 10 +- .../chttp2/transport/hpack_parser.cc | 443 ++++++++++-------- .../transport/chttp2/transport/hpack_parser.h | 20 +- .../transport/chttp2/transport/hpack_table.cc | 7 +- .../transport/chttp2/transport/hpack_table.h | 8 +- .../chttp2/transport/incoming_metadata.cc | 4 +- .../chttp2/transport/incoming_metadata.h | 4 +- .../ext/transport/chttp2/transport/internal.h | 58 +-- .../ext/transport/chttp2/transport/parsing.cc | 112 +++-- .../ext/transport/chttp2/transport/writing.cc | 6 +- .../cronet/transport/cronet_transport.cc | 12 +- .../ext/transport/inproc/inproc_transport.cc | 52 +- .../ext/xds/certificate_provider_factory.h | 2 +- ...le_watcher_certificate_provider_factory.cc | 6 +- ...ile_watcher_certificate_provider_factory.h | 4 +- ...le_mesh_ca_certificate_provider_factory.cc | 38 +- ...gle_mesh_ca_certificate_provider_factory.h | 15 +- src/core/ext/xds/xds_api.cc | 152 +++--- src/core/ext/xds/xds_api.h | 12 +- src/core/ext/xds/xds_bootstrap.cc | 83 ++-- src/core/ext/xds/xds_bootstrap.h | 25 +- src/core/ext/xds/xds_certificate_provider.cc | 8 +- src/core/ext/xds/xds_client.cc | 80 ++-- src/core/ext/xds/xds_client.h | 12 +- src/core/ext/xds/xds_server_config_fetcher.cc | 12 +- src/core/lib/channel/channel_stack.cc | 19 +- src/core/lib/channel/channel_stack.h | 19 +- src/core/lib/channel/channel_stack_builder.cc | 4 +- src/core/lib/channel/channel_stack_builder.h | 2 +- src/core/lib/channel/channelz.cc | 2 +- src/core/lib/channel/connected_channel.cc | 8 +- src/core/lib/channel/handshaker.cc | 9 +- src/core/lib/channel/handshaker.h | 10 +- src/core/lib/http/httpcli.cc | 20 +- .../lib/http/httpcli_security_connector.cc | 10 +- src/core/lib/http/parser.cc | 32 +- src/core/lib/http/parser.h | 8 +- src/core/lib/iomgr/buffer_list.cc | 16 +- src/core/lib/iomgr/buffer_list.h | 9 +- src/core/lib/iomgr/call_combiner.cc | 21 +- src/core/lib/iomgr/call_combiner.h | 19 +- src/core/lib/iomgr/cfstream_handle.cc | 6 +- src/core/lib/iomgr/cfstream_handle.h | 2 +- src/core/lib/iomgr/closure.h | 13 +- src/core/lib/iomgr/combiner.cc | 26 +- src/core/lib/iomgr/combiner.h | 4 +- src/core/lib/iomgr/endpoint.cc | 2 +- src/core/lib/iomgr/endpoint.h | 4 +- src/core/lib/iomgr/endpoint_cfstream.cc | 16 +- src/core/lib/iomgr/error.cc | 96 ++-- src/core/lib/iomgr/error.h | 83 ++-- src/core/lib/iomgr/error_cfstream.cc | 5 +- src/core/lib/iomgr/error_cfstream.h | 4 +- src/core/lib/iomgr/error_internal.h | 2 +- src/core/lib/iomgr/ev_apple.cc | 10 +- src/core/lib/iomgr/ev_epoll1_linux.cc | 38 +- src/core/lib/iomgr/ev_epollex_linux.cc | 93 ++-- src/core/lib/iomgr/ev_poll_posix.cc | 49 +- src/core/lib/iomgr/ev_posix.cc | 17 +- src/core/lib/iomgr/ev_posix.h | 18 +- src/core/lib/iomgr/exec_ctx.cc | 8 +- src/core/lib/iomgr/exec_ctx.h | 2 +- src/core/lib/iomgr/executor.cc | 16 +- src/core/lib/iomgr/executor.h | 4 +- src/core/lib/iomgr/iomgr.cc | 2 +- src/core/lib/iomgr/iomgr.h | 2 +- src/core/lib/iomgr/iomgr_custom.cc | 2 +- src/core/lib/iomgr/iomgr_internal.cc | 4 +- src/core/lib/iomgr/iomgr_internal.h | 6 +- src/core/lib/iomgr/iomgr_posix.cc | 2 +- src/core/lib/iomgr/iomgr_posix_cfstream.cc | 4 +- src/core/lib/iomgr/iomgr_windows.cc | 2 +- src/core/lib/iomgr/load_file.cc | 8 +- src/core/lib/iomgr/load_file.h | 4 +- src/core/lib/iomgr/lockfree_event.cc | 8 +- src/core/lib/iomgr/lockfree_event.h | 2 +- src/core/lib/iomgr/parse_address.cc | 18 +- src/core/lib/iomgr/parse_address.h | 8 +- src/core/lib/iomgr/pollset.cc | 10 +- src/core/lib/iomgr/pollset.h | 18 +- src/core/lib/iomgr/pollset_custom.cc | 10 +- src/core/lib/iomgr/pollset_windows.cc | 10 +- src/core/lib/iomgr/python_util.h | 2 +- src/core/lib/iomgr/resolve_address.cc | 6 +- src/core/lib/iomgr/resolve_address.h | 12 +- src/core/lib/iomgr/resolve_address_custom.cc | 17 +- src/core/lib/iomgr/resolve_address_custom.h | 6 +- src/core/lib/iomgr/resolve_address_posix.cc | 6 +- src/core/lib/iomgr/resolve_address_windows.cc | 6 +- src/core/lib/iomgr/resource_quota.cc | 21 +- src/core/lib/iomgr/sockaddr_utils.cc | 4 +- src/core/lib/iomgr/sockaddr_utils.h | 4 +- .../lib/iomgr/socket_utils_common_posix.cc | 40 +- src/core/lib/iomgr/socket_utils_posix.h | 40 +- src/core/lib/iomgr/tcp_client_cfstream.cc | 6 +- src/core/lib/iomgr/tcp_client_custom.cc | 6 +- src/core/lib/iomgr/tcp_client_posix.cc | 24 +- src/core/lib/iomgr/tcp_client_posix.h | 7 +- src/core/lib/iomgr/tcp_client_windows.cc | 8 +- src/core/lib/iomgr/tcp_custom.cc | 10 +- src/core/lib/iomgr/tcp_custom.h | 25 +- src/core/lib/iomgr/tcp_posix.cc | 46 +- src/core/lib/iomgr/tcp_server.cc | 12 +- src/core/lib/iomgr/tcp_server.h | 23 +- src/core/lib/iomgr/tcp_server_custom.cc | 37 +- src/core/lib/iomgr/tcp_server_posix.cc | 37 +- src/core/lib/iomgr/tcp_server_utils_posix.h | 25 +- .../iomgr/tcp_server_utils_posix_common.cc | 34 +- .../iomgr/tcp_server_utils_posix_ifaddrs.cc | 16 +- .../iomgr/tcp_server_utils_posix_noifaddrs.cc | 8 +- src/core/lib/iomgr/tcp_server_windows.cc | 45 +- src/core/lib/iomgr/tcp_uv.cc | 48 +- src/core/lib/iomgr/tcp_windows.cc | 24 +- src/core/lib/iomgr/tcp_windows.h | 4 +- src/core/lib/iomgr/timer_custom.cc | 3 +- src/core/lib/iomgr/timer_custom.h | 2 +- src/core/lib/iomgr/timer_generic.cc | 12 +- src/core/lib/iomgr/udp_server.cc | 38 +- src/core/lib/iomgr/unix_sockets_posix.cc | 4 +- src/core/lib/iomgr/unix_sockets_posix.h | 4 +- src/core/lib/iomgr/unix_sockets_posix_noop.cc | 4 +- src/core/lib/iomgr/wakeup_fd_eventfd.cc | 6 +- src/core/lib/iomgr/wakeup_fd_pipe.cc | 8 +- src/core/lib/iomgr/wakeup_fd_posix.cc | 6 +- src/core/lib/iomgr/wakeup_fd_posix.h | 14 +- src/core/lib/json/json.h | 2 +- src/core/lib/json/json_reader.cc | 8 +- .../security/authorization/rbac_translator.cc | 2 +- .../composite/composite_credentials.cc | 8 +- .../composite/composite_credentials.h | 4 +- .../lib/security/credentials/credentials.h | 4 +- .../aws_external_account_credentials.cc | 26 +- .../aws_external_account_credentials.h | 24 +- .../external/aws_request_signer.cc | 3 +- .../credentials/external/aws_request_signer.h | 2 +- .../external/external_account_credentials.cc | 23 +- .../external/external_account_credentials.h | 17 +- .../file_external_account_credentials.cc | 9 +- .../file_external_account_credentials.h | 7 +- .../url_external_account_credentials.cc | 16 +- .../url_external_account_credentials.h | 16 +- .../credentials/fake/fake_credentials.cc | 4 +- .../credentials/fake/fake_credentials.h | 4 +- .../google_default_credentials.cc | 16 +- .../credentials/iam/iam_credentials.cc | 4 +- .../credentials/iam/iam_credentials.h | 4 +- .../security/credentials/jwt/json_token.cc | 4 +- .../credentials/jwt/jwt_credentials.cc | 6 +- .../credentials/jwt/jwt_credentials.h | 4 +- .../security/credentials/jwt/jwt_verifier.cc | 9 +- .../credentials/oauth2/oauth2_credentials.cc | 32 +- .../credentials/oauth2/oauth2_credentials.h | 10 +- .../credentials/plugin/plugin_credentials.cc | 10 +- .../credentials/plugin/plugin_credentials.h | 4 +- .../tls/grpc_tls_certificate_distributor.cc | 15 +- .../tls/grpc_tls_certificate_distributor.h | 18 +- .../tls/grpc_tls_certificate_provider.cc | 21 +- .../alts/alts_security_connector.cc | 10 +- .../fake/fake_security_connector.cc | 10 +- .../insecure/insecure_security_connector.cc | 4 +- .../insecure/insecure_security_connector.h | 8 +- .../load_system_roots_linux.cc | 2 +- .../local/local_security_connector.cc | 10 +- .../security_connector/security_connector.h | 6 +- .../ssl/ssl_security_connector.cc | 16 +- .../security/security_connector/ssl_utils.cc | 8 +- .../security/security_connector/ssl_utils.h | 8 +- .../tls/tls_security_connector.cc | 22 +- .../tls/tls_security_connector.h | 20 +- .../security/transport/client_auth_filter.cc | 20 +- .../lib/security/transport/secure_endpoint.cc | 8 +- .../security/transport/security_handshaker.cc | 59 +-- .../security/transport/server_auth_filter.cc | 26 +- src/core/lib/security/transport/tsi_error.cc | 3 +- src/core/lib/security/transport/tsi_error.h | 3 +- src/core/lib/security/util/json_util.cc | 4 +- src/core/lib/security/util/json_util.h | 2 +- src/core/lib/surface/call.cc | 84 ++-- src/core/lib/surface/call.h | 4 +- src/core/lib/surface/channel.cc | 10 +- src/core/lib/surface/channel.h | 5 +- src/core/lib/surface/channel_ping.cc | 2 +- src/core/lib/surface/completion_queue.cc | 51 +- src/core/lib/surface/completion_queue.h | 3 +- src/core/lib/surface/lame_client.cc | 22 +- src/core/lib/surface/lame_client.h | 2 +- src/core/lib/surface/server.cc | 50 +- src/core/lib/surface/server.h | 31 +- src/core/lib/surface/validate_metadata.cc | 14 +- src/core/lib/surface/validate_metadata.h | 5 +- src/core/lib/transport/byte_stream.cc | 10 +- src/core/lib/transport/byte_stream.h | 16 +- src/core/lib/transport/connectivity_state.cc | 2 +- src/core/lib/transport/error_utils.cc | 17 +- src/core/lib/transport/error_utils.h | 12 +- src/core/lib/transport/metadata_batch.cc | 74 +-- src/core/lib/transport/metadata_batch.h | 37 +- src/core/lib/transport/transport.cc | 7 +- src/core/lib/transport/transport.h | 8 +- .../alts/handshaker/alts_handshaker_client.cc | 7 +- .../alts/handshaker/alts_tsi_handshaker.cc | 11 +- .../handshaker/alts_tsi_handshaker_private.h | 3 +- src/cpp/client/client_callback.cc | 2 +- src/cpp/client/secure_credentials.cc | 6 +- src/cpp/common/alarm.cc | 6 +- src/cpp/common/channel_filter.h | 18 +- src/cpp/common/validate_service_config.cc | 2 +- src/cpp/ext/filters/census/channel_filter.cc | 4 +- src/cpp/ext/filters/census/channel_filter.h | 4 +- src/cpp/ext/filters/census/client_filter.cc | 10 +- src/cpp/ext/filters/census/client_filter.h | 12 +- src/cpp/ext/filters/census/server_filter.cc | 10 +- src/cpp/ext/filters/census/server_filter.h | 9 +- src/cpp/server/server_callback.cc | 4 +- .../_cython/_cygrpc/aio/iomgr/iomgr.pyx.pxi | 14 +- .../_cygrpc/aio/iomgr/resolver.pyx.pxi | 2 +- .../_cython/_cygrpc/aio/iomgr/socket.pyx.pxi | 6 +- .../_cython/_cygrpc/aio/iomgr/timer.pyx.pxi | 2 +- .../grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi | 12 +- .../grpcio/grpc/_cython/_cygrpc/iomgr.pxd.pxi | 29 +- .../grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi | 6 +- test/core/bad_client/bad_client.cc | 4 +- .../channel/channel_stack_builder_test.cc | 8 +- test/core/channel/channel_stack_test.cc | 14 +- test/core/channel/channelz_test.cc | 18 +- .../certificate_provider_registry_test.cc | 4 +- .../dns_resolver_connectivity_test.cc | 8 +- .../resolvers/dns_resolver_cooldown_test.cc | 6 +- .../resolvers/dns_resolver_test.cc | 2 +- .../resolvers/fake_resolver_test.cc | 2 +- .../resolvers/sockaddr_resolver_test.cc | 4 +- .../client_channel/service_config_test.cc | 108 ++--- test/core/end2end/bad_server_response_test.cc | 7 +- test/core/end2end/dualstack_socket_test.cc | 4 +- .../end2end/fixtures/h2_sockpair+trace.cc | 4 +- test/core/end2end/fixtures/h2_sockpair.cc | 4 +- .../end2end/fixtures/h2_sockpair_1byte.cc | 4 +- .../end2end/fixtures/http_proxy_fixture.cc | 58 +-- test/core/end2end/goaway_server_test.cc | 6 +- .../core/end2end/tests/filter_causes_close.cc | 10 +- test/core/end2end/tests/filter_context.cc | 8 +- test/core/end2end/tests/filter_init_fails.cc | 8 +- test/core/end2end/tests/filter_latency.cc | 8 +- test/core/end2end/tests/filter_status_code.cc | 8 +- test/core/end2end/tests/retry_lb_drop.cc | 2 +- .../readahead_handshaker_server_ssl.cc | 2 +- test/core/http/httpcli_test.cc | 4 +- test/core/http/httpscli_test.cc | 4 +- test/core/http/parser_test.cc | 4 +- test/core/iomgr/buffer_list_test.cc | 4 +- test/core/iomgr/combiner_test.cc | 8 +- test/core/iomgr/endpoint_pair_test.cc | 2 +- test/core/iomgr/endpoint_tests.cc | 12 +- test/core/iomgr/error_test.cc | 26 +- test/core/iomgr/ev_epollex_linux_test.cc | 2 +- test/core/iomgr/fd_posix_test.cc | 12 +- .../ios/CFStreamTests/CFStreamClientTests.mm | 4 +- .../CFStreamTests/CFStreamEndpointTests.mm | 18 +- test/core/iomgr/load_file_test.cc | 8 +- .../iomgr/pollset_windows_starvation_test.cc | 2 +- test/core/iomgr/resolve_address_posix_test.cc | 6 +- test/core/iomgr/resolve_address_test.cc | 10 +- test/core/iomgr/resource_quota_test.cc | 8 +- test/core/iomgr/socket_utils_test.cc | 2 +- test/core/iomgr/tcp_client_posix_test.cc | 6 +- test/core/iomgr/tcp_client_uv_test.cc | 6 +- test/core/iomgr/tcp_posix_test.cc | 10 +- test/core/iomgr/tcp_server_posix_test.cc | 12 +- test/core/iomgr/tcp_server_uv_test.cc | 4 +- test/core/iomgr/timer_list_test.cc | 2 +- test/core/iomgr/udp_server_test.cc | 2 +- test/core/json/fuzzer.cc | 2 +- test/core/json/json_test.cc | 4 +- test/core/security/aws_request_signer_test.cc | 26 +- test/core/security/credentials_test.cc | 107 +++-- .../grpc_tls_certificate_distributor_test.cc | 4 +- .../grpc_tls_certificate_provider_test.cc | 4 +- test/core/security/json_token_test.cc | 2 +- test/core/security/jwt_verifier_test.cc | 10 +- test/core/security/oauth2_utils.cc | 6 +- .../print_google_default_creds_token.cc | 4 +- test/core/security/secure_endpoint_test.cc | 4 +- test/core/security/security_connector_test.cc | 2 +- test/core/security/ssl_server_fuzzer.cc | 2 +- .../security/tls_security_connector_test.cc | 6 +- .../surface/concurrent_connectivity_test.cc | 4 +- test/core/surface/lame_client_test.cc | 2 +- test/core/surface/server_test.cc | 2 +- test/core/transport/byte_stream_test.cc | 14 +- .../transport/chttp2/context_list_test.cc | 2 +- .../chttp2/hpack_parser_fuzzer_test.cc | 2 +- .../transport/chttp2/hpack_parser_test.cc | 2 +- .../transport/chttp2/settings_timeout_test.cc | 10 +- test/core/transport/error_utils_test.cc | 8 +- .../core/transport/stream_owned_slice_test.cc | 2 +- test/core/tsi/transport_security_test_lib.cc | 11 +- test/core/util/mock_endpoint.cc | 2 +- test/core/util/passthru_endpoint.cc | 4 +- test/core/util/port_server_client.cc | 6 +- test/core/util/resolve_localhost_ip46.cc | 2 +- test/core/util/test_lb_policies.cc | 10 +- test/core/util/test_tcp_server.cc | 10 +- test/core/util/trickle_endpoint.cc | 6 +- .../xds/certificate_provider_store_test.cc | 4 +- ...tcher_certificate_provider_factory_test.cc | 16 +- ...sh_ca_certificate_provider_factory_test.cc | 16 +- test/core/xds/xds_bootstrap_test.cc | 40 +- .../core/xds/xds_certificate_provider_test.cc | 12 +- test/cpp/client/client_channel_stress_test.cc | 2 +- ...channel_with_active_connect_stress_test.cc | 2 +- test/cpp/common/channel_filter_test.cc | 8 +- test/cpp/common/time_jump_test.cc | 2 +- test/cpp/common/timer_test.cc | 12 +- test/cpp/end2end/filter_end2end_test.cc | 4 +- test/cpp/end2end/grpclb_end2end_test.cc | 2 +- test/cpp/end2end/port_sharing_end2end_test.cc | 4 +- test/cpp/end2end/xds_end2end_test.cc | 8 +- test/cpp/microbenchmarks/bm_call_create.cc | 22 +- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 11 +- .../microbenchmarks/bm_chttp2_transport.cc | 118 ++--- test/cpp/microbenchmarks/bm_closure.cc | 4 +- .../microbenchmarks/bm_cq_multiple_threads.cc | 16 +- test/cpp/microbenchmarks/bm_error.cc | 22 +- test/cpp/microbenchmarks/bm_pollset.cc | 4 +- test/cpp/microbenchmarks/bm_timer.cc | 10 +- test/cpp/naming/cancel_ares_query_test.cc | 4 +- test/cpp/naming/resolver_component_test.cc | 6 +- test/cpp/util/channel_trace_proto_helper.cc | 2 +- 420 files changed, 3643 insertions(+), 3399 deletions(-) diff --git a/doc/core/grpc-error.md b/doc/core/grpc-error.md index 41f4dd1dda7..dc0e0ea92bc 100644 --- a/doc/core/grpc-error.md +++ b/doc/core/grpc-error.md @@ -56,8 +56,8 @@ For example, in the following code block, error1 and error2 are owned by the current function. ```C -grpc_error* error1 = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); -grpc_error* error2 = some_operation_that_might_fail(...); +grpc_error_handle error1 = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); +grpc_error_handle error2 = some_operation_that_might_fail(...); ``` The current function would have to explicitly call GRPC_ERROR_UNREF on the @@ -71,7 +71,7 @@ errors, or pass them along to a function that would take over the ownership. A `grpc_closure` callback function is any function that has the signature: ```C -void (*cb)(void *arg, grpc_error *error); +void (*cb)(void *arg, grpc_error_handle error); ``` This means that the error ownership is NOT transferred when a functions calls: @@ -87,7 +87,7 @@ way to execute callbacks is via the `Closure::Run` method, which takes ownership of the error variable. ```C -grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); +grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); grpc_core::Closure::Run(DEBUG_LOCATION, c->cb, error); // current function no longer has ownership of the error ``` @@ -96,7 +96,7 @@ If you schedule or run a closure, but still need ownership of the error, then you must explicitly take a reference. ```C -grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); +grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); grpc_core::Closure::Run(DEBUG_LOCATION, c->cb, GRPC_ERROR_REF(error)); // do some other things with the error GRPC_ERROR_UNREF(error); @@ -109,7 +109,7 @@ would take ownership of the error, without explicitly taking ownership yourself. For example: ```C -void on_some_action(void *arg, grpc_error *error) { +void on_some_action(void *arg, grpc_error_handle error) { // this would cause a crash, because some_function will unref the error, // and the caller of this callback will also unref it. some_function(error); @@ -128,7 +128,7 @@ void on_some_action(void *arg, grpc_error *error) { Take the following example: ```C -grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); +grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occurred"); // do some things some_function(error); // can't use error anymore! might be gone. @@ -142,7 +142,7 @@ if would have to take on a reference to it. This is a common pattern seen. ```C void func() { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error"); some_function(GRPC_ERROR_REF(error)); // do things some_other_function(GRPC_ERROR_REF(error)); diff --git a/src/core/ext/filters/client_channel/backup_poller.cc b/src/core/ext/filters/client_channel/backup_poller.cc index 1b7708953ab..ad7f89210d8 100644 --- a/src/core/ext/filters/client_channel/backup_poller.cc +++ b/src/core/ext/filters/client_channel/backup_poller.cc @@ -89,7 +89,7 @@ static void backup_poller_shutdown_unref(backup_poller* p) { } } -static void done_poller(void* arg, grpc_error* /*error*/) { +static void done_poller(void* arg, grpc_error_handle /*error*/) { backup_poller_shutdown_unref(static_cast(arg)); } @@ -112,7 +112,7 @@ static void g_poller_unref() { } } -static void run_poller(void* arg, grpc_error* error) { +static void run_poller(void* arg, grpc_error_handle error) { backup_poller* p = static_cast(arg); if (error != GRPC_ERROR_NONE) { if (error != GRPC_ERROR_CANCELLED) { @@ -127,7 +127,7 @@ static void run_poller(void* arg, grpc_error* error) { backup_poller_shutdown_unref(p); return; } - grpc_error* err = + grpc_error_handle err = grpc_pollset_work(p->pollset, nullptr, grpc_core::ExecCtx::Get()->Now()); gpr_mu_unlock(p->pollset_mu); GRPC_LOG_IF_ERROR("Run client channel backup poller", err); diff --git a/src/core/ext/filters/client_channel/channel_connectivity.cc b/src/core/ext/filters/client_channel/channel_connectivity.cc index 729d4c28a75..e5ec5c5fe09 100644 --- a/src/core/ext/filters/client_channel/channel_connectivity.cc +++ b/src/core/ext/filters/client_channel/channel_connectivity.cc @@ -99,7 +99,7 @@ class StateWatcher { grpc_closure* closure() { return &closure_; } private: - static void WatcherTimerInit(void* arg, grpc_error* /*error*/) { + static void WatcherTimerInit(void* arg, grpc_error_handle /*error*/) { auto* self = static_cast(arg); grpc_timer_init(&self->state_watcher_->timer_, self->deadline_, &self->state_watcher_->on_timeout_); @@ -130,10 +130,10 @@ class StateWatcher { if (should_delete) delete self; } - void PartlyDone(bool due_to_completion, grpc_error* error) { + void PartlyDone(bool due_to_completion, grpc_error_handle error) { bool end_op = false; void* end_op_tag = nullptr; - grpc_error* end_op_error = nullptr; + grpc_error_handle end_op_error = GRPC_ERROR_NONE; grpc_completion_queue* end_op_cq = nullptr; grpc_cq_completion* end_op_completion_storage = nullptr; if (due_to_completion) { @@ -191,12 +191,12 @@ class StateWatcher { GRPC_ERROR_UNREF(error); } - static void WatchComplete(void* arg, grpc_error* error) { + static void WatchComplete(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); self->PartlyDone(/*due_to_completion=*/true, GRPC_ERROR_REF(error)); } - static void TimeoutComplete(void* arg, grpc_error* error) { + static void TimeoutComplete(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); self->PartlyDone(/*due_to_completion=*/false, GRPC_ERROR_REF(error)); } @@ -215,7 +215,7 @@ class StateWatcher { Mutex mu_; CallbackPhase phase_ ABSL_GUARDED_BY(mu_) = kWaiting; - grpc_error* error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE; + grpc_error_handle error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE; }; } // namespace diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc index 4a6bef7e9bf..7520fd777c8 100644 --- a/src/core/ext/filters/client_channel/client_channel.cc +++ b/src/core/ext/filters/client_channel/client_channel.cc @@ -95,8 +95,8 @@ TraceFlag grpc_client_channel_routing_trace(false, "client_channel_routing"); class ClientChannel::CallData { public: - static grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args); + static grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args); static void Destroy(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_schedule_closure); @@ -105,18 +105,18 @@ class ClientChannel::CallData { static void SetPollent(grpc_call_element* elem, grpc_polling_entity* pollent); // Invoked by channel for queued calls when name resolution is completed. - static void CheckResolution(void* arg, grpc_error* error); + static void CheckResolution(void* arg, grpc_error_handle error); // Helper function for applying the service config to a call while // holding ClientChannel::resolution_mu_. // Returns true if the service config has been applied to the call, in which // case the caller must invoke ResolutionDone() or AsyncResolutionDone() // with the returned error. - bool CheckResolutionLocked(grpc_call_element* elem, grpc_error** error) + bool CheckResolutionLocked(grpc_call_element* elem, grpc_error_handle* error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_); // Schedules a callback to continue processing the call once // resolution is complete. The callback will not run until after this // method returns. - void AsyncResolutionDone(grpc_call_element* elem, grpc_error* error); + void AsyncResolutionDone(grpc_call_element* elem, grpc_error_handle error); private: class ResolverQueuedCallCanceller; @@ -129,7 +129,8 @@ class ClientChannel::CallData { static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch); void PendingBatchesAdd(grpc_call_element* elem, grpc_transport_stream_op_batch* batch); - static void FailPendingBatchInCallCombiner(void* arg, grpc_error* error); + static void FailPendingBatchInCallCombiner(void* arg, + grpc_error_handle error); // A predicate type and some useful implementations for PendingBatchesFail(). typedef bool (*YieldCallCombinerPredicate)( const CallCombinerClosureList& closures); @@ -147,9 +148,10 @@ class ClientChannel::CallData { // If yield_call_combiner_predicate returns true, assumes responsibility for // yielding the call combiner. void PendingBatchesFail( - grpc_call_element* elem, grpc_error* error, + grpc_call_element* elem, grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate); - static void ResumePendingBatchInCallCombiner(void* arg, grpc_error* ignored); + static void ResumePendingBatchInCallCombiner(void* arg, + grpc_error_handle ignored); // Resumes all pending batches on lb_call_. void PendingBatchesResume(grpc_call_element* elem); @@ -157,12 +159,12 @@ class ClientChannel::CallData { // that the resolver has returned results to the channel. // If an error is returned, the error indicates the status with which // the call should be failed. - grpc_error* ApplyServiceConfigToCallLocked( + grpc_error_handle ApplyServiceConfigToCallLocked( grpc_call_element* elem, grpc_metadata_batch* initial_metadata) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_); // Invoked when the resolver result is applied to the caller, on both // success or failure. - static void ResolutionDone(void* arg, grpc_error* error); + static void ResolutionDone(void* arg, grpc_error_handle error); // Removes the call (if present) from the channel's list of calls queued // for name resolution. void MaybeRemoveCallFromResolverQueuedCallsLocked(grpc_call_element* elem) @@ -173,7 +175,7 @@ class ClientChannel::CallData { ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_); static void RecvInitialMetadataReadyForConfigSelectorCommitCallback( - void* arg, grpc_error* error); + void* arg, grpc_error_handle error); void InjectRecvInitialMetadataReadyForConfigSelectorCommitCallback( grpc_transport_stream_op_batch* batch); @@ -225,7 +227,7 @@ class ClientChannel::CallData { grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {}; // Set when we get a cancel_stream op. - grpc_error* cancel_error_ = GRPC_ERROR_NONE; + grpc_error_handle cancel_error_ = GRPC_ERROR_NONE; }; // @@ -280,8 +282,8 @@ class DynamicTerminationFilter { static const grpc_channel_filter kFilterVtable; - static grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args) { + static grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args) { GPR_ASSERT(args->is_last); GPR_ASSERT(elem->filter == &kFilterVtable); new (elem->channel_data) DynamicTerminationFilter(args->channel_args); @@ -309,8 +311,8 @@ class DynamicTerminationFilter { class DynamicTerminationFilter::CallData { public: - static grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args) { + static grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args) { new (elem->call_data) CallData(*args); return GRPC_ERROR_NONE; } @@ -418,7 +420,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler { chand_->OnResolverResultChangedLocked(std::move(result)); } - void ReturnError(grpc_error* error) override + void ReturnError(grpc_error_handle error) override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) { chand_->OnResolverErrorLocked(error); } @@ -719,7 +721,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface { // in chand_->pending_subchannel_updates_. So we don't want to add // entries there that will never be processed, since that would // leave dangling refs to the channel and prevent its destruction. - grpc_error* disconnect_error = chand_->disconnect_error(); + grpc_error_handle disconnect_error = chand_->disconnect_error(); if (disconnect_error != GRPC_ERROR_NONE) return; // Not shutting down, so do the update. if (connected_subchannel_ != connected_subchannel) { @@ -985,7 +987,7 @@ class ClientChannel::ClientChannelControlHelper std::unique_ptr picker) override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) { if (chand_->resolver_ == nullptr) return; // Shutting down. - grpc_error* disconnect_error = chand_->disconnect_error(); + grpc_error_handle disconnect_error = chand_->disconnect_error(); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) { const char* extra = disconnect_error == GRPC_ERROR_NONE ? "" @@ -1042,11 +1044,11 @@ ClientChannel* ClientChannel::GetFromChannel(grpc_channel* channel) { return static_cast(elem->channel_data); } -grpc_error* ClientChannel::Init(grpc_channel_element* elem, - grpc_channel_element_args* args) { +grpc_error_handle ClientChannel::Init(grpc_channel_element* elem, + grpc_channel_element_args* args) { GPR_ASSERT(args->is_last); GPR_ASSERT(elem->filter == &kFilterVtable); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; new (elem->channel_data) ClientChannel(args, &error); return error; } @@ -1080,7 +1082,7 @@ channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) { } // namespace ClientChannel::ClientChannel(grpc_channel_element_args* args, - grpc_error** error) + grpc_error_handle* error) : deadline_checking_enabled_( grpc_deadline_checking_enabled(args->channel_args)), enable_retries_(GetEnableRetries(args->channel_args)), @@ -1200,7 +1202,7 @@ RefCountedPtr ChooseLbPolicy( Json config_json = Json::Array{Json::Object{ {policy_name, Json::Object{}}, }}; - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; auto lb_policy_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( config_json, &parse_error); // The policy name came from one of three places: @@ -1248,7 +1250,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) { // The result of grpc_error_string() is owned by the error itself. // We're storing that string in trace_strings, so we need to make sure // that the error lives until we're done with the string. - grpc_error* service_config_error = + grpc_error_handle service_config_error = GRPC_ERROR_REF(result.service_config_error); if (service_config_error != GRPC_ERROR_NONE) { trace_strings.push_back(grpc_error_string(service_config_error)); @@ -1344,7 +1346,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) { GRPC_ERROR_UNREF(service_config_error); } -void ClientChannel::OnResolverErrorLocked(grpc_error* error) { +void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) { if (resolver_ == nullptr) { GRPC_ERROR_UNREF(error); return; @@ -1357,8 +1359,9 @@ void ClientChannel::OnResolverErrorLocked(grpc_error* error) { // result, then we continue to let it set the connectivity state. // Otherwise, we go into TRANSIENT_FAILURE. if (lb_policy_ == nullptr) { - grpc_error* state_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Resolver transient failure", &error, 1); + grpc_error_handle state_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Resolver transient failure", &error, 1); { MutexLock lock(&resolution_mu_); // Update resolver transient failure. @@ -1369,7 +1372,7 @@ void ClientChannel::OnResolverErrorLocked(grpc_error* error) { call = call->next) { grpc_call_element* elem = call->elem; CallData* calld = static_cast(elem->call_data); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (calld->CheckResolutionLocked(elem, &error)) { calld->AsyncResolutionDone(elem, error); } @@ -1550,7 +1553,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() { call = call->next) { grpc_call_element* elem = call->elem; CallData* calld = static_cast(elem->call_data); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (calld->CheckResolutionLocked(elem, &error)) { calld->AsyncResolutionDone(elem, error); } @@ -1660,7 +1663,7 @@ void ClientChannel::UpdateStateAndPickerLocked( // Re-process queued picks. for (LbQueuedCall* call = lb_queued_calls_; call != nullptr; call = call->next) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (call->lb_call->PickSubchannelLocked(&error)) { call->lb_call->AsyncPickDone(error); } @@ -1671,7 +1674,7 @@ void ClientChannel::UpdateStateAndPickerLocked( pending_subchannel_updates_.clear(); } -grpc_error* ClientChannel::DoPingLocked(grpc_transport_op* op) { +grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) { if (state_tracker_.state() != GRPC_CHANNEL_READY) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("channel not connected"); } @@ -1708,7 +1711,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) { } // Ping. if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) { - grpc_error* error = DoPingLocked(op); + grpc_error_handle error = DoPingLocked(op); if (error != GRPC_ERROR_NONE) { ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, GRPC_ERROR_REF(error)); @@ -1889,8 +1892,8 @@ ClientChannel::CallData::~CallData() { } } -grpc_error* ClientChannel::CallData::Init(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle ClientChannel::CallData::Init( + grpc_call_element* elem, const grpc_call_element_args* args) { ClientChannel* chand = static_cast(elem->channel_data); new (elem->call_data) CallData(elem, *chand, *args); return GRPC_ERROR_NONE; @@ -2041,7 +2044,7 @@ void ClientChannel::CallData::PendingBatchesAdd( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::CallData::FailPendingBatchInCallCombiner( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { grpc_transport_stream_op_batch* batch = static_cast(arg); CallData* calld = static_cast(batch->handler_private.extra_arg); @@ -2052,7 +2055,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::CallData::PendingBatchesFail( - grpc_call_element* elem, grpc_error* error, + grpc_call_element* elem, grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate) { GPR_ASSERT(error != GRPC_ERROR_NONE); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) { @@ -2087,7 +2090,7 @@ void ClientChannel::CallData::PendingBatchesFail( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::CallData::ResumePendingBatchInCallCombiner( - void* arg, grpc_error* /*ignored*/) { + void* arg, grpc_error_handle /*ignored*/) { grpc_transport_stream_op_batch* batch = static_cast(arg); auto* elem = @@ -2144,7 +2147,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller { } private: - static void CancelLocked(void* arg, grpc_error* error) { + static void CancelLocked(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); auto* chand = static_cast(self->elem_->channel_data); auto* calld = static_cast(self->elem_->call_data); @@ -2203,7 +2206,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked( resolver_call_canceller_ = new ResolverQueuedCallCanceller(elem); } -grpc_error* ClientChannel::CallData::ApplyServiceConfigToCallLocked( +grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked( grpc_call_element* elem, grpc_metadata_batch* initial_metadata) { ClientChannel* chand = static_cast(elem->channel_data); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) { @@ -2263,8 +2266,8 @@ grpc_error* ClientChannel::CallData::ApplyServiceConfigToCallLocked( } void ClientChannel::CallData:: - RecvInitialMetadataReadyForConfigSelectorCommitCallback(void* arg, - grpc_error* error) { + RecvInitialMetadataReadyForConfigSelectorCommitCallback( + void* arg, grpc_error_handle error) { auto* self = static_cast(arg); if (self->on_call_committed_ != nullptr) { self->on_call_committed_(); @@ -2290,12 +2293,13 @@ void ClientChannel::CallData:: } void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem, - grpc_error* error) { + grpc_error_handle error) { GRPC_CLOSURE_INIT(&pick_closure_, ResolutionDone, elem, nullptr); ExecCtx::Run(DEBUG_LOCATION, &pick_closure_, error); } -void ClientChannel::CallData::ResolutionDone(void* arg, grpc_error* error) { +void ClientChannel::CallData::ResolutionDone(void* arg, + grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); ClientChannel* chand = static_cast(elem->channel_data); CallData* calld = static_cast(elem->call_data); @@ -2311,7 +2315,8 @@ void ClientChannel::CallData::ResolutionDone(void* arg, grpc_error* error) { calld->CreateDynamicCall(elem); } -void ClientChannel::CallData::CheckResolution(void* arg, grpc_error* error) { +void ClientChannel::CallData::CheckResolution(void* arg, + grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); CallData* calld = static_cast(elem->call_data); ClientChannel* chand = static_cast(elem->channel_data); @@ -2327,7 +2332,7 @@ void ClientChannel::CallData::CheckResolution(void* arg, grpc_error* error) { } bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem, - grpc_error** error) { + grpc_error_handle* error) { ClientChannel* chand = static_cast(elem->channel_data); // If we're still in IDLE, we need to start resolving. if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) { @@ -2339,7 +2344,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem, ExecCtx::Run( DEBUG_LOCATION, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { auto* chand = static_cast(arg); chand->work_serializer_->Run( [chand]() @@ -2365,7 +2370,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem, if (GPR_UNLIKELY(!chand->received_service_config_data_)) { // If the resolver returned transient failure before returning the // first service config, fail any non-wait_for_ready calls. - grpc_error* resolver_error = chand->resolver_transient_failure_error_; + grpc_error_handle resolver_error = chand->resolver_transient_failure_error_; if (resolver_error != GRPC_ERROR_NONE && (send_initial_metadata_flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) { @@ -2398,7 +2403,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) { arena_, call_context_, call_combiner_}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; DynamicFilters* channel_stack = args.channel_stack.get(); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) { gpr_log( @@ -2589,7 +2594,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesAdd( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { grpc_transport_stream_op_batch* batch = static_cast(arg); auto* self = static_cast(batch->handler_private.extra_arg); @@ -2600,7 +2605,7 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::LoadBalancedCall::PendingBatchesFail( - grpc_error* error, + grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate) { GPR_ASSERT(error != GRPC_ERROR_NONE); GRPC_ERROR_UNREF(failure_error_); @@ -2636,7 +2641,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail( // This is called via the call combiner, so access to calld is synchronized. void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner( - void* arg, grpc_error* /*ignored*/) { + void* arg, grpc_error_handle /*ignored*/) { grpc_transport_stream_op_batch* batch = static_cast(arg); SubchannelCall* subchannel_call = @@ -2757,11 +2762,11 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch( void ClientChannel::LoadBalancedCall:: RecvTrailingMetadataReadyForLoadBalancingPolicy(void* arg, - grpc_error* error) { + grpc_error_handle error) { auto* self = static_cast(arg); if (self->lb_recv_trailing_metadata_ready_ != nullptr) { // Set error if call did not succeed. - grpc_error* error_for_lb = GRPC_ERROR_NONE; + grpc_error_handle error_for_lb = GRPC_ERROR_NONE; if (error != GRPC_ERROR_NONE) { error_for_lb = error; } else { @@ -2820,7 +2825,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() { // TODO(roth): When we implement hedging support, we will probably // need to use a separate call context for each subchannel call. call_context_, call_combiner_}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) { gpr_log(GPR_INFO, @@ -2855,7 +2860,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller { } private: - static void CancelLocked(void* arg, grpc_error* error) { + static void CancelLocked(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); auto* lb_call = self->lb_call_.get(); auto* chand = lb_call->chand_; @@ -2909,12 +2914,13 @@ void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() { lb_call_canceller_ = new LbQueuedCallCanceller(Ref()); } -void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error* error) { +void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) { GRPC_CLOSURE_INIT(&pick_closure_, PickDone, this, grpc_schedule_on_exec_ctx); ExecCtx::Run(DEBUG_LOCATION, &pick_closure_, error); } -void ClientChannel::LoadBalancedCall::PickDone(void* arg, grpc_error* error) { +void ClientChannel::LoadBalancedCall::PickDone(void* arg, + grpc_error_handle error) { auto* self = static_cast(arg); if (error != GRPC_ERROR_NONE) { if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) { @@ -2946,7 +2952,7 @@ const char* PickResultTypeName( } // namespace void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg, - grpc_error* error) { + grpc_error_handle error) { auto* self = static_cast(arg); bool pick_complete; { @@ -2959,7 +2965,8 @@ void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg, } } -bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(grpc_error** error) { +bool ClientChannel::LoadBalancedCall::PickSubchannelLocked( + grpc_error_handle* error) { GPR_ASSERT(connected_subchannel_ == nullptr); GPR_ASSERT(subchannel_call_ == nullptr); // Grab initial metadata. @@ -2987,7 +2994,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(grpc_error** error) { switch (result.type) { case LoadBalancingPolicy::PickResult::PICK_FAILED: { // If we're shutting down, fail all RPCs. - grpc_error* disconnect_error = chand_->disconnect_error(); + grpc_error_handle disconnect_error = chand_->disconnect_error(); if (disconnect_error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(result.error); MaybeRemoveCallFromLbQueuedCallsLocked(); @@ -2998,7 +3005,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(grpc_error** error) { // attempt's final status. if ((send_initial_metadata_flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) { - grpc_error* new_error = + grpc_error_handle new_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failed to pick subchannel", &result.error, 1); GRPC_ERROR_UNREF(result.error); diff --git a/src/core/ext/filters/client_channel/client_channel.h b/src/core/ext/filters/client_channel/client_channel.h index b45d910fd3f..b7dd1a19db4 100644 --- a/src/core/ext/filters/client_channel/client_channel.h +++ b/src/core/ext/filters/client_channel/client_channel.h @@ -192,12 +192,12 @@ class ClientChannel { LbQueuedCall* next = nullptr; }; - ClientChannel(grpc_channel_element_args* args, grpc_error** error); + ClientChannel(grpc_channel_element_args* args, grpc_error_handle* error); ~ClientChannel(); // Filter vtable functions. - static grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args); + static grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args); static void Destroy(grpc_channel_element* elem); static void StartTransportOp(grpc_channel_element* elem, grpc_transport_op* op); @@ -205,7 +205,7 @@ class ClientChannel { const grpc_channel_info* info); // Note: Does NOT return a new ref. - grpc_error* disconnect_error() const { + grpc_error_handle disconnect_error() const { return disconnect_error_.Load(MemoryOrder::ACQUIRE); } @@ -214,7 +214,7 @@ class ClientChannel { void OnResolverResultChangedLocked(Resolver::Result result) ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_); - void OnResolverErrorLocked(grpc_error* error) + void OnResolverErrorLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_); void CreateOrUpdateLbPolicyLocked( @@ -244,7 +244,7 @@ class ClientChannel { void DestroyResolverAndLbPolicyLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_); - grpc_error* DoPingLocked(grpc_transport_op* op) + grpc_error_handle DoPingLocked(grpc_transport_op* op) ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_); void StartTransportOpLocked(grpc_transport_op* op) @@ -291,7 +291,7 @@ class ClientChannel { ResolverQueuedCall* resolver_queued_calls_ ABSL_GUARDED_BY(resolution_mu_) = nullptr; // Data from service config. - grpc_error* resolver_transient_failure_error_ + grpc_error_handle resolver_transient_failure_error_ ABSL_GUARDED_BY(resolution_mu_) = GRPC_ERROR_NONE; bool received_service_config_data_ ABSL_GUARDED_BY(resolution_mu_) = false; RefCountedPtr service_config_ ABSL_GUARDED_BY(resolution_mu_); @@ -346,7 +346,7 @@ class ClientChannel { // Fields accessed from both data plane mutex and control plane // work_serializer. // - Atomic disconnect_error_; + Atomic disconnect_error_; // // Fields guarded by a mutex, since they need to be accessed @@ -390,15 +390,15 @@ class ClientChannel::LoadBalancedCall void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch); // Invoked by channel for queued LB picks when the picker is updated. - static void PickSubchannel(void* arg, grpc_error* error); + static void PickSubchannel(void* arg, grpc_error_handle error); // Helper function for performing an LB pick while holding the data plane // mutex. Returns true if the pick is complete, in which case the caller // must invoke PickDone() or AsyncPickDone() with the returned error. - bool PickSubchannelLocked(grpc_error** error) + bool PickSubchannelLocked(grpc_error_handle* error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_); // Schedules a callback to process the completed pick. The callback // will not run until after this method returns. - void AsyncPickDone(grpc_error* error); + void AsyncPickDone(grpc_error_handle error); RefCountedPtr subchannel_call() const { return subchannel_call_; @@ -412,7 +412,8 @@ class ClientChannel::LoadBalancedCall // Returns the index into pending_batches_ to be used for batch. static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch); void PendingBatchesAdd(grpc_transport_stream_op_batch* batch); - static void FailPendingBatchInCallCombiner(void* arg, grpc_error* error); + static void FailPendingBatchInCallCombiner(void* arg, + grpc_error_handle error); // A predicate type and some useful implementations for PendingBatchesFail(). typedef bool (*YieldCallCombinerPredicate)( const CallCombinerClosureList& closures); @@ -430,20 +431,21 @@ class ClientChannel::LoadBalancedCall // If yield_call_combiner_predicate returns true, assumes responsibility for // yielding the call combiner. void PendingBatchesFail( - grpc_error* error, + grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate); - static void ResumePendingBatchInCallCombiner(void* arg, grpc_error* ignored); + static void ResumePendingBatchInCallCombiner(void* arg, + grpc_error_handle ignored); // Resumes all pending batches on subchannel_call_. void PendingBatchesResume(); static void RecvTrailingMetadataReadyForLoadBalancingPolicy( - void* arg, grpc_error* error); + void* arg, grpc_error_handle error); void InjectRecvTrailingMetadataReadyForLoadBalancingPolicy( grpc_transport_stream_op_batch* batch); void CreateSubchannelCall(); // Invoked when a pick is completed, on both success or failure. - static void PickDone(void* arg, grpc_error* error); + static void PickDone(void* arg, grpc_error_handle error); // Removes the call from the channel's list of queued picks if present. void MaybeRemoveCallFromLbQueuedCallsLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_); @@ -467,10 +469,10 @@ class ClientChannel::LoadBalancedCall grpc_closure* on_call_destruction_complete_; // Set when we get a cancel_stream op. - grpc_error* cancel_error_ = GRPC_ERROR_NONE; + grpc_error_handle cancel_error_ = GRPC_ERROR_NONE; // Set when we fail inside the LB call. - grpc_error* failure_error_ = GRPC_ERROR_NONE; + grpc_error_handle failure_error_ = GRPC_ERROR_NONE; grpc_closure pick_closure_; @@ -484,7 +486,7 @@ class ClientChannel::LoadBalancedCall RefCountedPtr connected_subchannel_; const LoadBalancingPolicy::BackendMetricData* backend_metric_data_ = nullptr; - std::function lb_recv_trailing_metadata_ready_; diff --git a/src/core/ext/filters/client_channel/config_selector.h b/src/core/ext/filters/client_channel/config_selector.h index 61916d2bc3a..98ae07e46e9 100644 --- a/src/core/ext/filters/client_channel/config_selector.h +++ b/src/core/ext/filters/client_channel/config_selector.h @@ -52,7 +52,7 @@ class ConfigSelector : public RefCounted { struct CallConfig { // Can be set to indicate the call should be failed. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // The per-method parsed configs that will be passed to // ServiceConfigCallData. const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr; diff --git a/src/core/ext/filters/client_channel/connector.h b/src/core/ext/filters/client_channel/connector.h index 256471456e3..20e25b5bc19 100644 --- a/src/core/ext/filters/client_channel/connector.h +++ b/src/core/ext/filters/client_channel/connector.h @@ -66,7 +66,7 @@ class SubchannelConnector : public InternallyRefCounted { // Cancels any in-flight connection attempt and shuts down the // connector. - virtual void Shutdown(grpc_error* error) = 0; + virtual void Shutdown(grpc_error_handle error) = 0; void Orphan() override { Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Subchannel disconnected")); diff --git a/src/core/ext/filters/client_channel/dynamic_filters.cc b/src/core/ext/filters/client_channel/dynamic_filters.cc index 1286fcec42c..cd7edc46add 100644 --- a/src/core/ext/filters/client_channel/dynamic_filters.cc +++ b/src/core/ext/filters/client_channel/dynamic_filters.cc @@ -37,7 +37,7 @@ namespace grpc_core { // DynamicFilters::Call // -DynamicFilters::Call::Call(Args args, grpc_error** error) +DynamicFilters::Call::Call(Args args, grpc_error_handle* error) : channel_stack_(std::move(args.channel_stack)) { grpc_call_stack* call_stack = CALL_TO_CALL_STACK(this); const grpc_call_element_args call_args = { @@ -94,7 +94,7 @@ void DynamicFilters::Call::Unref(const DebugLocation& /*location*/, GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), reason); } -void DynamicFilters::Call::Destroy(void* arg, grpc_error* /*error*/) { +void DynamicFilters::Call::Destroy(void* arg, grpc_error_handle /*error*/) { DynamicFilters::Call* self = static_cast(arg); // Keep some members before destroying the subchannel call. grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_; @@ -124,13 +124,13 @@ void DynamicFilters::Call::IncrementRefCount( namespace { -void DestroyChannelStack(void* arg, grpc_error* /*error*/) { +void DestroyChannelStack(void* arg, grpc_error_handle /*error*/) { grpc_channel_stack* channel_stack = static_cast(arg); grpc_channel_stack_destroy(channel_stack); gpr_free(channel_stack); } -std::pair CreateChannelStack( +std::pair CreateChannelStack( const grpc_channel_args* args, std::vector filters) { // Allocate memory for channel stack. @@ -139,7 +139,7 @@ std::pair CreateChannelStack( grpc_channel_stack* channel_stack = reinterpret_cast(gpr_zalloc(channel_stack_size)); // Initialize stack. - grpc_error* error = grpc_channel_stack_init( + grpc_error_handle error = grpc_channel_stack_init( /*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(), filters.size(), args, /*optional_transport=*/nullptr, "DynamicFilters", channel_stack); @@ -163,7 +163,7 @@ RefCountedPtr DynamicFilters::Create( if (p.second != GRPC_ERROR_NONE) { // Channel stack creation failed with requested filters. // Create with lame filter instead. - grpc_error* error = p.second; + grpc_error_handle error = p.second; grpc_arg error_arg = MakeLameClientErrorArg(error); grpc_channel_args* new_args = grpc_channel_args_copy_and_add(args, &error_arg, 1); @@ -180,7 +180,7 @@ DynamicFilters::~DynamicFilters() { } RefCountedPtr DynamicFilters::CreateCall( - DynamicFilters::Call::Args args, grpc_error** error) { + DynamicFilters::Call::Args args, grpc_error_handle* error) { size_t allocation_size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(Call)) + channel_stack_->call_stack_size; Call* call = static_cast(args.arena->Alloc(allocation_size)); diff --git a/src/core/ext/filters/client_channel/dynamic_filters.h b/src/core/ext/filters/client_channel/dynamic_filters.h index bcdc6d3b61d..08a7f4985eb 100644 --- a/src/core/ext/filters/client_channel/dynamic_filters.h +++ b/src/core/ext/filters/client_channel/dynamic_filters.h @@ -46,7 +46,7 @@ class DynamicFilters : public RefCounted { CallCombiner* call_combiner; }; - Call(Args args, grpc_error** error); + Call(Args args, grpc_error_handle* error); // Continues processing a transport stream op batch. void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch); @@ -73,7 +73,7 @@ class DynamicFilters : public RefCounted { void IncrementRefCount(); void IncrementRefCount(const DebugLocation& location, const char* reason); - static void Destroy(void* arg, grpc_error* error); + static void Destroy(void* arg, grpc_error_handle error); RefCountedPtr channel_stack_; grpc_closure* after_call_stack_destroy_ = nullptr; @@ -88,7 +88,7 @@ class DynamicFilters : public RefCounted { ~DynamicFilters() override; - RefCountedPtr CreateCall(Call::Args args, grpc_error** error); + RefCountedPtr CreateCall(Call::Args args, grpc_error_handle* error); private: grpc_channel_stack* channel_stack_; diff --git a/src/core/ext/filters/client_channel/health/health_check_client.cc b/src/core/ext/filters/client_channel/health/health_check_client.cc index ab720231f4f..7119daf2818 100644 --- a/src/core/ext/filters/client_channel/health/health_check_client.cc +++ b/src/core/ext/filters/client_channel/health/health_check_client.cc @@ -157,7 +157,7 @@ void HealthCheckClient::StartRetryTimerLocked() { grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_); } -void HealthCheckClient::OnRetryTimer(void* arg, grpc_error* error) { +void HealthCheckClient::OnRetryTimer(void* arg, grpc_error_handle error) { HealthCheckClient* self = static_cast(arg); { MutexLock lock(&self->mu_); @@ -202,7 +202,7 @@ void EncodeRequest(const std::string& service_name, // Returns true if healthy. // If there was an error parsing the response, sets *error and returns false. -bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error** error) { +bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error_handle* error) { // If message is empty, assume unhealthy. if (slice_buffer->length == 0) { *error = @@ -290,7 +290,7 @@ void HealthCheckClient::CallState::StartCall() { context_, &call_combiner_, }; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; call_ = SubchannelCall::Create(std::move(args), &error).release(); // Register after-destruction callback. GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction, @@ -378,7 +378,7 @@ void HealthCheckClient::CallState::StartCall() { } void HealthCheckClient::CallState::StartBatchInCallCombiner( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { grpc_transport_stream_op_batch* batch = static_cast(arg); SubchannelCall* call = @@ -396,14 +396,14 @@ void HealthCheckClient::CallState::StartBatch( } void HealthCheckClient::CallState::AfterCallStackDestruction( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); delete self; } -void HealthCheckClient::CallState::OnCancelComplete(void* arg, - grpc_error* /*error*/) { +void HealthCheckClient::CallState::OnCancelComplete( + void* arg, grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "health_cancel"); @@ -411,7 +411,7 @@ void HealthCheckClient::CallState::OnCancelComplete(void* arg, } void HealthCheckClient::CallState::StartCancel(void* arg, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); auto* batch = grpc_make_transport_stream_op( @@ -434,7 +434,7 @@ void HealthCheckClient::CallState::Cancel() { } void HealthCheckClient::CallState::OnComplete(void* arg, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete"); @@ -444,7 +444,7 @@ void HealthCheckClient::CallState::OnComplete(void* arg, } void HealthCheckClient::CallState::RecvInitialMetadataReady( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready"); @@ -452,7 +452,8 @@ void HealthCheckClient::CallState::RecvInitialMetadataReady( self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready"); } -void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) { +void HealthCheckClient::CallState::DoneReadingRecvMessage( + grpc_error_handle error) { recv_message_.reset(); if (error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(error); @@ -482,9 +483,9 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) { StartBatch(&recv_message_batch_); } -grpc_error* HealthCheckClient::CallState::PullSliceFromRecvMessage() { +grpc_error_handle HealthCheckClient::CallState::PullSliceFromRecvMessage() { grpc_slice slice; - grpc_error* error = recv_message_->Pull(&slice); + grpc_error_handle error = recv_message_->Pull(&slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&recv_message_buffer_, slice); } @@ -493,7 +494,7 @@ grpc_error* HealthCheckClient::CallState::PullSliceFromRecvMessage() { void HealthCheckClient::CallState::ContinueReadingRecvMessage() { while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) { - grpc_error* error = PullSliceFromRecvMessage(); + grpc_error_handle error = PullSliceFromRecvMessage(); if (error != GRPC_ERROR_NONE) { DoneReadingRecvMessage(error); return; @@ -506,7 +507,7 @@ void HealthCheckClient::CallState::ContinueReadingRecvMessage() { } void HealthCheckClient::CallState::OnByteStreamNext(void* arg, - grpc_error* error) { + grpc_error_handle error) { HealthCheckClient::CallState* self = static_cast(arg); if (error != GRPC_ERROR_NONE) { @@ -525,8 +526,8 @@ void HealthCheckClient::CallState::OnByteStreamNext(void* arg, } } -void HealthCheckClient::CallState::RecvMessageReady(void* arg, - grpc_error* /*error*/) { +void HealthCheckClient::CallState::RecvMessageReady( + void* arg, grpc_error_handle /*error*/) { HealthCheckClient::CallState* self = static_cast(arg); GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready"); @@ -542,7 +543,7 @@ void HealthCheckClient::CallState::RecvMessageReady(void* arg, } void HealthCheckClient::CallState::RecvTrailingMetadataReady( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { HealthCheckClient::CallState* self = static_cast(arg); GRPC_CALL_COMBINER_STOP(&self->call_combiner_, diff --git a/src/core/ext/filters/client_channel/health/health_check_client.h b/src/core/ext/filters/client_channel/health/health_check_client.h index 2d63066ca45..d1f063b5024 100644 --- a/src/core/ext/filters/client_channel/health/health_check_client.h +++ b/src/core/ext/filters/client_channel/health/health_check_client.h @@ -70,24 +70,24 @@ class HealthCheckClient : public InternallyRefCounted { void Cancel(); void StartBatch(grpc_transport_stream_op_batch* batch); - static void StartBatchInCallCombiner(void* arg, grpc_error* error); + static void StartBatchInCallCombiner(void* arg, grpc_error_handle error); void CallEndedLocked(bool retry) ABSL_EXCLUSIVE_LOCKS_REQUIRED(health_check_client_->mu_); - static void OnComplete(void* arg, grpc_error* error); - static void RecvInitialMetadataReady(void* arg, grpc_error* error); - static void RecvMessageReady(void* arg, grpc_error* error); - static void RecvTrailingMetadataReady(void* arg, grpc_error* error); - static void StartCancel(void* arg, grpc_error* error); - static void OnCancelComplete(void* arg, grpc_error* error); + static void OnComplete(void* arg, grpc_error_handle error); + static void RecvInitialMetadataReady(void* arg, grpc_error_handle error); + static void RecvMessageReady(void* arg, grpc_error_handle error); + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); + static void StartCancel(void* arg, grpc_error_handle error); + static void OnCancelComplete(void* arg, grpc_error_handle error); - static void OnByteStreamNext(void* arg, grpc_error* error); + static void OnByteStreamNext(void* arg, grpc_error_handle error); void ContinueReadingRecvMessage(); - grpc_error* PullSliceFromRecvMessage(); - void DoneReadingRecvMessage(grpc_error* error); + grpc_error_handle PullSliceFromRecvMessage(); + void DoneReadingRecvMessage(grpc_error_handle error); - static void AfterCallStackDestruction(void* arg, grpc_error* error); + static void AfterCallStackDestruction(void* arg, grpc_error_handle error); RefCountedPtr health_check_client_; grpc_polling_entity pollent_; @@ -144,7 +144,7 @@ class HealthCheckClient : public InternallyRefCounted { void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); - static void OnRetryTimer(void* arg, grpc_error* error); + static void OnRetryTimer(void* arg, grpc_error_handle error); void SetHealthStatus(grpc_connectivity_state state, const char* reason); void SetHealthStatusLocked(grpc_connectivity_state state, const char* reason) diff --git a/src/core/ext/filters/client_channel/http_connect_handshaker.cc b/src/core/ext/filters/client_channel/http_connect_handshaker.cc index 4224cde93fb..3dff8249d08 100644 --- a/src/core/ext/filters/client_channel/http_connect_handshaker.cc +++ b/src/core/ext/filters/client_channel/http_connect_handshaker.cc @@ -47,7 +47,7 @@ namespace { class HttpConnectHandshaker : public Handshaker { public: HttpConnectHandshaker(); - void Shutdown(grpc_error* why) override; + void Shutdown(grpc_error_handle why) override; void DoHandshake(grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, HandshakerArgs* args) override; @@ -56,12 +56,12 @@ class HttpConnectHandshaker : public Handshaker { private: ~HttpConnectHandshaker() override; void CleanupArgsForFailureLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); - void HandshakeFailedLocked(grpc_error* error) + void HandshakeFailedLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); - static void OnWriteDone(void* arg, grpc_error* error); - static void OnReadDone(void* arg, grpc_error* error); - static void OnWriteDoneScheduler(void* arg, grpc_error* error); - static void OnReadDoneScheduler(void* arg, grpc_error* error); + static void OnWriteDone(void* arg, grpc_error_handle error); + static void OnReadDone(void* arg, grpc_error_handle error); + static void OnWriteDoneScheduler(void* arg, grpc_error_handle error); + static void OnReadDoneScheduler(void* arg, grpc_error_handle error); Mutex mu_; @@ -108,7 +108,7 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() { // If the handshake failed or we're shutting down, clean up and invoke the // callback with the error. -void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error* error) { +void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error_handle error) { if (error == GRPC_ERROR_NONE) { // If we were shut down after an endpoint operation succeeded but // before the endpoint callback was invoked, we need to generate our @@ -134,7 +134,8 @@ void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error* error) { // This callback can be invoked inline while already holding onto the mutex. To // avoid deadlocks, schedule OnWriteDone on ExecCtx. -void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, grpc_error* error) { +void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, + grpc_error_handle error) { auto* handshaker = static_cast(arg); grpc_core::ExecCtx::Run( DEBUG_LOCATION, @@ -145,7 +146,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, grpc_error* error) { } // Callback invoked when finished writing HTTP CONNECT request. -void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) { +void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) { auto* handshaker = static_cast(arg); ReleasableMutexLock lock(&handshaker->mu_); if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) { @@ -168,7 +169,8 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) { // This callback can be invoked inline while already holding onto the mutex. To // avoid deadlocks, schedule OnReadDone on ExecCtx. -void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, grpc_error* error) { +void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, + grpc_error_handle error) { auto* handshaker = static_cast(arg); grpc_core::ExecCtx::Run( DEBUG_LOCATION, @@ -179,7 +181,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, grpc_error* error) { } // Callback invoked for reading HTTP CONNECT response. -void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error* error) { +void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) { auto* handshaker = static_cast(arg); ReleasableMutexLock lock(&handshaker->mu_); if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) { @@ -265,7 +267,7 @@ done: // Public handshaker methods // -void HttpConnectHandshaker::Shutdown(grpc_error* why) { +void HttpConnectHandshaker::Shutdown(grpc_error_handle why) { { MutexLock lock(&mu_); if (!is_shutdown_) { diff --git a/src/core/ext/filters/client_channel/lb_policy.cc b/src/core/ext/filters/client_channel/lb_policy.cc index 5470df8e121..b9272249c4d 100644 --- a/src/core/ext/filters/client_channel/lb_policy.cc +++ b/src/core/ext/filters/client_channel/lb_policy.cc @@ -113,7 +113,7 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick( auto* parent = parent_->Ref().release(); // ref held by lambda. ExecCtx::Run(DEBUG_LOCATION, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { auto* parent = static_cast(arg); parent->work_serializer()->Run( [parent]() { diff --git a/src/core/ext/filters/client_channel/lb_policy.h b/src/core/ext/filters/client_channel/lb_policy.h index c9fc1429ac8..1c6f3098233 100644 --- a/src/core/ext/filters/client_channel/lb_policy.h +++ b/src/core/ext/filters/client_channel/lb_policy.h @@ -230,7 +230,7 @@ class LoadBalancingPolicy : public InternallyRefCounted { /// Error to be set when returning a failure. // TODO(roth): Replace this with something similar to grpc::Status, // so that we don't expose grpc_error to this API. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /// Used only if type is PICK_COMPLETE. /// Callback set by LB policy to be notified of trailing metadata. @@ -243,7 +243,7 @@ class LoadBalancingPolicy : public InternallyRefCounted { // TODO(roth): The arguments to this callback should be moved into a // struct, so that we can later add new fields without breaking // existing implementations. - std::function + std::function recv_trailing_metadata_ready; }; @@ -387,13 +387,13 @@ class LoadBalancingPolicy : public InternallyRefCounted { // A picker that returns PICK_TRANSIENT_FAILURE for all picks. class TransientFailurePicker : public SubchannelPicker { public: - explicit TransientFailurePicker(grpc_error* error) : error_(error) {} + explicit TransientFailurePicker(grpc_error_handle error) : error_(error) {} ~TransientFailurePicker() override { GRPC_ERROR_UNREF(error_); } PickResult Pick(PickArgs args) override; private: - grpc_error* error_; + grpc_error_handle error_; }; protected: diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc index c8d1b1d7af8..5f7d75c0fd4 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc @@ -30,8 +30,8 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/lib/profiling/timers.h" -static grpc_error* clr_init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle clr_init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -54,7 +54,7 @@ struct call_data { } // namespace -static void on_complete_for_send(void* arg, grpc_error* error) { +static void on_complete_for_send(void* arg, grpc_error_handle error) { call_data* calld = static_cast(arg); if (error == GRPC_ERROR_NONE) { calld->send_initial_metadata_succeeded = true; @@ -63,7 +63,7 @@ static void on_complete_for_send(void* arg, grpc_error* error) { GRPC_ERROR_REF(error)); } -static void recv_initial_metadata_ready(void* arg, grpc_error* error) { +static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) { call_data* calld = static_cast(arg); if (error == GRPC_ERROR_NONE) { calld->recv_initial_metadata_succeeded = true; @@ -73,8 +73,8 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) { GRPC_ERROR_REF(error)); } -static grpc_error* clr_init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle clr_init_call_elem( + grpc_call_element* elem, const grpc_call_element_args* args) { GPR_ASSERT(args->context != nullptr); new (elem->call_data) call_data(); return GRPC_ERROR_NONE; diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc index 0cf36f9e305..ee3fdc0514d 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc @@ -186,17 +186,17 @@ class GrpcLb : public LoadBalancingPolicy { void ScheduleNextClientLoadReportLocked(); void SendClientLoadReportLocked(); - static void MaybeSendClientLoadReport(void* arg, grpc_error* error); - static void ClientLoadReportDone(void* arg, grpc_error* error); - static void OnInitialRequestSent(void* arg, grpc_error* error); - static void OnBalancerMessageReceived(void* arg, grpc_error* error); - static void OnBalancerStatusReceived(void* arg, grpc_error* error); + static void MaybeSendClientLoadReport(void* arg, grpc_error_handle error); + static void ClientLoadReportDone(void* arg, grpc_error_handle error); + static void OnInitialRequestSent(void* arg, grpc_error_handle error); + static void OnBalancerMessageReceived(void* arg, grpc_error_handle error); + static void OnBalancerStatusReceived(void* arg, grpc_error_handle error); - void MaybeSendClientLoadReportLocked(grpc_error* error); - void ClientLoadReportDoneLocked(grpc_error* error); + void MaybeSendClientLoadReportLocked(grpc_error_handle error); + void ClientLoadReportDoneLocked(grpc_error_handle error); void OnInitialRequestSentLocked(); void OnBalancerMessageReceivedLocked(); - void OnBalancerStatusReceivedLocked(grpc_error* error); + void OnBalancerStatusReceivedLocked(grpc_error_handle error); // The owning LB policy. RefCountedPtr grpclb_policy_; @@ -410,14 +410,14 @@ class GrpcLb : public LoadBalancingPolicy { // Methods for dealing with fallback state. void MaybeEnterFallbackModeAfterStartup(); - static void OnFallbackTimer(void* arg, grpc_error* error); - void OnFallbackTimerLocked(grpc_error* error); + static void OnFallbackTimer(void* arg, grpc_error_handle error); + void OnFallbackTimerLocked(grpc_error_handle error); // Methods for dealing with the balancer call. void StartBalancerCallLocked(); void StartBalancerCallRetryTimerLocked(); - static void OnBalancerCallRetryTimer(void* arg, grpc_error* error); - void OnBalancerCallRetryTimerLocked(grpc_error* error); + static void OnBalancerCallRetryTimer(void* arg, grpc_error_handle error); + void OnBalancerCallRetryTimerLocked(grpc_error_handle error); // Methods for dealing with the child policy. grpc_channel_args* CreateChildPolicyArgsLocked( @@ -902,8 +902,8 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() { client_load_report_timer_callback_pending_ = true; } -void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg, - grpc_error* error) { +void GrpcLb::BalancerCallState::MaybeSendClientLoadReport( + void* arg, grpc_error_handle error) { BalancerCallState* lb_calld = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda lb_calld->grpclb_policy()->work_serializer()->Run( @@ -912,7 +912,7 @@ void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg, } void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked( - grpc_error* error) { + grpc_error_handle error) { client_load_report_timer_callback_pending_ = false; if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) { Unref(DEBUG_LOCATION, "client_load_report"); @@ -982,7 +982,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() { } void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg, - grpc_error* error) { + grpc_error_handle error) { BalancerCallState* lb_calld = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda lb_calld->grpclb_policy()->work_serializer()->Run( @@ -990,7 +990,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg, DEBUG_LOCATION); } -void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) { +void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked( + grpc_error_handle error) { grpc_byte_buffer_destroy(send_message_payload_); send_message_payload_ = nullptr; if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) { @@ -1001,8 +1002,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) { ScheduleNextClientLoadReportLocked(); } -void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg, - grpc_error* /*error*/) { +void GrpcLb::BalancerCallState::OnInitialRequestSent( + void* arg, grpc_error_handle /*error*/) { BalancerCallState* lb_calld = static_cast(arg); lb_calld->grpclb_policy()->work_serializer()->Run( [lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION); @@ -1021,7 +1022,7 @@ void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() { } void GrpcLb::BalancerCallState::OnBalancerMessageReceived( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { BalancerCallState* lb_calld = static_cast(arg); lb_calld->grpclb_policy()->work_serializer()->Run( [lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); }, @@ -1183,8 +1184,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() { } } -void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg, - grpc_error* error) { +void GrpcLb::BalancerCallState::OnBalancerStatusReceived( + void* arg, grpc_error_handle error) { BalancerCallState* lb_calld = static_cast(arg); GRPC_ERROR_REF(error); // owned by lambda lb_calld->grpclb_policy()->work_serializer()->Run( @@ -1193,7 +1194,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg, } void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked( - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(lb_call_ != nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { char* status_details = grpc_slice_to_c_string(lb_call_status_details_); @@ -1534,7 +1535,7 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() { grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_); } -void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) { +void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) { GrpcLb* grpclb_policy = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda grpclb_policy->work_serializer()->Run( @@ -1544,7 +1545,7 @@ void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) { DEBUG_LOCATION); } -void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) { +void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) { retry_timer_callback_pending_ = false; if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { @@ -1578,7 +1579,7 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() { } } -void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) { +void GrpcLb::OnFallbackTimer(void* arg, grpc_error_handle error) { GrpcLb* grpclb_policy = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda grpclb_policy->work_serializer()->Run( @@ -1586,7 +1587,7 @@ void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) { DEBUG_LOCATION); } -void GrpcLb::OnFallbackTimerLocked(grpc_error* error) { +void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) { // If we receive a serverlist after the timer fires but before this callback // actually runs, don't fall back. if (fallback_at_startup_checks_pending_ && !shutting_down_ && @@ -1690,12 +1691,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kGrpclb; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { return MakeRefCounted(nullptr, ""); } - std::vector error_list; + std::vector error_list; Json child_policy_config_json_tmp; const Json* child_policy_config_json; std::string service_name; @@ -1718,12 +1719,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory { } else { child_policy_config_json = &it->second; } - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; RefCountedPtr child_policy_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( *child_policy_config_json, &parse_error); if (parse_error != GRPC_ERROR_NONE) { - std::vector child_errors; + std::vector child_errors; child_errors.push_back(parse_error); error_list.push_back( GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors)); diff --git a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc index e7e98d97130..8910961d172 100644 --- a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +++ b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc @@ -197,7 +197,7 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() { // (If we are idle, then this will happen in ExitIdleLocked() if we // haven't gotten a non-empty update by the time the application tries // to start a new call.) - grpc_error* error = + grpc_error_handle error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); channel_control_helper()->UpdateState( @@ -314,7 +314,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_); // Set our state to that of the pending subchannel list. if (p->subchannel_list_->in_transient_failure()) { - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "selected subchannel failed; switching to pending update"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); @@ -393,7 +393,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( subchannel_list()->set_in_transient_failure(true); // Only report new state in case 1. if (subchannel_list() == p->subchannel_list_.get()) { - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "failed to connect to all addresses"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); @@ -497,7 +497,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kPickFirst; } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } }; diff --git a/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc b/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc index ca4bc90a09d..3cd7c541878 100644 --- a/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +++ b/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc @@ -179,10 +179,10 @@ class PriorityLb : public LoadBalancingPolicy { void StartFailoverTimerLocked(); - static void OnFailoverTimer(void* arg, grpc_error* error); - void OnFailoverTimerLocked(grpc_error* error); - static void OnDeactivationTimer(void* arg, grpc_error* error); - void OnDeactivationTimerLocked(grpc_error* error); + static void OnFailoverTimer(void* arg, grpc_error_handle error); + void OnFailoverTimerLocked(grpc_error_handle error); + static void OnDeactivationTimer(void* arg, grpc_error_handle error); + void OnDeactivationTimerLocked(grpc_error_handle error); RefCountedPtr priority_policy_; const std::string name_; @@ -472,7 +472,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) { this); } current_child_from_before_update_ = nullptr; - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ready priority"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); channel_control_helper()->UpdateState( @@ -655,14 +655,15 @@ void PriorityLb::ChildPriority::MaybeCancelFailoverTimerLocked() { } } -void PriorityLb::ChildPriority::OnFailoverTimer(void* arg, grpc_error* error) { +void PriorityLb::ChildPriority::OnFailoverTimer(void* arg, + grpc_error_handle error) { ChildPriority* self = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda self->priority_policy_->work_serializer()->Run( [self, error]() { self->OnFailoverTimerLocked(error); }, DEBUG_LOCATION); } -void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error* error) { +void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error_handle error) { if (error == GRPC_ERROR_NONE && failover_timer_callback_pending_ && !priority_policy_->shutting_down_) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { @@ -712,7 +713,7 @@ void PriorityLb::ChildPriority::MaybeReactivateLocked() { } void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg, - grpc_error* error) { + grpc_error_handle error) { ChildPriority* self = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda self->priority_policy_->work_serializer()->Run( @@ -720,7 +721,8 @@ void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg, DEBUG_LOCATION); } -void PriorityLb::ChildPriority::OnDeactivationTimerLocked(grpc_error* error) { +void PriorityLb::ChildPriority::OnDeactivationTimerLocked( + grpc_error_handle error) { if (error == GRPC_ERROR_NONE && deactivation_timer_callback_pending_ && !priority_policy_->shutting_down_) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) { @@ -785,7 +787,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kPriority; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // priority was mentioned as a policy in the deprecated @@ -796,7 +798,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { "config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; // Children. std::map children; auto it = json.object_value().find("children"); @@ -824,7 +826,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory { " error:missing 'config' field") .c_str())); } else { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( it2->second, &parse_error); bool ignore_resolution_requests = false; diff --git a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc index efc7942a6a0..30f718d94fa 100644 --- a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +++ b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc @@ -331,7 +331,7 @@ void RoundRobin::RoundRobinSubchannelList:: absl::make_unique(p->Ref(DEBUG_LOCATION, "QueuePicker"))); } else if (num_transient_failure_ == num_subchannels()) { /* 3) TRANSIENT_FAILURE */ - grpc_error* error = + grpc_error_handle error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "connections to all backends failing"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); @@ -449,7 +449,7 @@ void RoundRobin::UpdateLocked(UpdateArgs args) { if (latest_pending_subchannel_list_->num_subchannels() == 0) { // If the new list is empty, immediately promote the new list to the // current list and transition to TRANSIENT_FAILURE. - grpc_error* error = + grpc_error_handle error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); channel_control_helper()->UpdateState( @@ -487,7 +487,7 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kRoundRobin; } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } }; diff --git a/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc b/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc index 1eca478b488..ac1857be694 100644 --- a/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +++ b/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc @@ -165,8 +165,8 @@ class WeightedTargetLb : public LoadBalancingPolicy { grpc_connectivity_state state, const absl::Status& status, std::unique_ptr picker); - static void OnDelayedRemovalTimer(void* arg, grpc_error* error); - void OnDelayedRemovalTimerLocked(grpc_error* error); + static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error); + void OnDelayedRemovalTimerLocked(grpc_error_handle error); // The owning LB policy. RefCountedPtr weighted_target_policy_; @@ -387,7 +387,7 @@ void WeightedTargetLb::UpdateStateLocked() { absl::make_unique(Ref(DEBUG_LOCATION, "QueuePicker")); break; default: - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "weighted_target: all children report state TRANSIENT_FAILURE"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); @@ -564,8 +564,8 @@ void WeightedTargetLb::WeightedChild::DeactivateLocked() { &on_delayed_removal_timer_); } -void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(void* arg, - grpc_error* error) { +void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer( + void* arg, grpc_error_handle error) { WeightedChild* self = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda self->weighted_target_policy_->work_serializer()->Run( @@ -574,7 +574,7 @@ void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(void* arg, } void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimerLocked( - grpc_error* error) { + grpc_error_handle error) { if (error == GRPC_ERROR_NONE && delayed_removal_timer_callback_pending_ && !shutdown_ && weight_ == 0) { delayed_removal_timer_callback_pending_ = false; @@ -631,7 +631,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kWeightedTarget; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // weighted_target was mentioned as a policy in the deprecated @@ -642,7 +642,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory { "config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; // Weight map. WeightedTargetLbConfig::TargetMap target_map; auto it = json.object_value().find("targets"); @@ -655,14 +655,14 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory { } else { for (const auto& p : it->second.object_value()) { WeightedTargetLbConfig::ChildConfig child_config; - std::vector child_errors = + std::vector child_errors = ParseChildConfig(p.second, &child_config); if (!child_errors.empty()) { // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("field:targets key:", p.first).c_str()); - for (grpc_error* child_error : child_errors) { + for (grpc_error_handle child_error : child_errors) { error = grpc_error_add_child(error, child_error); } error_list.push_back(error); @@ -680,9 +680,9 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory { } private: - static std::vector ParseChildConfig( + static std::vector ParseChildConfig( const Json& json, WeightedTargetLbConfig::ChildConfig* child_config) { - std::vector error_list; + std::vector error_list; if (json.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "value should be of type object")); @@ -711,13 +711,13 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory { // Child policy. it = json.object_value().find("childPolicy"); if (it != json.object_value().end()) { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; child_config->config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second, &parse_error); if (child_config->config == nullptr) { GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE); - std::vector child_errors; + std::vector child_errors; child_errors.push_back(parse_error); error_list.push_back( GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors)); diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc b/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc index 3c430d2240c..0739c0bdacd 100644 --- a/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +++ b/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc @@ -75,7 +75,7 @@ class CdsLb : public LoadBalancingPolicy { void OnClusterChanged(XdsApi::CdsUpdate cluster_data) override { new Notifier(parent_, name_, std::move(cluster_data)); } - void OnError(grpc_error* error) override { + void OnError(grpc_error_handle error) override { new Notifier(parent_, name_, error); } void OnResourceDoesNotExist() override { new Notifier(parent_, name_); } @@ -86,14 +86,14 @@ class CdsLb : public LoadBalancingPolicy { Notifier(RefCountedPtr parent, std::string name, XdsApi::CdsUpdate update); Notifier(RefCountedPtr parent, std::string name, - grpc_error* error); + grpc_error_handle error); explicit Notifier(RefCountedPtr parent, std::string name); private: enum Type { kUpdate, kError, kDoesNotExist }; - static void RunInExecCtx(void* arg, grpc_error* error); - void RunInWorkSerializer(grpc_error* error); + static void RunInExecCtx(void* arg, grpc_error_handle error); + void RunInWorkSerializer(grpc_error_handle error); RefCountedPtr parent_; std::string name_; @@ -139,10 +139,10 @@ class CdsLb : public LoadBalancingPolicy { std::set* clusters_needed); void OnClusterChanged(const std::string& name, XdsApi::CdsUpdate cluster_data); - void OnError(const std::string& name, grpc_error* error); + void OnError(const std::string& name, grpc_error_handle error); void OnResourceDoesNotExist(const std::string& name); - grpc_error* UpdateXdsCertificateProvider( + grpc_error_handle UpdateXdsCertificateProvider( const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data); void CancelClusterDataWatch(absl::string_view cluster_name, @@ -190,7 +190,8 @@ CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr parent, } CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr parent, - std::string name, grpc_error* error) + std::string name, + grpc_error_handle error) : parent_(std::move(parent)), name_(std::move(name)), type_(kError) { GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr); ExecCtx::Run(DEBUG_LOCATION, &closure_, error); @@ -204,14 +205,15 @@ CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr parent, } void CdsLb::ClusterWatcher::Notifier::RunInExecCtx(void* arg, - grpc_error* error) { + grpc_error_handle error) { Notifier* self = static_cast(arg); GRPC_ERROR_REF(error); self->parent_->work_serializer()->Run( [self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION); } -void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer(grpc_error* error) { +void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer( + grpc_error_handle error) { switch (type_) { case kUpdate: parent_->OnClusterChanged(name_, std::move(update_)); @@ -434,7 +436,7 @@ void CdsLb::OnClusterChanged(const std::string& name, if (it == watchers_.end()) return; it->second.update = cluster_data; // Take care of integration with new certificate code. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; error = UpdateXdsCertificateProvider(name, it->second.update.value()); if (error != GRPC_ERROR_NONE) { return OnError(name, error); @@ -541,7 +543,7 @@ void CdsLb::OnClusterChanged(const std::string& name, } } -void CdsLb::OnError(const std::string& name, grpc_error* error) { +void CdsLb::OnError(const std::string& name, grpc_error_handle error) { gpr_log(GPR_ERROR, "[cdslb %p] xds error obtaining data for cluster %s: %s", this, name.c_str(), grpc_error_string(error)); // Go into TRANSIENT_FAILURE if we have not yet created the child @@ -561,7 +563,7 @@ void CdsLb::OnResourceDoesNotExist(const std::string& name) { "[cdslb %p] CDS resource for %s does not exist -- reporting " "TRANSIENT_FAILURE", this, name.c_str()); - grpc_error* error = + grpc_error_handle error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("CDS resource \"", config_->cluster(), "\" does not exist") @@ -573,7 +575,7 @@ void CdsLb::OnResourceDoesNotExist(const std::string& name) { MaybeDestroyChildPolicyLocked(); } -grpc_error* CdsLb::UpdateXdsCertificateProvider( +grpc_error_handle CdsLb::UpdateXdsCertificateProvider( const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data) { // Early out if channel is not configured to use xds security. grpc_channel_credentials* channel_credentials = @@ -707,7 +709,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kCds; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // xds was mentioned as a policy in the deprecated loadBalancingPolicy @@ -717,7 +719,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory { "Please use loadBalancingConfig field of service config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; // cluster name. std::string cluster; auto it = json.object_value().find("cluster"); diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc index 1c734aa8ea5..7dbba6467d8 100644 --- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc @@ -331,7 +331,7 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick( // Note: This callback does not run in either the control plane // work serializer or in the data plane mutex. [locality_stats, original_recv_trailing_metadata_ready, call_counter]( - grpc_error* error, MetadataInterface* metadata, + grpc_error_handle error, MetadataInterface* metadata, CallState* call_state) { // Record call completion for load reporting. if (locality_stats != nullptr) { @@ -611,7 +611,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kXdsClusterImpl; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // This policy was configured in the deprecated loadBalancingPolicy @@ -622,7 +622,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { "config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; // Child policy. RefCountedPtr child_policy; auto it = json.object_value().find("childPolicy"); @@ -630,12 +630,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:childPolicy error:required field missing")); } else { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( it->second, &parse_error); if (child_policy == nullptr) { GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE); - std::vector child_errors; + std::vector child_errors; child_errors.push_back(parse_error); error_list.push_back( GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors)); @@ -694,7 +694,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:dropCategories error:required field missing")); } else { - std::vector child_errors = + std::vector child_errors = ParseDropCategories(it->second, drop_config.get()); if (!child_errors.empty()) { error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( @@ -713,9 +713,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { } private: - static std::vector ParseDropCategories( + static std::vector ParseDropCategories( const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) { - std::vector error_list; + std::vector error_list; if (json.type() != Json::Type::ARRAY) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "dropCategories field is not an array")); @@ -723,10 +723,10 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { } for (size_t i = 0; i < json.array_value().size(); ++i) { const Json& entry = json.array_value()[i]; - std::vector child_errors = + std::vector child_errors = ParseDropCategory(entry, drop_config); if (!child_errors.empty()) { - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("errors parsing index ", i).c_str()); for (size_t i = 0; i < child_errors.size(); ++i) { error = grpc_error_add_child(error, child_errors[i]); @@ -737,9 +737,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory { return error_list; } - static std::vector ParseDropCategory( + static std::vector ParseDropCategory( const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) { - std::vector error_list; + std::vector error_list; if (json.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "dropCategories entry is not an object")); diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc index f4fa1f45303..50929beaf8c 100644 --- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc @@ -162,8 +162,8 @@ class XdsClusterManagerLb : public LoadBalancingPolicy { OrphanablePtr CreateChildPolicyLocked( const grpc_channel_args* args); - static void OnDelayedRemovalTimer(void* arg, grpc_error* error); - void OnDelayedRemovalTimerLocked(grpc_error* error); + static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error); + void OnDelayedRemovalTimerLocked(grpc_error_handle error); // The owning LB policy. RefCountedPtr xds_cluster_manager_policy_; @@ -369,7 +369,7 @@ void XdsClusterManagerLb::UpdateStateLocked() { absl::make_unique(Ref(DEBUG_LOCATION, "QueuePicker")); break; default: - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "TRANSIENT_FAILURE from XdsClusterManagerLb"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); @@ -513,7 +513,7 @@ void XdsClusterManagerLb::ClusterChild::DeactivateLocked() { } void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { ClusterChild* self = static_cast(arg); GRPC_ERROR_REF(error); // Ref owned by the lambda self->xds_cluster_manager_policy_->work_serializer()->Run( @@ -522,7 +522,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer( } void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked( - grpc_error* error) { + grpc_error_handle error) { delayed_removal_timer_callback_pending_ = false; if (error == GRPC_ERROR_NONE && !shutdown_) { xds_cluster_manager_policy_->children_.erase(name_); @@ -616,7 +616,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kXdsClusterManager; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // xds_cluster_manager was mentioned as a policy in the deprecated @@ -627,7 +627,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory { "config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; XdsClusterManagerLbConfig::ClusterMap cluster_map; std::set clusters_to_be_used; auto it = json.object_value().find("children"); @@ -646,14 +646,14 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory { continue; } RefCountedPtr child_config; - std::vector child_errors = + std::vector child_errors = ParseChildConfig(p.second, &child_config); if (!child_errors.empty()) { // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("field:children name:", child_name).c_str()); - for (grpc_error* child_error : child_errors) { + for (grpc_error_handle child_error : child_errors) { error = grpc_error_add_child(error, child_error); } error_list.push_back(error); @@ -676,10 +676,10 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory { } private: - static std::vector ParseChildConfig( + static std::vector ParseChildConfig( const Json& json, RefCountedPtr* child_config) { - std::vector error_list; + std::vector error_list; if (json.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "value should be of type object")); @@ -690,12 +690,12 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory { error_list.push_back( GRPC_ERROR_CREATE_FROM_STATIC_STRING("did not find childPolicy")); } else { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; *child_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( it->second, &parse_error); if (*child_config == nullptr) { GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE); - std::vector child_errors; + std::vector child_errors; child_errors.push_back(parse_error); error_list.push_back( GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors)); diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc index 225caf399e6..d67149bc6f0 100644 --- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc @@ -185,7 +185,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { void OnEndpointChanged(XdsApi::EdsUpdate update) override { new Notifier(discovery_mechanism_, std::move(update)); } - void OnError(grpc_error* error) override { + void OnError(grpc_error_handle error) override { new Notifier(discovery_mechanism_, error); } void OnResourceDoesNotExist() override { @@ -198,7 +198,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { Notifier(RefCountedPtr discovery_mechanism, XdsApi::EdsUpdate update); Notifier(RefCountedPtr discovery_mechanism, - grpc_error* error); + grpc_error_handle error); explicit Notifier( RefCountedPtr discovery_mechanism); ~Notifier() { discovery_mechanism_.reset(DEBUG_LOCATION, "Notifier"); } @@ -206,8 +206,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { private: enum Type { kUpdate, kError, kDoesNotExist }; - static void RunInExecCtx(void* arg, grpc_error* error); - void RunInWorkSerializer(grpc_error* error); + static void RunInExecCtx(void* arg, grpc_error_handle error); + void RunInWorkSerializer(grpc_error_handle error); RefCountedPtr discovery_mechanism_; grpc_closure closure_; @@ -250,7 +250,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { void ReturnResult(Resolver::Result result) override; - void ReturnError(grpc_error* error) override; + void ReturnError(grpc_error_handle error) override; private: RefCountedPtr discovery_mechanism_; @@ -304,7 +304,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy { void ShutdownLocked() override; void OnEndpointChanged(size_t index, XdsApi::EdsUpdate update); - void OnError(size_t index, grpc_error* error); + void OnError(size_t index, grpc_error_handle error); void OnResourceDoesNotExist(size_t index); void MaybeDestroyChildPolicyLocked(); @@ -430,7 +430,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: Notifier(RefCountedPtr discovery_mechanism, - grpc_error* error) + grpc_error_handle error) : discovery_mechanism_(std::move(discovery_mechanism)), type_(kError) { GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr); ExecCtx::Run(DEBUG_LOCATION, &closure_, error); @@ -446,7 +446,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: } void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: - RunInExecCtx(void* arg, grpc_error* error) { + RunInExecCtx(void* arg, grpc_error_handle error) { Notifier* self = static_cast(arg); GRPC_ERROR_REF(error); self->discovery_mechanism_->parent()->work_serializer()->Run( @@ -454,7 +454,7 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: } void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier:: - RunInWorkSerializer(grpc_error* error) { + RunInWorkSerializer(grpc_error_handle error) { switch (type_) { case kUpdate: discovery_mechanism_->parent()->OnEndpointChanged( @@ -542,7 +542,7 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler:: } void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler:: - ReturnError(grpc_error* error) { + ReturnError(grpc_error_handle error) { discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(), error); } @@ -730,7 +730,7 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index, UpdatePriorityList(std::move(priority_list)); } -void XdsClusterResolverLb::OnError(size_t index, grpc_error* error) { +void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) { gpr_log(GPR_ERROR, "[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR " xds watcher reported error: %s", @@ -1002,7 +1002,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() { "[xds_cluster_resolver_lb %p] generated config for child policy: %s", this, json_str.c_str()); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; RefCountedPtr config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error); if (error != GRPC_ERROR_NONE) { @@ -1106,7 +1106,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory { XdsClient::GetFromChannelArgs(*args.args); if (xds_client == nullptr) { if (!is_xds_uri) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; xds_client = XdsClient::GetOrCreate(args.args, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, @@ -1130,7 +1130,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kXdsClusterResolver; } RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const override { + const Json& json, grpc_error_handle* error) const override { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (json.type() == Json::Type::JSON_NULL) { // xds_cluster_resolver was mentioned as a policy in the deprecated @@ -1141,7 +1141,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory { "Please use loadBalancingConfig field of service config instead."); return nullptr; } - std::vector error_list; + std::vector error_list; std::vector discovery_mechanisms; auto it = json.object_value().find("discoveryMechanisms"); @@ -1155,13 +1155,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory { const Json::Array& array = it->second.array_value(); for (size_t i = 0; i < array.size(); ++i) { XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism; - std::vector discovery_mechanism_errors = + std::vector discovery_mechanism_errors = ParseDiscoveryMechanism(array[i], &discovery_mechanism); if (!discovery_mechanism_errors.empty()) { - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("field:discovery_mechanism element: ", i, " error") .c_str()); - for (grpc_error* discovery_mechanism_error : + for (grpc_error_handle discovery_mechanism_error : discovery_mechanism_errors) { error = grpc_error_add_child(error, discovery_mechanism_error); } @@ -1276,10 +1276,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory { } private: - static std::vector ParseDiscoveryMechanism( + static std::vector ParseDiscoveryMechanism( const Json& json, XdsClusterResolverLbConfig::DiscoveryMechanism* discovery_mechanism) { - std::vector error_list; + std::vector error_list; if (json.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "value should be of type object")); diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.h b/src/core/ext/filters/client_channel/lb_policy_factory.h index 9e4425fa447..a595c2710d0 100644 --- a/src/core/ext/filters/client_channel/lb_policy_factory.h +++ b/src/core/ext/filters/client_channel/lb_policy_factory.h @@ -39,7 +39,7 @@ class LoadBalancingPolicyFactory { virtual const char* name() const = 0; virtual RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error) const = 0; + const Json& json, grpc_error_handle* error) const = 0; }; } // namespace grpc_core diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.cc b/src/core/ext/filters/client_channel/lb_policy_registry.cc index d64a6434494..a3f03473a79 100644 --- a/src/core/ext/filters/client_channel/lb_policy_registry.cc +++ b/src/core/ext/filters/client_channel/lb_policy_registry.cc @@ -109,7 +109,7 @@ bool LoadBalancingPolicyRegistry::LoadBalancingPolicyExists( return false; } if (requires_config != nullptr) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // Check if the load balancing policy allows an empty config *requires_config = factory->ParseLoadBalancingConfig(Json(), &error) == nullptr; @@ -122,7 +122,7 @@ namespace { // Returns the JSON node of policy (with both policy name and config content) // given the JSON node of a LoadBalancingConfig array. -grpc_error* ParseLoadBalancingConfigHelper( +grpc_error_handle ParseLoadBalancingConfigHelper( const Json& lb_config_array, Json::Object::const_iterator* result) { if (lb_config_array.type() != Json::Type::ARRAY) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("type should be array"); @@ -163,8 +163,8 @@ grpc_error* ParseLoadBalancingConfigHelper( } // namespace RefCountedPtr -LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(const Json& json, - grpc_error** error) { +LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( + const Json& json, grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); GPR_ASSERT(g_state != nullptr); Json::Object::const_iterator policy; diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.h b/src/core/ext/filters/client_channel/lb_policy_registry.h index 8d2e3e395d5..aba44a8a705 100644 --- a/src/core/ext/filters/client_channel/lb_policy_registry.h +++ b/src/core/ext/filters/client_channel/lb_policy_registry.h @@ -57,7 +57,7 @@ class LoadBalancingPolicyRegistry { /// Returns a parsed object of the load balancing policy to be used from a /// LoadBalancingConfig array \a json. static RefCountedPtr ParseLoadBalancingConfig( - const Json& json, grpc_error** error); + const Json& json, grpc_error_handle* error); }; } // namespace grpc_core diff --git a/src/core/ext/filters/client_channel/resolver.h b/src/core/ext/filters/client_channel/resolver.h index bd556a60c9e..2ab74096fb0 100644 --- a/src/core/ext/filters/client_channel/resolver.h +++ b/src/core/ext/filters/client_channel/resolver.h @@ -55,7 +55,7 @@ class Resolver : public InternallyRefCounted { struct Result { ServerAddressList addresses; RefCountedPtr service_config; - grpc_error* service_config_error = GRPC_ERROR_NONE; + grpc_error_handle service_config_error = GRPC_ERROR_NONE; const grpc_channel_args* args = nullptr; // TODO(roth): Remove everything below once grpc_error and @@ -81,7 +81,7 @@ class Resolver : public InternallyRefCounted { /// Returns a transient error to the channel. /// If the resolver does not set the GRPC_ERROR_INT_GRPC_STATUS /// attribute on the error, calls will be failed with status UNKNOWN. - virtual void ReturnError(grpc_error* error) = 0; + virtual void ReturnError(grpc_error_handle error) = 0; // TODO(yashkt): As part of the service config error handling // changes, add a method to parse the service config JSON string. diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc index 922ac453df3..6d6c0c7e2e9 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc @@ -80,10 +80,10 @@ class AresDnsResolver : public Resolver { void MaybeStartResolvingLocked(); void StartResolvingLocked(); - static void OnNextResolution(void* arg, grpc_error* error); - static void OnResolved(void* arg, grpc_error* error); - void OnNextResolutionLocked(grpc_error* error); - void OnResolvedLocked(grpc_error* error); + static void OnNextResolution(void* arg, grpc_error_handle error); + static void OnResolved(void* arg, grpc_error_handle error); + void OnNextResolutionLocked(grpc_error_handle error); + void OnResolvedLocked(grpc_error_handle error); /// DNS server to use (if not system default) std::string dns_server_; @@ -193,14 +193,14 @@ void AresDnsResolver::ShutdownLocked() { } } -void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) { +void AresDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) { AresDnsResolver* r = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); }, DEBUG_LOCATION); } -void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) { +void AresDnsResolver::OnNextResolutionLocked(grpc_error_handle error) { GRPC_CARES_TRACE_LOG( "resolver:%p re-resolution timer fired. error: %s. shutdown_initiated_: " "%d", @@ -227,7 +227,7 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) { } std::string ChooseServiceConfig(char* service_config_choice_json, - grpc_error** error) { + grpc_error_handle* error) { Json json = Json::Parse(service_config_choice_json, error); if (*error != GRPC_ERROR_NONE) return ""; if (json.type() != Json::Type::ARRAY) { @@ -236,7 +236,7 @@ std::string ChooseServiceConfig(char* service_config_choice_json, return ""; } const Json* service_config = nullptr; - absl::InlinedVector error_list; + absl::InlinedVector error_list; for (const Json& choice : json.array_value()) { if (choice.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -305,14 +305,14 @@ std::string ChooseServiceConfig(char* service_config_choice_json, return service_config->Dump(); } -void AresDnsResolver::OnResolved(void* arg, grpc_error* error) { +void AresDnsResolver::OnResolved(void* arg, grpc_error_handle error) { AresDnsResolver* r = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); }, DEBUG_LOCATION); } -void AresDnsResolver::OnResolvedLocked(grpc_error* error) { +void AresDnsResolver::OnResolvedLocked(grpc_error_handle error) { GPR_ASSERT(resolving_); resolving_ = false; gpr_free(pending_request_); @@ -455,7 +455,7 @@ class AresDnsResolverFactory : public ResolverFactory { extern grpc_address_resolver_vtable* grpc_resolve_address_impl; static grpc_address_resolver_vtable* default_resolver; -static grpc_error* blocking_resolve_address_ares( +static grpc_error_handle blocking_resolve_address_ares( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { return default_resolver->blocking_resolve_address(name, default_port, @@ -490,7 +490,7 @@ void grpc_resolver_dns_ares_init() { g_use_ares_dns_resolver = true; gpr_log(GPR_DEBUG, "Using ares dns resolver"); address_sorting_init(); - grpc_error* error = grpc_ares_init(); + grpc_error_handle error = grpc_ares_init(); if (error != GRPC_ERROR_NONE) { GRPC_LOG_IF_ERROR("grpc_ares_init() failed", error); return; diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h index cc884864862..08069232b94 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h @@ -42,7 +42,7 @@ class GrpcPolledFd { virtual bool IsFdStillReadableLocked() = 0; /* Called once and only once. Must cause cancellation of any pending * read/write callbacks. */ - virtual void ShutdownLocked(grpc_error* error) = 0; + virtual void ShutdownLocked(grpc_error_handle error) = 0; /* Get the underlying ares_socket_t that this was created from */ virtual ares_socket_t GetWrappedAresSocketLocked() = 0; /* A unique name, for logging */ diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc index e5eea5c6a13..5c4c5350b23 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc @@ -75,7 +75,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd { return false; } - void ShutdownInternalLocked(grpc_error* error) { + void ShutdownInternalLocked(grpc_error_handle error) { uv_poll_stop(handle_); uv_close(reinterpret_cast(handle_), ares_uv_poll_close_cb); if (read_closure_ != nullptr) { @@ -88,7 +88,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd { } } - void ShutdownLocked(grpc_error* error) override { + void ShutdownLocked(grpc_error_handle error) override { if (grpc_core::ExecCtx::Get() == nullptr) { grpc_core::ExecCtx exec_ctx; ShutdownInternalLocked(error); @@ -127,7 +127,7 @@ static void ares_uv_poll_cb_locked(AresUvPollCbArg* arg) { int events = arg_struct->events; GrpcPolledFdLibuv* polled_fd = reinterpret_cast(handle->data); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (status < 0) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("cares polling error"); error = diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc index 07f38ba59ab..d7d9a853a21 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc @@ -72,7 +72,7 @@ class GrpcPolledFdPosix : public GrpcPolledFd { bytes_available > 0; } - void ShutdownLocked(grpc_error* error) override { + void ShutdownLocked(grpc_error_handle error) override { grpc_fd_shutdown(fd_, error); } diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc index 8d4a0cb210d..19240153685 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc @@ -131,12 +131,12 @@ class GrpcPolledFdWindows { grpc_winsocket_destroy(winsocket_); } - void ScheduleAndNullReadClosure(grpc_error* error) { + void ScheduleAndNullReadClosure(grpc_error_handle error) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, read_closure_, error); read_closure_ = nullptr; } - void ScheduleAndNullWriteClosure(grpc_error* error) { + void ScheduleAndNullWriteClosure(grpc_error_handle error) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, write_closure_, error); write_closure_ = nullptr; } @@ -253,7 +253,7 @@ class GrpcPolledFdWindows { bool IsFdStillReadableLocked() { return read_buf_has_data_; } - void ShutdownLocked(grpc_error* error) { + void ShutdownLocked(grpc_error_handle error) { grpc_winsocket_shutdown(winsocket_); } @@ -420,7 +420,7 @@ class GrpcPolledFdWindows { abort(); } - static void OnTcpConnect(void* arg, grpc_error* error) { + static void OnTcpConnect(void* arg, grpc_error_handle error) { GrpcPolledFdWindows* grpc_polled_fd = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda @@ -431,7 +431,7 @@ class GrpcPolledFdWindows { DEBUG_LOCATION); } - void OnTcpConnectLocked(grpc_error* error) { + void OnTcpConnectLocked(grpc_error_handle error) { GRPC_CARES_TRACE_LOG( "fd:%s InnerOnTcpConnectLocked error:|%s| " "pending_register_for_readable:%d" @@ -576,7 +576,7 @@ class GrpcPolledFdWindows { return out; } - static void OnIocpReadable(void* arg, grpc_error* error) { + static void OnIocpReadable(void* arg, grpc_error_handle error) { GrpcPolledFdWindows* polled_fd = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda polled_fd->work_serializer_->Run( @@ -589,7 +589,7 @@ class GrpcPolledFdWindows { // c-ares reads from this socket later, but it shouldn't necessarily cancel // the entire resolution attempt. Doing so will allow the "inject broken // nameserver list" test to pass on Windows. - void OnIocpReadableLocked(grpc_error* error) { + void OnIocpReadableLocked(grpc_error_handle error) { if (error == GRPC_ERROR_NONE) { if (winsocket_->read_info.wsa_error != 0) { /* WSAEMSGSIZE would be due to receiving more data @@ -621,7 +621,7 @@ class GrpcPolledFdWindows { ScheduleAndNullReadClosure(error); } - static void OnIocpWriteable(void* arg, grpc_error* error) { + static void OnIocpWriteable(void* arg, grpc_error_handle error) { GrpcPolledFdWindows* polled_fd = static_cast(arg); GRPC_ERROR_REF(error); // error owned by lambda polled_fd->work_serializer_->Run( @@ -629,7 +629,7 @@ class GrpcPolledFdWindows { DEBUG_LOCATION); } - void OnIocpWriteableLocked(grpc_error* error) { + void OnIocpWriteableLocked(grpc_error_handle error) { GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName()); GPR_ASSERT(socket_type_ == SOCK_STREAM); if (error == GRPC_ERROR_NONE) { @@ -851,7 +851,7 @@ class GrpcPolledFdWindowsWrapper : public GrpcPolledFd { return wrapped_->IsFdStillReadableLocked(); } - void ShutdownLocked(grpc_error* error) override { + void ShutdownLocked(grpc_error_handle error) override { wrapped_->ShutdownLocked(error); } diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc index fa3249efa55..66d47e36a62 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -77,7 +77,7 @@ struct grpc_ares_request { size_t pending_queries; /** the errors explaining query failures, appended to in query callbacks */ - grpc_error* error; + grpc_error_handle error; }; typedef struct fd_node { @@ -268,7 +268,8 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms( grpc_core::ExecCtx::Get()->Now(); } -static void on_timeout_locked(grpc_ares_ev_driver* driver, grpc_error* error) { +static void on_timeout_locked(grpc_ares_ev_driver* driver, + grpc_error_handle error) { GRPC_CARES_TRACE_LOG( "request:%p ev_driver=%p on_timeout_locked. driver->shutting_down=%d. " "err=%s", @@ -280,7 +281,7 @@ static void on_timeout_locked(grpc_ares_ev_driver* driver, grpc_error* error) { GRPC_ERROR_UNREF(error); } -static void on_timeout(void* arg, grpc_error* error) { +static void on_timeout(void* arg, grpc_error_handle error) { grpc_ares_ev_driver* driver = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda driver->work_serializer->Run( @@ -290,9 +291,9 @@ static void on_timeout(void* arg, grpc_error* error) { static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver); static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver, - grpc_error* error); + grpc_error_handle error); -static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) { +static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) { grpc_ares_ev_driver* driver = static_cast(arg); GRPC_ERROR_REF(error); driver->work_serializer->Run( @@ -309,7 +310,7 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) { * For the latter, we use this backup poller. Also see * https://github.com/grpc/grpc/pull/17688 description for more details. */ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver, - grpc_error* error) { + grpc_error_handle error) { GRPC_CARES_TRACE_LOG( "request:%p ev_driver=%p on_ares_backup_poll_alarm_locked. " "driver->shutting_down=%d. " @@ -345,7 +346,7 @@ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver, GRPC_ERROR_UNREF(error); } -static void on_readable_locked(fd_node* fdn, grpc_error* error) { +static void on_readable_locked(fd_node* fdn, grpc_error_handle error) { GPR_ASSERT(fdn->readable_registered); grpc_ares_ev_driver* ev_driver = fdn->ev_driver; const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked(); @@ -370,14 +371,14 @@ static void on_readable_locked(fd_node* fdn, grpc_error* error) { GRPC_ERROR_UNREF(error); } -static void on_readable(void* arg, grpc_error* error) { +static void on_readable(void* arg, grpc_error_handle error) { fd_node* fdn = static_cast(arg); GRPC_ERROR_REF(error); /* ref owned by lambda */ fdn->ev_driver->work_serializer->Run( [fdn, error]() { on_readable_locked(fdn, error); }, DEBUG_LOCATION); } -static void on_writable_locked(fd_node* fdn, grpc_error* error) { +static void on_writable_locked(fd_node* fdn, grpc_error_handle error) { GPR_ASSERT(fdn->writable_registered); grpc_ares_ev_driver* ev_driver = fdn->ev_driver; const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked(); @@ -400,7 +401,7 @@ static void on_writable_locked(fd_node* fdn, grpc_error* error) { GRPC_ERROR_UNREF(error); } -static void on_writable(void* arg, grpc_error* error) { +static void on_writable(void* arg, grpc_error_handle error) { fd_node* fdn = static_cast(arg); GRPC_ERROR_REF(error); /* ref owned by lambda */ fdn->ev_driver->work_serializer->Run( @@ -516,7 +517,7 @@ static void noop_inject_channel_config(ares_channel /*channel*/) {} void (*grpc_ares_test_only_inject_config)(ares_channel channel) = noop_inject_channel_config; -grpc_error* grpc_ares_ev_driver_create_locked( +grpc_error_handle grpc_ares_ev_driver_create_locked( grpc_ares_ev_driver** ev_driver, grpc_pollset_set* pollset_set, int query_timeout_ms, std::shared_ptr work_serializer, @@ -529,7 +530,7 @@ grpc_error* grpc_ares_ev_driver_create_locked( grpc_ares_test_only_inject_config((*ev_driver)->channel); GRPC_CARES_TRACE_LOG("request:%p grpc_ares_ev_driver_create_locked", request); if (status != ARES_SUCCESS) { - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("Failed to init ares channel. C-ares error: ", ares_strerror(status)) .c_str()); @@ -713,7 +714,8 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/, hr->qtype, hr->host, hr->is_balancer, ares_strerror(status)); GRPC_CARES_TRACE_LOG("request:%p on_hostbyname_done_locked: %s", r, error_msg.c_str()); - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str()); + grpc_error_handle error = + GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str()); r->error = grpc_error_add_child(error, r->error); } destroy_hostbyname_request_locked(hr); @@ -757,7 +759,8 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/, ares_strerror(status)); GRPC_CARES_TRACE_LOG("request:%p on_srv_query_done_locked: %s", r, error_msg.c_str()); - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str()); + grpc_error_handle error = + GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str()); r->error = grpc_error_add_child(error, r->error); } delete q; @@ -773,7 +776,7 @@ static void on_txt_done_locked(void* arg, int status, int /*timeouts*/, const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1; struct ares_txt_ext* result = nullptr; struct ares_txt_ext* reply = nullptr; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (status != ARES_SUCCESS) goto fail; GRPC_CARES_TRACE_LOG("request:%p on_txt_done_locked name=%s ARES_SUCCESS", r, q->name().c_str()); @@ -825,7 +828,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked( const char* default_port, grpc_pollset_set* interested_parties, int query_timeout_ms, std::shared_ptr work_serializer) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_ares_hostbyname_request* hr = nullptr; /* parse name, splitting it into host and port parts */ std::string host; @@ -1116,7 +1119,7 @@ void (*grpc_cancel_ares_request_locked)(grpc_ares_request* r) = // Windows. Calling them may cause race conditions when other parts of the // binary calls these functions concurrently. #ifdef GPR_WINDOWS -grpc_error* grpc_ares_init(void) { +grpc_error_handle grpc_ares_init(void) { int status = ares_library_init(ARES_LIB_INIT_ALL); if (status != ARES_SUCCESS) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -1128,7 +1131,7 @@ grpc_error* grpc_ares_init(void) { void grpc_ares_cleanup(void) { ares_library_cleanup(); } #else -grpc_error* grpc_ares_init(void) { return GRPC_ERROR_NONE; } +grpc_error_handle grpc_ares_init(void) { return GRPC_ERROR_NONE; } void grpc_ares_cleanup(void) {} #endif // GPR_WINDOWS @@ -1159,7 +1162,7 @@ typedef struct grpc_resolve_address_ares_request { } grpc_resolve_address_ares_request; static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r, - grpc_error* error) { + grpc_error_handle error) { gpr_free(r->ares_request); grpc_resolved_addresses** resolved_addresses = r->addrs_out; if (r->addresses == nullptr || r->addresses->empty()) { @@ -1180,7 +1183,7 @@ static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r, delete r; } -static void on_dns_lookup_done(void* arg, grpc_error* error) { +static void on_dns_lookup_done(void* arg, grpc_error_handle error) { grpc_resolve_address_ares_request* r = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h index 6c29bb68a47..675dfc8e961 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h @@ -76,7 +76,7 @@ extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request); /* Initialize gRPC ares wrapper. Must be called at least once before grpc_resolve_address_ares(). */ -grpc_error* grpc_ares_init(void); +grpc_error_handle grpc_ares_init(void); /* Uninitialized gRPC ares wrapper. If there was more than one previous call to grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if diff --git a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc index e5ebd11ca2d..e8195eb1814 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc @@ -68,10 +68,10 @@ class NativeDnsResolver : public Resolver { void MaybeStartResolvingLocked(); void StartResolvingLocked(); - static void OnNextResolution(void* arg, grpc_error* error); - void OnNextResolutionLocked(grpc_error* error); - static void OnResolved(void* arg, grpc_error* error); - void OnResolvedLocked(grpc_error* error); + static void OnNextResolution(void* arg, grpc_error_handle error); + void OnNextResolutionLocked(grpc_error_handle error); + static void OnResolved(void* arg, grpc_error_handle error); + void OnResolvedLocked(grpc_error_handle error); /// name to resolve std::string name_to_resolve_; @@ -148,14 +148,14 @@ void NativeDnsResolver::ShutdownLocked() { } } -void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) { +void NativeDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) { NativeDnsResolver* r = static_cast(arg); GRPC_ERROR_REF(error); // ref owned by lambda r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); }, DEBUG_LOCATION); } -void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) { +void NativeDnsResolver::OnNextResolutionLocked(grpc_error_handle error) { have_next_resolution_timer_ = false; if (error == GRPC_ERROR_NONE && !resolving_) { StartResolvingLocked(); @@ -164,14 +164,14 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) { GRPC_ERROR_UNREF(error); } -void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) { +void NativeDnsResolver::OnResolved(void* arg, grpc_error_handle error) { NativeDnsResolver* r = static_cast(arg); GRPC_ERROR_REF(error); // owned by lambda r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); }, DEBUG_LOCATION); } -void NativeDnsResolver::OnResolvedLocked(grpc_error* error) { +void NativeDnsResolver::OnResolvedLocked(grpc_error_handle error) { GPR_ASSERT(resolving_); resolving_ = false; if (shutdown_) { diff --git a/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc b/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc index 3488ebc5922..07865f6d862 100644 --- a/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc @@ -48,15 +48,15 @@ class GoogleCloud2ProdResolver : public Resolver { void Orphan() override; private: - static void OnHttpRequestDone(void* arg, grpc_error* error); + static void OnHttpRequestDone(void* arg, grpc_error_handle error); // Calls OnDone() if not already called. Releases a ref. - void MaybeCallOnDone(grpc_error* error); + void MaybeCallOnDone(grpc_error_handle error); // If error is not GRPC_ERROR_NONE, then it's not safe to look at response. virtual void OnDone(GoogleCloud2ProdResolver* resolver, const grpc_http_response* response, - grpc_error* error) = 0; + grpc_error_handle error) = 0; RefCountedPtr resolver_; grpc_httpcli_context context_; @@ -73,7 +73,8 @@ class GoogleCloud2ProdResolver : public Resolver { private: void OnDone(GoogleCloud2ProdResolver* resolver, - const grpc_http_response* response, grpc_error* error) override; + const grpc_http_response* response, + grpc_error_handle error) override; }; // A metadata server query to get the IPv6 address. @@ -84,7 +85,8 @@ class GoogleCloud2ProdResolver : public Resolver { private: void OnDone(GoogleCloud2ProdResolver* resolver, - const grpc_http_response* response, grpc_error* error) override; + const grpc_http_response* response, + grpc_error_handle error) override; }; void ZoneQueryDone(std::string zone); @@ -143,13 +145,13 @@ void GoogleCloud2ProdResolver::MetadataQuery::Orphan() { } void GoogleCloud2ProdResolver::MetadataQuery::OnHttpRequestDone( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { auto* self = static_cast(arg); self->MaybeCallOnDone(GRPC_ERROR_REF(error)); } void GoogleCloud2ProdResolver::MetadataQuery::MaybeCallOnDone( - grpc_error* error) { + grpc_error_handle error) { bool expected = false; if (!on_done_called_.CompareExchangeStrong( &expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) { @@ -180,7 +182,7 @@ GoogleCloud2ProdResolver::ZoneQuery::ZoneQuery( void GoogleCloud2ProdResolver::ZoneQuery::OnDone( GoogleCloud2ProdResolver* resolver, const grpc_http_response* response, - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "error fetching zone from metadata server: %s", grpc_error_string(error)); @@ -213,7 +215,7 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query( void GoogleCloud2ProdResolver::IPv6Query::OnDone( GoogleCloud2ProdResolver* resolver, const grpc_http_response* response, - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s", grpc_error_string(error)); diff --git a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc index 66892aa8eb5..2df770bf60e 100644 --- a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc @@ -83,14 +83,14 @@ class XdsResolver : public Resolver { public: Notifier(RefCountedPtr resolver, XdsApi::LdsUpdate update); Notifier(RefCountedPtr resolver, XdsApi::RdsUpdate update); - Notifier(RefCountedPtr resolver, grpc_error* error); + Notifier(RefCountedPtr resolver, grpc_error_handle error); explicit Notifier(RefCountedPtr resolver); private: enum Type { kLdsUpdate, kRdsUpdate, kError, kDoesNotExist }; - static void RunInExecCtx(void* arg, grpc_error* error); - void RunInWorkSerializer(grpc_error* error); + static void RunInExecCtx(void* arg, grpc_error_handle error); + void RunInWorkSerializer(grpc_error_handle error); RefCountedPtr resolver_; grpc_closure closure_; @@ -105,7 +105,9 @@ class XdsResolver : public Resolver { void OnListenerChanged(XdsApi::LdsUpdate listener) override { new Notifier(resolver_, std::move(listener)); } - void OnError(grpc_error* error) override { new Notifier(resolver_, error); } + void OnError(grpc_error_handle error) override { + new Notifier(resolver_, error); + } void OnResourceDoesNotExist() override { new Notifier(resolver_); } private: @@ -119,7 +121,9 @@ class XdsResolver : public Resolver { void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) override { new Notifier(resolver_, std::move(route_config)); } - void OnError(grpc_error* error) override { new Notifier(resolver_, error); } + void OnError(grpc_error_handle error) override { + new Notifier(resolver_, error); + } void OnResourceDoesNotExist() override { new Notifier(resolver_); } private: @@ -145,7 +149,8 @@ class XdsResolver : public Resolver { class XdsConfigSelector : public ConfigSelector { public: - XdsConfigSelector(RefCountedPtr resolver, grpc_error** error); + XdsConfigSelector(RefCountedPtr resolver, + grpc_error_handle* error); ~XdsConfigSelector() override; const char* name() const override { return "XdsConfigSelector"; } @@ -184,7 +189,7 @@ class XdsResolver : public Resolver { using RouteTable = std::vector; void MaybeAddCluster(const std::string& name); - grpc_error* CreateMethodConfig( + grpc_error_handle CreateMethodConfig( const XdsApi::Route& route, const XdsApi::Route::ClusterWeight* cluster_weight, RefCountedPtr* method_config); @@ -193,15 +198,16 @@ class XdsResolver : public Resolver { RouteTable route_table_; std::map> clusters_; std::vector filters_; - grpc_error* filter_error_ = GRPC_ERROR_NONE; + grpc_error_handle filter_error_ = GRPC_ERROR_NONE; }; void OnListenerUpdate(XdsApi::LdsUpdate listener); void OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update); - void OnError(grpc_error* error); + void OnError(grpc_error_handle error); void OnResourceDoesNotExist(); - grpc_error* CreateServiceConfig(RefCountedPtr* service_config); + grpc_error_handle CreateServiceConfig( + RefCountedPtr* service_config); void GenerateResult(); void MaybeRemoveUnusedClusters(); @@ -248,7 +254,7 @@ XdsResolver::Notifier::Notifier(RefCountedPtr resolver, } XdsResolver::Notifier::Notifier(RefCountedPtr resolver, - grpc_error* error) + grpc_error_handle error) : resolver_(std::move(resolver)), type_(kError) { GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr); ExecCtx::Run(DEBUG_LOCATION, &closure_, error); @@ -260,14 +266,14 @@ XdsResolver::Notifier::Notifier(RefCountedPtr resolver) ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE); } -void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error* error) { +void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error_handle error) { Notifier* self = static_cast(arg); GRPC_ERROR_REF(error); self->resolver_->work_serializer_->Run( [self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION); } -void XdsResolver::Notifier::RunInWorkSerializer(grpc_error* error) { +void XdsResolver::Notifier::RunInWorkSerializer(grpc_error_handle error) { if (resolver_->xds_client_ == nullptr) { GRPC_ERROR_UNREF(error); delete this; @@ -319,7 +325,7 @@ bool XdsResolver::XdsConfigSelector::Route::operator==( // XdsResolver::XdsConfigSelector::XdsConfigSelector( - RefCountedPtr resolver, grpc_error** error) + RefCountedPtr resolver, grpc_error_handle* error) : resolver_(std::move(resolver)) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) { gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p", @@ -430,7 +436,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride( return nullptr; } -grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig( +grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig( const XdsApi::Route& route, const XdsApi::Route::ClusterWeight* cluster_weight, RefCountedPtr* method_config) { @@ -487,7 +493,7 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig( "\n ]")); } // Construct service config. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (!fields.empty()) { std::string json = absl::StrCat( "{\n" @@ -689,7 +695,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( // the data plane mutex. DEBUG_LOCATION, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { auto* resolver = static_cast(arg); resolver->work_serializer_->Run( [resolver]() { @@ -711,7 +717,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( // void XdsResolver::StartLocked() { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; xds_client_ = XdsClient::GetOrCreate(args_, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, @@ -814,7 +820,7 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) { GenerateResult(); } -void XdsResolver::OnError(grpc_error* error) { +void XdsResolver::OnError(grpc_error_handle error) { gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s", this, grpc_error_string(error)); Result result; @@ -837,7 +843,7 @@ void XdsResolver::OnResourceDoesNotExist() { result_handler_->ReturnResult(std::move(result)); } -grpc_error* XdsResolver::CreateServiceConfig( +grpc_error_handle XdsResolver::CreateServiceConfig( RefCountedPtr* service_config) { std::vector clusters; for (const auto& cluster : cluster_state_map_) { @@ -864,7 +870,7 @@ grpc_error* XdsResolver::CreateServiceConfig( " ]\n" "}"); std::string json = absl::StrJoin(config_parts, ""); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; *service_config = ServiceConfig::Create(args_, json.c_str(), &error); return error; } @@ -873,7 +879,7 @@ void XdsResolver::GenerateResult() { if (current_virtual_host_.routes.empty()) return; // First create XdsConfigSelector, which may add new entries to the cluster // state map, and then CreateServiceConfig for LB policies. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto config_selector = MakeRefCounted(Ref(), &error); if (error != GRPC_ERROR_NONE) { OnError(error); diff --git a/src/core/ext/filters/client_channel/resolver_result_parsing.cc b/src/core/ext/filters/client_channel/resolver_result_parsing.cc index 96aff1400ac..b0c8eebe59b 100644 --- a/src/core/ext/filters/client_channel/resolver_result_parsing.cc +++ b/src/core/ext/filters/client_channel/resolver_result_parsing.cc @@ -62,14 +62,14 @@ void ClientChannelServiceConfigParser::Register() { namespace { absl::optional ParseHealthCheckConfig(const Json& field, - grpc_error** error) { + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); if (field.type() != Json::Type::OBJECT) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:healthCheckConfig error:should be of type object"); return absl::nullopt; } - std::vector error_list; + std::vector error_list; absl::optional service_name; auto it = field.object_value().find("serviceName"); if (it != field.object_value().end()) { @@ -89,18 +89,19 @@ absl::optional ParseHealthCheckConfig(const Json& field, std::unique_ptr ClientChannelServiceConfigParser::ParseGlobalParams( - const grpc_channel_args* /*args*/, const Json& json, grpc_error** error) { + const grpc_channel_args* /*args*/, const Json& json, + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); - std::vector error_list; + std::vector error_list; // Parse LB config. RefCountedPtr parsed_lb_config; auto it = json.object_value().find("loadBalancingConfig"); if (it != json.object_value().end()) { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; parsed_lb_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig( it->second, &parse_error); if (parsed_lb_config == nullptr) { - std::vector lb_errors; + std::vector lb_errors; lb_errors.push_back(parse_error); error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( "field:loadBalancingConfig", &lb_errors)); @@ -136,7 +137,7 @@ ClientChannelServiceConfigParser::ParseGlobalParams( absl::optional health_check_service_name; it = json.object_value().find("healthCheckConfig"); if (it != json.object_value().end()) { - grpc_error* parsing_error = GRPC_ERROR_NONE; + grpc_error_handle parsing_error = GRPC_ERROR_NONE; health_check_service_name = ParseHealthCheckConfig(it->second, &parsing_error); if (parsing_error != GRPC_ERROR_NONE) { @@ -155,9 +156,10 @@ ClientChannelServiceConfigParser::ParseGlobalParams( std::unique_ptr ClientChannelServiceConfigParser::ParsePerMethodParams( - const grpc_channel_args* /*args*/, const Json& json, grpc_error** error) { + const grpc_channel_args* /*args*/, const Json& json, + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); - std::vector error_list; + std::vector error_list; // Parse waitForReady. absl::optional wait_for_ready; auto it = json.object_value().find("waitForReady"); diff --git a/src/core/ext/filters/client_channel/resolver_result_parsing.h b/src/core/ext/filters/client_channel/resolver_result_parsing.h index 98b1f3e7c36..b70068e0017 100644 --- a/src/core/ext/filters/client_channel/resolver_result_parsing.h +++ b/src/core/ext/filters/client_channel/resolver_result_parsing.h @@ -83,11 +83,11 @@ class ClientChannelServiceConfigParser : public ServiceConfigParser::Parser { public: std::unique_ptr ParseGlobalParams( const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; std::unique_ptr ParsePerMethodParams( const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; static size_t ParserIndex(); static void Register(); diff --git a/src/core/ext/filters/client_channel/retry_filter.cc b/src/core/ext/filters/client_channel/retry_filter.cc index 13f06707f0f..02774f4f17c 100644 --- a/src/core/ext/filters/client_channel/retry_filter.cc +++ b/src/core/ext/filters/client_channel/retry_filter.cc @@ -119,11 +119,11 @@ class RetryFilter { public: class CallData; - static grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args) { + static grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args) { GPR_ASSERT(args->is_last); GPR_ASSERT(elem->filter == &kRetryFilterVtable); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; new (elem->channel_data) RetryFilter(args->channel_args, &error); return error; } @@ -146,7 +146,7 @@ class RetryFilter { {DEFAULT_PER_RPC_RETRY_BUFFER_SIZE, 0, INT_MAX})); } - RetryFilter(const grpc_channel_args* args, grpc_error** error) + RetryFilter(const grpc_channel_args* args, grpc_error_handle* error) : client_channel_(grpc_channel_args_find_pointer( args, GRPC_ARG_CLIENT_CHANNEL)), per_rpc_retry_buffer_size_(GetMaxPerRpcRetryBufferSize(args)) { @@ -190,8 +190,8 @@ class RetryFilter { class RetryFilter::CallData { public: - static grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args); + static grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args); static void Destroy(grpc_call_element* elem, const grpc_call_final_info* /*final_info*/, grpc_closure* then_schedule_closure); @@ -268,20 +268,20 @@ class RetryFilter::CallData { // Invokes recv_initial_metadata_ready for a batch. static void InvokeRecvInitialMetadataCallback(void* arg, - grpc_error* error); + grpc_error_handle error); // Intercepts recv_initial_metadata_ready callback for retries. // Commits the call and returns the initial metadata up the stack. - static void RecvInitialMetadataReady(void* arg, grpc_error* error); + static void RecvInitialMetadataReady(void* arg, grpc_error_handle error); // Invokes recv_message_ready for a batch. - static void InvokeRecvMessageCallback(void* arg, grpc_error* error); + static void InvokeRecvMessageCallback(void* arg, grpc_error_handle error); // Intercepts recv_message_ready callback for retries. // Commits the call and returns the message up the stack. - static void RecvMessageReady(void* arg, grpc_error* error); + static void RecvMessageReady(void* arg, grpc_error_handle error); // Adds recv_trailing_metadata_ready closure to closures. void AddClosureForRecvTrailingMetadataReady( - grpc_error* error, CallCombinerClosureList* closures); + grpc_error_handle error, CallCombinerClosureList* closures); // Adds any necessary closures for deferred recv_initial_metadata and // recv_message callbacks to closures. void AddClosuresForDeferredRecvCallbacks( @@ -289,17 +289,17 @@ class RetryFilter::CallData { // For any pending batch containing an op that has not yet been started, // adds the pending batch's completion closures to closures. void AddClosuresToFailUnstartedPendingBatches( - grpc_error* error, CallCombinerClosureList* closures); + grpc_error_handle error, CallCombinerClosureList* closures); // Runs necessary closures upon completion of a call attempt. - void RunClosuresForCompletedCall(grpc_error* error); + void RunClosuresForCompletedCall(grpc_error_handle error); // Intercepts recv_trailing_metadata_ready callback for retries. // Commits the call and returns the trailing metadata up the stack. - static void RecvTrailingMetadataReady(void* arg, grpc_error* error); + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); // Adds the on_complete closure for the pending batch completed in // batch_data to closures. void AddClosuresForCompletedPendingBatch( - grpc_error* error, CallCombinerClosureList* closures); + grpc_error_handle error, CallCombinerClosureList* closures); // If there are any cached ops to replay or pending ops to start on the // LB call, adds them to closures. @@ -307,7 +307,7 @@ class RetryFilter::CallData { CallCombinerClosureList* closures); // Callback used to intercept on_complete from LB calls. - static void OnComplete(void* arg, grpc_error* error); + static void OnComplete(void* arg, grpc_error_handle error); RefCountedPtr call_attempt_; // The batch to use in the LB call. @@ -390,9 +390,9 @@ class RetryFilter::CallData { bool completed_recv_trailing_metadata_ : 1; // State for callback processing. BatchData* recv_initial_metadata_ready_deferred_batch_ = nullptr; - grpc_error* recv_initial_metadata_error_ = GRPC_ERROR_NONE; + grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE; BatchData* recv_message_ready_deferred_batch_ = nullptr; - grpc_error* recv_message_error_ = GRPC_ERROR_NONE; + grpc_error_handle recv_message_error_ = GRPC_ERROR_NONE; BatchData* recv_trailing_metadata_internal_batch_ = nullptr; // NOTE: Do not move this next to the metadata bitfields above. That would // save space but will also result in a data race because compiler @@ -411,9 +411,10 @@ class RetryFilter::CallData { PendingBatch* PendingBatchesAdd(grpc_transport_stream_op_batch* batch); void PendingBatchClear(PendingBatch* pending); void MaybeClearPendingBatch(PendingBatch* pending); - static void FailPendingBatchInCallCombiner(void* arg, grpc_error* error); + static void FailPendingBatchInCallCombiner(void* arg, + grpc_error_handle error); // Fails all pending batches. Does NOT yield call combiner. - void PendingBatchesFail(grpc_error* error); + void PendingBatchesFail(grpc_error_handle error); // Returns a pointer to the first pending batch for which predicate(batch) // returns true, or null if not found. template @@ -433,7 +434,7 @@ class RetryFilter::CallData { // Starts a retry after appropriate back-off. void DoRetry(grpc_millis server_pushback_ms); - static void OnRetryTimer(void* arg, grpc_error* error); + static void OnRetryTimer(void* arg, grpc_error_handle error); RefCountedPtr CreateLoadBalancedCall(); @@ -572,7 +573,8 @@ class RetryFilter::CallData::CallStackDestructionBarrier } private: - static void OnLbCallDestructionComplete(void* arg, grpc_error* /*error*/) { + static void OnLbCallDestructionComplete(void* arg, + grpc_error_handle /*error*/) { auto* self = static_cast(arg); self->Unref(); } @@ -593,7 +595,7 @@ class RetryFilter::CallData::Canceller { } private: - static void Cancel(void* arg, grpc_error* error) { + static void Cancel(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); auto* calld = self->calld_; { @@ -1065,7 +1067,7 @@ bool RetryFilter::CallData::CallAttempt::BatchData::MaybeRetry( // void RetryFilter::CallData::CallAttempt::BatchData:: - InvokeRecvInitialMetadataCallback(void* arg, grpc_error* error) { + InvokeRecvInitialMetadataCallback(void* arg, grpc_error_handle error) { auto* batch_data = static_cast(arg); auto* call_attempt = batch_data->call_attempt_.get(); // Find pending batch. @@ -1097,7 +1099,7 @@ void RetryFilter::CallData::CallAttempt::BatchData:: } void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { CallAttempt::BatchData* batch_data = static_cast(arg); CallAttempt* call_attempt = batch_data->call_attempt_.get(); @@ -1156,7 +1158,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady( // void RetryFilter::CallData::CallAttempt::BatchData::InvokeRecvMessageCallback( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { CallAttempt::BatchData* batch_data = static_cast(arg); CallAttempt* call_attempt = batch_data->call_attempt_.get(); @@ -1185,7 +1187,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::InvokeRecvMessageCallback( } void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { CallAttempt::BatchData* batch_data = static_cast(arg); CallAttempt* call_attempt = batch_data->call_attempt_.get(); @@ -1245,7 +1247,7 @@ namespace { // Sets *status, *server_pushback_md, and *is_lb_drop based on md_batch // and error. void GetCallStatus(grpc_millis deadline, grpc_metadata_batch* md_batch, - grpc_error* error, grpc_status_code* status, + grpc_error_handle error, grpc_status_code* status, grpc_mdelem** server_pushback_md, bool* is_lb_drop) { if (error != GRPC_ERROR_NONE) { grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr); @@ -1268,7 +1270,7 @@ void GetCallStatus(grpc_millis deadline, grpc_metadata_batch* md_batch, } // namespace void RetryFilter::CallData::CallAttempt::BatchData:: - AddClosureForRecvTrailingMetadataReady(grpc_error* error, + AddClosureForRecvTrailingMetadataReady(grpc_error_handle error, CallCombinerClosureList* closures) { auto* calld = call_attempt_->calld_; // Find pending batch. @@ -1333,7 +1335,7 @@ void RetryFilter::CallData::CallAttempt::BatchData:: void RetryFilter::CallData::CallAttempt::BatchData:: AddClosuresToFailUnstartedPendingBatches( - grpc_error* error, CallCombinerClosureList* closures) { + grpc_error_handle error, CallCombinerClosureList* closures) { auto* calld = call_attempt_->calld_; for (size_t i = 0; i < GPR_ARRAY_SIZE(calld->pending_batches_); ++i) { PendingBatch* pending = &calld->pending_batches_[i]; @@ -1354,7 +1356,7 @@ void RetryFilter::CallData::CallAttempt::BatchData:: } void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall( - grpc_error* error) { + grpc_error_handle error) { // Construct list of closures to execute. CallCombinerClosureList closures; // First, add closure for recv_trailing_metadata_ready. @@ -1373,7 +1375,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall( } void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { CallAttempt::BatchData* batch_data = static_cast(arg); CallAttempt* call_attempt = batch_data->call_attempt_.get(); @@ -1423,7 +1425,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady( // void RetryFilter::CallData::CallAttempt::BatchData:: - AddClosuresForCompletedPendingBatch(grpc_error* error, + AddClosuresForCompletedPendingBatch(grpc_error_handle error, CallCombinerClosureList* closures) { auto* calld = call_attempt_->calld_; PendingBatch* pending = calld->PendingBatchFind( @@ -1482,7 +1484,7 @@ void RetryFilter::CallData::CallAttempt::BatchData:: } void RetryFilter::CallData::CallAttempt::BatchData::OnComplete( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { CallAttempt::BatchData* batch_data = static_cast(arg); CallAttempt* call_attempt = batch_data->call_attempt_.get(); @@ -1571,7 +1573,7 @@ void RetryFilter::CallData::CallAttempt::BatchData:: grpc_mdelem retry_md = grpc_mdelem_create( GRPC_MDSTR_GRPC_PREVIOUS_RPC_ATTEMPTS, *retry_count_strings[calld->num_attempts_completed_ - 1], nullptr); - grpc_error* error = grpc_metadata_batch_add_tail( + grpc_error_handle error = grpc_metadata_batch_add_tail( &call_attempt_->send_initial_metadata_, &call_attempt_->send_initial_metadata_storage_ [calld->send_initial_metadata_.list.count], @@ -1672,8 +1674,8 @@ void RetryFilter::CallData::CallAttempt::BatchData:: // CallData vtable functions // -grpc_error* RetryFilter::CallData::Init(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle RetryFilter::CallData::Init( + grpc_call_element* elem, const grpc_call_element_args* args) { auto* chand = static_cast(elem->channel_data); new (elem->call_data) CallData(chand, *args); if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) { @@ -1775,7 +1777,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch( } // Handle cancellation. if (GPR_UNLIKELY(batch->cancel_stream)) { - grpc_error* cancel_error = batch->payload->cancel_stream.cancel_error; + grpc_error_handle cancel_error = batch->payload->cancel_stream.cancel_error; if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) { gpr_log(GPR_INFO, "chand=%p calld=%p: cancelled from surface: %s", chand_, this, grpc_error_string(cancel_error)); @@ -1854,7 +1856,7 @@ void RetryFilter::CallData::CreateCallAttempt() { namespace { -void StartBatchInCallCombiner(void* arg, grpc_error* /*ignored*/) { +void StartBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) { grpc_transport_stream_op_batch* batch = static_cast(arg); auto* lb_call = static_cast( @@ -2050,8 +2052,8 @@ void RetryFilter::CallData::MaybeClearPendingBatch(PendingBatch* pending) { } // This is called via the call combiner, so access to calld is synchronized. -void RetryFilter::CallData::FailPendingBatchInCallCombiner(void* arg, - grpc_error* error) { +void RetryFilter::CallData::FailPendingBatchInCallCombiner( + void* arg, grpc_error_handle error) { grpc_transport_stream_op_batch* batch = static_cast(arg); CallData* call = static_cast(batch->handler_private.extra_arg); @@ -2061,7 +2063,7 @@ void RetryFilter::CallData::FailPendingBatchInCallCombiner(void* arg, } // This is called via the call combiner, so access to calld is synchronized. -void RetryFilter::CallData::PendingBatchesFail(grpc_error* error) { +void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) { GPR_ASSERT(error != GRPC_ERROR_NONE); if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) { size_t num_batches = 0; @@ -2150,7 +2152,7 @@ void RetryFilter::CallData::DoRetry(grpc_millis server_pushback_ms) { grpc_timer_init(&retry_timer_, next_attempt_time, &retry_closure_); } -void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error* error) { +void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error_handle error) { auto* calld = static_cast(arg); if (error == GRPC_ERROR_NONE) { bool start_attempt = false; diff --git a/src/core/ext/filters/client_channel/retry_service_config.cc b/src/core/ext/filters/client_channel/retry_service_config.cc index f2a2e5e2d88..fc066e639c4 100644 --- a/src/core/ext/filters/client_channel/retry_service_config.cc +++ b/src/core/ext/filters/client_channel/retry_service_config.cc @@ -60,13 +60,14 @@ void RetryServiceConfigParser::Register() { namespace { -grpc_error* ParseRetryThrottling(const Json& json, intptr_t* max_milli_tokens, - intptr_t* milli_token_ratio) { +grpc_error_handle ParseRetryThrottling(const Json& json, + intptr_t* max_milli_tokens, + intptr_t* milli_token_ratio) { if (json.type() != Json::Type::OBJECT) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:retryThrottling error:Type should be object"); } - std::vector error_list; + std::vector error_list; // Parse maxTokens. auto it = json.object_value().find("maxTokens"); if (it == json.object_value().end()) { @@ -142,7 +143,7 @@ grpc_error* ParseRetryThrottling(const Json& json, intptr_t* max_milli_tokens, std::unique_ptr RetryServiceConfigParser::ParseGlobalParams(const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) { + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); auto it = json.object_value().find("retryThrottling"); if (it == json.object_value().end()) return nullptr; @@ -157,16 +158,16 @@ RetryServiceConfigParser::ParseGlobalParams(const grpc_channel_args* /*args*/, namespace { -grpc_error* ParseRetryPolicy(const Json& json, int* max_attempts, - grpc_millis* initial_backoff, - grpc_millis* max_backoff, - float* backoff_multiplier, - StatusCodeSet* retryable_status_codes) { +grpc_error_handle ParseRetryPolicy(const Json& json, int* max_attempts, + grpc_millis* initial_backoff, + grpc_millis* max_backoff, + float* backoff_multiplier, + StatusCodeSet* retryable_status_codes) { if (json.type() != Json::Type::OBJECT) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:retryPolicy error:should be of type object"); } - std::vector error_list; + std::vector error_list; // Parse maxAttempts. auto it = json.object_value().find("maxAttempts"); if (it != json.object_value().end()) { @@ -262,7 +263,8 @@ grpc_error* ParseRetryPolicy(const Json& json, int* max_attempts, std::unique_ptr RetryServiceConfigParser::ParsePerMethodParams( - const grpc_channel_args* /*args*/, const Json& json, grpc_error** error) { + const grpc_channel_args* /*args*/, const Json& json, + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); // Parse retry policy. auto it = json.object_value().find("retryPolicy"); diff --git a/src/core/ext/filters/client_channel/retry_service_config.h b/src/core/ext/filters/client_channel/retry_service_config.h index 837c755e11d..256183f26eb 100644 --- a/src/core/ext/filters/client_channel/retry_service_config.h +++ b/src/core/ext/filters/client_channel/retry_service_config.h @@ -74,11 +74,11 @@ class RetryServiceConfigParser : public ServiceConfigParser::Parser { public: std::unique_ptr ParseGlobalParams( const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; std::unique_ptr ParsePerMethodParams( const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; static size_t ParserIndex(); static void Register(); diff --git a/src/core/ext/filters/client_channel/service_config.cc b/src/core/ext/filters/client_channel/service_config.cc index a2794f19f44..b87226c6719 100644 --- a/src/core/ext/filters/client_channel/service_config.cc +++ b/src/core/ext/filters/client_channel/service_config.cc @@ -32,7 +32,7 @@ namespace grpc_core { RefCountedPtr ServiceConfig::Create( const grpc_channel_args* args, absl::string_view json_string, - grpc_error** error) { + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr); Json json = Json::Parse(json_string, error); if (*error != GRPC_ERROR_NONE) return nullptr; @@ -42,7 +42,7 @@ RefCountedPtr ServiceConfig::Create( ServiceConfig::ServiceConfig(const grpc_channel_args* args, std::string json_string, Json json, - grpc_error** error) + grpc_error_handle* error) : json_string_(std::move(json_string)), json_(std::move(json)) { GPR_DEBUG_ASSERT(error != nullptr); if (json_.type() != Json::Type::OBJECT) { @@ -50,12 +50,12 @@ ServiceConfig::ServiceConfig(const grpc_channel_args* args, GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON value is not an object"); return; } - std::vector error_list; - grpc_error* global_error = GRPC_ERROR_NONE; + std::vector error_list; + grpc_error_handle global_error = GRPC_ERROR_NONE; parsed_global_configs_ = ServiceConfigParser::ParseGlobalParameters(args, json_, &global_error); if (global_error != GRPC_ERROR_NONE) error_list.push_back(global_error); - grpc_error* local_error = ParsePerMethodParams(args); + grpc_error_handle local_error = ParsePerMethodParams(args); if (local_error != GRPC_ERROR_NONE) error_list.push_back(local_error); if (!error_list.empty()) { *error = GRPC_ERROR_CREATE_FROM_VECTOR("Service config parsing error", @@ -69,13 +69,13 @@ ServiceConfig::~ServiceConfig() { } } -grpc_error* ServiceConfig::ParseJsonMethodConfig(const grpc_channel_args* args, - const Json& json) { - std::vector error_list; +grpc_error_handle ServiceConfig::ParseJsonMethodConfig( + const grpc_channel_args* args, const Json& json) { + std::vector error_list; // Parse method config with each registered parser. auto parsed_configs = absl::make_unique(); - grpc_error* parser_error = GRPC_ERROR_NONE; + grpc_error_handle parser_error = GRPC_ERROR_NONE; *parsed_configs = ServiceConfigParser::ParsePerMethodParameters(args, json, &parser_error); if (parser_error != GRPC_ERROR_NONE) { @@ -94,7 +94,7 @@ grpc_error* ServiceConfig::ParseJsonMethodConfig(const grpc_channel_args* args, } const Json::Array& name_array = it->second.array_value(); for (const Json& name : name_array) { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; std::string path = ParseJsonMethodName(name, &parse_error); if (parse_error != GRPC_ERROR_NONE) { error_list.push_back(parse_error); @@ -130,8 +130,9 @@ grpc_error* ServiceConfig::ParseJsonMethodConfig(const grpc_channel_args* args, return GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list); } -grpc_error* ServiceConfig::ParsePerMethodParams(const grpc_channel_args* args) { - std::vector error_list; +grpc_error_handle ServiceConfig::ParsePerMethodParams( + const grpc_channel_args* args) { + std::vector error_list; auto it = json_.object_value().find("methodConfig"); if (it != json_.object_value().end()) { if (it->second.type() != Json::Type::ARRAY) { @@ -144,7 +145,7 @@ grpc_error* ServiceConfig::ParsePerMethodParams(const grpc_channel_args* args) { "field:methodConfig error:not of type Object")); continue; } - grpc_error* error = ParseJsonMethodConfig(args, method_config); + grpc_error_handle error = ParseJsonMethodConfig(args, method_config); if (error != GRPC_ERROR_NONE) { error_list.push_back(error); } @@ -154,7 +155,7 @@ grpc_error* ServiceConfig::ParsePerMethodParams(const grpc_channel_args* args) { } std::string ServiceConfig::ParseJsonMethodName(const Json& json, - grpc_error** error) { + grpc_error_handle* error) { if (json.type() != Json::Type::OBJECT) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "field:name error:type is not object"); diff --git a/src/core/ext/filters/client_channel/service_config.h b/src/core/ext/filters/client_channel/service_config.h index 2dfd45d8f6c..a06ae1626e8 100644 --- a/src/core/ext/filters/client_channel/service_config.h +++ b/src/core/ext/filters/client_channel/service_config.h @@ -67,10 +67,10 @@ class ServiceConfig : public RefCounted { /// Returns null on parse error. static RefCountedPtr Create(const grpc_channel_args* args, absl::string_view json_string, - grpc_error** error); + grpc_error_handle* error); ServiceConfig(const grpc_channel_args* args, std::string json_string, - Json json, grpc_error** error); + Json json, grpc_error_handle* error); ~ServiceConfig() override; const std::string& json_string() const { return json_string_; } @@ -91,13 +91,14 @@ class ServiceConfig : public RefCounted { private: // Helper functions for parsing the method configs. - grpc_error* ParsePerMethodParams(const grpc_channel_args* args); - grpc_error* ParseJsonMethodConfig(const grpc_channel_args* args, - const Json& json); + grpc_error_handle ParsePerMethodParams(const grpc_channel_args* args); + grpc_error_handle ParseJsonMethodConfig(const grpc_channel_args* args, + const Json& json); // Returns a path string for the JSON name object specified by json. // Sets *error on error. - static std::string ParseJsonMethodName(const Json& json, grpc_error** error); + static std::string ParseJsonMethodName(const Json& json, + grpc_error_handle* error); std::string json_string_; Json json_; diff --git a/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc b/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc index 679c0f572c2..39a34630468 100644 --- a/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +++ b/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc @@ -36,7 +36,7 @@ class ServiceConfigChannelArgChannelData { const char* service_config_str = grpc_channel_args_find_string( args->channel_args, GRPC_ARG_SERVICE_CONFIG); if (service_config_str != nullptr) { - grpc_error* service_config_error = GRPC_ERROR_NONE; + grpc_error_handle service_config_error = GRPC_ERROR_NONE; auto service_config = ServiceConfig::Create( args->channel_args, service_config_str, &service_config_error); if (service_config_error == GRPC_ERROR_NONE) { @@ -73,7 +73,7 @@ class ServiceConfigChannelArgCallData { } }; -grpc_error* ServiceConfigChannelArgInitCallElem( +grpc_error_handle ServiceConfigChannelArgInitCallElem( grpc_call_element* elem, const grpc_call_element_args* args) { ServiceConfigChannelArgCallData* calld = static_cast(elem->call_data); @@ -89,7 +89,7 @@ void ServiceConfigChannelArgDestroyCallElem( calld->~ServiceConfigChannelArgCallData(); } -grpc_error* ServiceConfigChannelArgInitChannelElem( +grpc_error_handle ServiceConfigChannelArgInitChannelElem( grpc_channel_element* elem, grpc_channel_element_args* args) { ServiceConfigChannelArgChannelData* chand = static_cast(elem->channel_data); diff --git a/src/core/ext/filters/client_channel/service_config_parser.cc b/src/core/ext/filters/client_channel/service_config_parser.cc index d116f3115f9..fa8fbea68f3 100644 --- a/src/core/ext/filters/client_channel/service_config_parser.cc +++ b/src/core/ext/filters/client_channel/service_config_parser.cc @@ -47,11 +47,11 @@ size_t ServiceConfigParser::RegisterParser(std::unique_ptr parser) { ServiceConfigParser::ParsedConfigVector ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args, const Json& json, - grpc_error** error) { + grpc_error_handle* error) { ParsedConfigVector parsed_global_configs; - std::vector error_list; + std::vector error_list; for (size_t i = 0; i < g_registered_parsers->size(); i++) { - grpc_error* parser_error = GRPC_ERROR_NONE; + grpc_error_handle parser_error = GRPC_ERROR_NONE; auto parsed_config = (*g_registered_parsers)[i]->ParseGlobalParams( args, json, &parser_error); if (parser_error != GRPC_ERROR_NONE) { @@ -68,11 +68,11 @@ ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args, ServiceConfigParser::ParsedConfigVector ServiceConfigParser::ParsePerMethodParameters(const grpc_channel_args* args, const Json& json, - grpc_error** error) { + grpc_error_handle* error) { ParsedConfigVector parsed_method_configs; - std::vector error_list; + std::vector error_list; for (size_t i = 0; i < g_registered_parsers->size(); i++) { - grpc_error* parser_error = GRPC_ERROR_NONE; + grpc_error_handle parser_error = GRPC_ERROR_NONE; auto parsed_config = (*g_registered_parsers)[i]->ParsePerMethodParams( args, json, &parser_error); if (parser_error != GRPC_ERROR_NONE) { diff --git a/src/core/ext/filters/client_channel/service_config_parser.h b/src/core/ext/filters/client_channel/service_config_parser.h index 692a920ec35..ebd31660742 100644 --- a/src/core/ext/filters/client_channel/service_config_parser.h +++ b/src/core/ext/filters/client_channel/service_config_parser.h @@ -47,7 +47,8 @@ class ServiceConfigParser { virtual ~Parser() = default; virtual std::unique_ptr ParseGlobalParams( - const grpc_channel_args*, const Json& /* json */, grpc_error** error) { + const grpc_channel_args*, const Json& /* json */, + grpc_error_handle* error) { // Avoid unused parameter warning on debug-only parameter (void)error; GPR_DEBUG_ASSERT(error != nullptr); @@ -55,7 +56,8 @@ class ServiceConfigParser { } virtual std::unique_ptr ParsePerMethodParams( - const grpc_channel_args*, const Json& /* json */, grpc_error** error) { + const grpc_channel_args*, const Json& /* json */, + grpc_error_handle* error) { // Avoid unused parameter warning on debug-only parameter (void)error; GPR_DEBUG_ASSERT(error != nullptr); @@ -81,10 +83,11 @@ class ServiceConfigParser { static ParsedConfigVector ParseGlobalParameters(const grpc_channel_args* args, const Json& json, - grpc_error** error); + grpc_error_handle* error); static ParsedConfigVector ParsePerMethodParameters( - const grpc_channel_args* args, const Json& json, grpc_error** error); + const grpc_channel_args* args, const Json& json, + grpc_error_handle* error); }; } // namespace grpc_core diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc index 5a75301ee9e..e6cde203fd0 100644 --- a/src/core/ext/filters/client_channel/subchannel.cc +++ b/src/core/ext/filters/client_channel/subchannel.cc @@ -131,7 +131,7 @@ size_t ConnectedSubchannel::GetInitialCallSizeEstimate() const { // RefCountedPtr SubchannelCall::Create(Args args, - grpc_error** error) { + grpc_error_handle* error) { const size_t allocation_size = args.connected_subchannel->GetInitialCallSizeEstimate(); Arena* arena = args.arena; @@ -139,7 +139,7 @@ RefCountedPtr SubchannelCall::Create(Args args, arena->Alloc(allocation_size)) SubchannelCall(std::move(args), error)); } -SubchannelCall::SubchannelCall(Args args, grpc_error** error) +SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error) : connected_subchannel_(std::move(args.connected_subchannel)), deadline_(args.deadline) { grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this); @@ -207,7 +207,7 @@ void SubchannelCall::Unref(const DebugLocation& /*location*/, GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason); } -void SubchannelCall::Destroy(void* arg, grpc_error* /*error*/) { +void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) { GPR_TIMER_SCOPE("subchannel_call_destroy", 0); SubchannelCall* self = static_cast(arg); // Keep some members before destroying the subchannel call. @@ -252,7 +252,7 @@ namespace { // Sets *status based on the rest of the parameters. void GetCallStatus(grpc_status_code* status, grpc_millis deadline, - grpc_metadata_batch* md_batch, grpc_error* error) { + grpc_metadata_batch* md_batch, grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr); } else { @@ -268,7 +268,8 @@ void GetCallStatus(grpc_status_code* status, grpc_millis deadline, } // namespace -void SubchannelCall::RecvTrailingMetadataReady(void* arg, grpc_error* error) { +void SubchannelCall::RecvTrailingMetadataReady(void* arg, + grpc_error_handle error) { SubchannelCall* call = static_cast(arg); GPR_ASSERT(call->recv_trailing_metadata_ != nullptr); grpc_status_code status = GRPC_STATUS_OK; @@ -375,7 +376,7 @@ class Subchannel::AsyncWatcherNotifierLocked { ExecCtx::Run(DEBUG_LOCATION, GRPC_CLOSURE_INIT( &closure_, - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { auto* self = static_cast(arg); self->watcher_->OnConnectivityStateChange(); @@ -963,7 +964,7 @@ void Subchannel::MaybeStartConnectingLocked() { } } -void Subchannel::OnRetryAlarm(void* arg, grpc_error* error) { +void Subchannel::OnRetryAlarm(void* arg, grpc_error_handle error) { WeakRefCountedPtr c(static_cast(arg)); MutexLock lock(&c->mu_); c->have_retry_alarm_ = false; @@ -998,7 +999,7 @@ void Subchannel::ContinueConnectingLocked() { connector_->Connect(args, &connecting_result_, &on_connecting_finished_); } -void Subchannel::OnConnectingFinished(void* arg, grpc_error* error) { +void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) { WeakRefCountedPtr c(static_cast(arg)); const grpc_channel_args* delete_channel_args = c->connecting_result_.channel_args; @@ -1020,7 +1021,7 @@ void Subchannel::OnConnectingFinished(void* arg, grpc_error* error) { namespace { -void ConnectionDestroy(void* arg, grpc_error* /*error*/) { +void ConnectionDestroy(void* arg, grpc_error_handle /*error*/) { grpc_channel_stack* stk = static_cast(arg); grpc_channel_stack_destroy(stk); gpr_free(stk); @@ -1040,7 +1041,7 @@ bool Subchannel::PublishTransportLocked() { return false; } grpc_channel_stack* stk; - grpc_error* error = grpc_channel_stack_builder_finish( + grpc_error_handle error = grpc_channel_stack_builder_finish( builder, 0, 1, ConnectionDestroy, nullptr, reinterpret_cast(&stk)); if (error != GRPC_ERROR_NONE) { diff --git a/src/core/ext/filters/client_channel/subchannel.h b/src/core/ext/filters/client_channel/subchannel.h index ebf1712bb04..9667fe7fd72 100644 --- a/src/core/ext/filters/client_channel/subchannel.h +++ b/src/core/ext/filters/client_channel/subchannel.h @@ -87,7 +87,8 @@ class SubchannelCall { grpc_call_context_element* context; CallCombiner* call_combiner; }; - static RefCountedPtr Create(Args args, grpc_error** error); + static RefCountedPtr Create(Args args, + grpc_error_handle* error); // Continues processing a transport stream op batch. void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch); @@ -113,20 +114,20 @@ class SubchannelCall { template friend class RefCountedPtr; - SubchannelCall(Args args, grpc_error** error); + SubchannelCall(Args args, grpc_error_handle* error); // If channelz is enabled, intercepts recv_trailing so that we may check the // status and associate it to a subchannel. void MaybeInterceptRecvTrailingMetadata( grpc_transport_stream_op_batch* batch); - static void RecvTrailingMetadataReady(void* arg, grpc_error* error); + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); // Interface of RefCounted<>. void IncrementRefCount(); void IncrementRefCount(const DebugLocation& location, const char* reason); - static void Destroy(void* arg, grpc_error* error); + static void Destroy(void* arg, grpc_error_handle error); RefCountedPtr connected_subchannel_; grpc_closure* after_call_stack_destroy_ = nullptr; @@ -340,10 +341,10 @@ class Subchannel : public DualRefCounted { // Methods for connection. void MaybeStartConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); - static void OnRetryAlarm(void* arg, grpc_error* error) + static void OnRetryAlarm(void* arg, grpc_error_handle error) ABSL_LOCKS_EXCLUDED(mu_); void ContinueConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); - static void OnConnectingFinished(void* arg, grpc_error* error) + static void OnConnectingFinished(void* arg, grpc_error_handle error) ABSL_LOCKS_EXCLUDED(mu_); bool PublishTransportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); diff --git a/src/core/ext/filters/client_idle/client_idle_filter.cc b/src/core/ext/filters/client_idle/client_idle_filter.cc index e39dda4dd90..01abaab7807 100644 --- a/src/core/ext/filters/client_idle/client_idle_filter.cc +++ b/src/core/ext/filters/client_idle/client_idle_filter.cc @@ -126,8 +126,8 @@ grpc_millis GetClientIdleTimeout(const grpc_channel_args* args) { class ChannelData { public: - static grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args); + static grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args); static void Destroy(grpc_channel_element* elem); static void StartTransportOp(grpc_channel_element* elem, @@ -139,11 +139,12 @@ class ChannelData { private: ChannelData(grpc_channel_element* elem, grpc_channel_element_args* args, - grpc_error** error); + grpc_error_handle* error); ~ChannelData() = default; - static void IdleTimerCallback(void* arg, grpc_error* error); - static void IdleTransportOpCompleteCallback(void* arg, grpc_error* error); + static void IdleTimerCallback(void* arg, grpc_error_handle error); + static void IdleTransportOpCompleteCallback(void* arg, + grpc_error_handle error); void StartIdleTimer(); @@ -170,9 +171,9 @@ class ChannelData { grpc_closure idle_transport_op_complete_callback_; }; -grpc_error* ChannelData::Init(grpc_channel_element* elem, - grpc_channel_element_args* args) { - grpc_error* error = GRPC_ERROR_NONE; +grpc_error_handle ChannelData::Init(grpc_channel_element* elem, + grpc_channel_element_args* args) { + grpc_error_handle error = GRPC_ERROR_NONE; new (elem->channel_data) ChannelData(elem, args, &error); return error; } @@ -283,7 +284,7 @@ void ChannelData::DecreaseCallCount() { ChannelData::ChannelData(grpc_channel_element* elem, grpc_channel_element_args* args, - grpc_error** /*error*/) + grpc_error_handle* /*error*/) : elem_(elem), channel_stack_(args->channel_stack), client_idle_timeout_(GetClientIdleTimeout(args->channel_args)) { @@ -303,7 +304,7 @@ ChannelData::ChannelData(grpc_channel_element* elem, grpc_schedule_on_exec_ctx); } -void ChannelData::IdleTimerCallback(void* arg, grpc_error* error) { +void ChannelData::IdleTimerCallback(void* arg, grpc_error_handle error) { GRPC_IDLE_FILTER_LOG("timer alarms"); ChannelData* chand = static_cast(arg); if (error != GRPC_ERROR_NONE) { @@ -352,7 +353,7 @@ void ChannelData::IdleTimerCallback(void* arg, grpc_error* error) { } void ChannelData::IdleTransportOpCompleteCallback(void* arg, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { ChannelData* chand = static_cast(arg); GRPC_CHANNEL_STACK_UNREF(chand->channel_stack_, "idle transport op"); } @@ -381,15 +382,15 @@ void ChannelData::EnterIdle() { class CallData { public: - static grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args); + static grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args); static void Destroy(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_schedule_closure); }; -grpc_error* CallData::Init(grpc_call_element* elem, - const grpc_call_element_args* /*args*/) { +grpc_error_handle CallData::Init(grpc_call_element* elem, + const grpc_call_element_args* /*args*/) { ChannelData* chand = static_cast(elem->channel_data); chand->IncreaseCallCount(); return GRPC_ERROR_NONE; diff --git a/src/core/ext/filters/deadline/deadline_filter.cc b/src/core/ext/filters/deadline/deadline_filter.cc index 837e337b64b..8944f5d9d15 100644 --- a/src/core/ext/filters/deadline/deadline_filter.cc +++ b/src/core/ext/filters/deadline/deadline_filter.cc @@ -51,7 +51,7 @@ class TimerState { private: // The on_complete callback used when sending a cancel_error batch down the // filter stack. Yields the call combiner when the batch returns. - static void YieldCallCombiner(void* arg, grpc_error* /*ignored*/) { + static void YieldCallCombiner(void* arg, grpc_error_handle /*ignored*/) { TimerState* self = static_cast(arg); grpc_deadline_state* deadline_state = static_cast(self->elem_->call_data); @@ -62,7 +62,7 @@ class TimerState { // This is called via the call combiner, so access to deadline_state is // synchronized. - static void SendCancelOpInCallCombiner(void* arg, grpc_error* error) { + static void SendCancelOpInCallCombiner(void* arg, grpc_error_handle error) { TimerState* self = static_cast(arg); grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op( GRPC_CLOSURE_INIT(&self->closure_, YieldCallCombiner, self, nullptr)); @@ -72,7 +72,7 @@ class TimerState { } // Timer callback. - static void TimerCallback(void* arg, grpc_error* error) { + static void TimerCallback(void* arg, grpc_error_handle error) { TimerState* self = static_cast(arg); grpc_deadline_state* deadline_state = static_cast(self->elem_->call_data); @@ -135,7 +135,7 @@ static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) { } // Callback run when we receive trailing metadata. -static void recv_trailing_metadata_ready(void* arg, grpc_error* error) { +static void recv_trailing_metadata_ready(void* arg, grpc_error_handle error) { grpc_deadline_state* deadline_state = static_cast(arg); cancel_timer_if_needed(deadline_state); // Invoke the original callback. @@ -168,7 +168,7 @@ struct start_timer_after_init_state { grpc_millis deadline; grpc_closure closure; }; -static void start_timer_after_init(void* arg, grpc_error* error) { +static void start_timer_after_init(void* arg, grpc_error_handle error) { struct start_timer_after_init_state* state = static_cast(arg); grpc_deadline_state* deadline_state = @@ -241,8 +241,8 @@ void grpc_deadline_state_client_start_transport_stream_op_batch( // // Constructor for channel_data. Used for both client and server filters. -static grpc_error* deadline_init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* args) { +static grpc_error_handle deadline_init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); return GRPC_ERROR_NONE; } @@ -268,8 +268,8 @@ typedef struct server_call_data { } server_call_data; // Constructor for call_data. Used for both client and server filters. -static grpc_error* deadline_init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle deadline_init_call_elem( + grpc_call_element* elem, const grpc_call_element_args* args) { new (elem->call_data) grpc_deadline_state(elem, *args, args->deadline); return GRPC_ERROR_NONE; } @@ -292,7 +292,7 @@ static void deadline_client_start_transport_stream_op_batch( } // Callback for receiving initial metadata on the server. -static void recv_initial_metadata_ready(void* arg, grpc_error* error) { +static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); server_call_data* calld = static_cast(elem->call_data); start_timer_if_needed(elem, calld->recv_initial_metadata->deadline); diff --git a/src/core/ext/filters/fault_injection/fault_injection_filter.cc b/src/core/ext/filters/fault_injection/fault_injection_filter.cc index a4124881307..d0afb63398a 100644 --- a/src/core/ext/filters/fault_injection/fault_injection_filter.cc +++ b/src/core/ext/filters/fault_injection/fault_injection_filter.cc @@ -83,8 +83,8 @@ inline bool UnderFraction(const uint32_t numerator, class ChannelData { public: - static grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args); + static grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args); static void Destroy(grpc_channel_element* elem); int index() const { return index_; } @@ -99,8 +99,8 @@ class ChannelData { class CallData { public: - static grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args); + static grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args); static void Destroy(grpc_call_element* elem, const grpc_call_final_info* /*final_info*/, @@ -129,7 +129,7 @@ class CallData { // GRPC_ERROR_NONE. // If this call is already been delay injected, skip the active faults // quota check. - grpc_error* MaybeAbort(); + grpc_error_handle MaybeAbort(); // Delays the stream operations batch. void DelayBatch(grpc_call_element* elem, @@ -144,11 +144,11 @@ class CallData { } // This is a callback that will be invoked after the delay timer is up. - static void ResumeBatch(void* arg, grpc_error* error); + static void ResumeBatch(void* arg, grpc_error_handle error); // This is a callback invoked upon completion of recv_trailing_metadata. // Injects the abort_error_ to the recv_trailing_metadata batch if needed. - static void HijackedRecvTrailingMetadataReady(void* arg, grpc_error*); + static void HijackedRecvTrailingMetadataReady(void* arg, grpc_error_handle); // Used to track the policy structs that needs to be destroyed in dtor. bool fi_policy_owned_ = false; @@ -166,7 +166,7 @@ class CallData { ResumeBatchCanceller* resume_batch_canceller_ ABSL_GUARDED_BY(delay_mu_); grpc_transport_stream_op_batch* delayed_batch_ ABSL_GUARDED_BY(delay_mu_); // Abort states - grpc_error* abort_error_ = GRPC_ERROR_NONE; + grpc_error_handle abort_error_ = GRPC_ERROR_NONE; grpc_closure recv_trailing_metadata_ready_; grpc_closure* original_recv_trailing_metadata_ready_; // Protects the asynchronous delay, resume, and cancellation. @@ -175,8 +175,8 @@ class CallData { // ChannelData -grpc_error* ChannelData::Init(grpc_channel_element* elem, - grpc_channel_element_args* args) { +grpc_error_handle ChannelData::Init(grpc_channel_element* elem, + grpc_channel_element_args* args) { GPR_ASSERT(elem->filter == &FaultInjectionFilterVtable); new (elem->channel_data) ChannelData(elem, args); return GRPC_ERROR_NONE; @@ -204,7 +204,7 @@ class CallData::ResumeBatchCanceller { } private: - static void Cancel(void* arg, grpc_error* error) { + static void Cancel(void* arg, grpc_error_handle error) { auto* self = static_cast(arg); auto* chand = static_cast(self->elem_->channel_data); auto* calld = static_cast(self->elem_->call_data); @@ -237,8 +237,8 @@ class CallData::ResumeBatchCanceller { // CallData -grpc_error* CallData::Init(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle CallData::Init(grpc_call_element* elem, + const grpc_call_element_args* args) { auto* calld = new (elem->call_data) CallData(elem, args); if (calld->fi_policy_ == nullptr) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -273,7 +273,7 @@ void CallData::StartTransportStreamOpBatch( calld->DelayBatch(elem, batch); return; } - grpc_error* abort_error = calld->MaybeAbort(); + grpc_error_handle abort_error = calld->MaybeAbort(); if (abort_error != GRPC_ERROR_NONE) { calld->abort_error_ = abort_error; grpc_transport_stream_op_batch_finish_with_failure( @@ -414,7 +414,7 @@ bool CallData::MaybeDelay() { return false; } -grpc_error* CallData::MaybeAbort() { +grpc_error_handle CallData::MaybeAbort() { if (abort_request_ && (delay_request_ || HaveActiveFaultsQuota(false))) { return grpc_error_set_int( GRPC_ERROR_CREATE_FROM_COPIED_STRING(fi_policy_->abort_message.c_str()), @@ -434,7 +434,7 @@ void CallData::DelayBatch(grpc_call_element* elem, grpc_timer_init(&delay_timer_, resume_time, &batch->handler_private.closure); } -void CallData::ResumeBatch(void* arg, grpc_error* error) { +void CallData::ResumeBatch(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); auto* calld = static_cast(elem->call_data); MutexLock lock(&calld->delay_mu_); @@ -462,7 +462,8 @@ void CallData::ResumeBatch(void* arg, grpc_error* error) { grpc_call_next_op(elem, calld->delayed_batch_); } -void CallData::HijackedRecvTrailingMetadataReady(void* arg, grpc_error* error) { +void CallData::HijackedRecvTrailingMetadataReady(void* arg, + grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); auto* calld = static_cast(elem->call_data); if (calld->abort_error_ != GRPC_ERROR_NONE) { diff --git a/src/core/ext/filters/fault_injection/service_config_parser.cc b/src/core/ext/filters/fault_injection/service_config_parser.cc index c2628a0f8f4..e8c23e1903f 100644 --- a/src/core/ext/filters/fault_injection/service_config_parser.cc +++ b/src/core/ext/filters/fault_injection/service_config_parser.cc @@ -37,12 +37,12 @@ size_t g_fault_injection_parser_index; std::vector ParseFaultInjectionPolicy(const Json::Array& policies_json_array, - std::vector* error_list) { + std::vector* error_list) { std::vector policies; for (size_t i = 0; i < policies_json_array.size(); i++) { FaultInjectionMethodParsedConfig::FaultInjectionPolicy fault_injection_policy; - std::vector sub_error_list; + std::vector sub_error_list; if (policies_json_array[i].type() != Json::Type::OBJECT) { error_list->push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("faultInjectionPolicy index ", i, @@ -135,7 +135,7 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array, if (!sub_error_list.empty()) { // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("failed to parse faultInjectionPolicy index ", i) .c_str()); for (size_t i = 0; i < sub_error_list.size(); ++i) { @@ -152,7 +152,7 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array, std::unique_ptr FaultInjectionServiceConfigParser::ParsePerMethodParams( - const grpc_channel_args* args, const Json& json, grpc_error** error) { + const grpc_channel_args* args, const Json& json, grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); // Only parse fault injection policy if the following channel arg is present. if (!grpc_channel_args_find_bool( @@ -162,7 +162,7 @@ FaultInjectionServiceConfigParser::ParsePerMethodParams( // Parse fault injection policy from given Json std::vector fault_injection_policies; - std::vector error_list; + std::vector error_list; const Json::Array* policies_json_array; if (ParseJsonObjectField(json.object_value(), "faultInjectionPolicy", &policies_json_array, &error_list)) { diff --git a/src/core/ext/filters/fault_injection/service_config_parser.h b/src/core/ext/filters/fault_injection/service_config_parser.h index 292146760d2..a885539c8c6 100644 --- a/src/core/ext/filters/fault_injection/service_config_parser.h +++ b/src/core/ext/filters/fault_injection/service_config_parser.h @@ -73,7 +73,7 @@ class FaultInjectionServiceConfigParser : public ServiceConfigParser::Parser { // Parses the per-method service config for fault injection filter. std::unique_ptr ParsePerMethodParams( const grpc_channel_args* args, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; // Returns the parser index for FaultInjectionServiceConfigParser. static size_t ParserIndex(); // Registers FaultInjectionServiceConfigParser to ServiceConfigParser. diff --git a/src/core/ext/filters/http/client/http_client_filter.cc b/src/core/ext/filters/http/client/http_client_filter.cc index 3a4825f83d2..ef737f0e5ed 100644 --- a/src/core/ext/filters/http/client/http_client_filter.cc +++ b/src/core/ext/filters/http/client/http_client_filter.cc @@ -48,10 +48,12 @@ /* default maximum size of payload eligible for GET request */ static constexpr size_t kMaxPayloadSizeForGet = 2048; -static void recv_initial_metadata_ready(void* user_data, grpc_error* error); -static void recv_trailing_metadata_ready(void* user_data, grpc_error* error); -static void on_send_message_next_done(void* arg, grpc_error* error); -static void send_message_on_complete(void* arg, grpc_error* error); +static void recv_initial_metadata_ready(void* user_data, + grpc_error_handle error); +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle error); +static void on_send_message_next_done(void* arg, grpc_error_handle error); +static void send_message_on_complete(void* arg, grpc_error_handle error); namespace { struct call_data { @@ -81,14 +83,14 @@ struct call_data { grpc_linked_mdelem user_agent; // State for handling recv_initial_metadata ops. grpc_metadata_batch* recv_initial_metadata; - grpc_error* recv_initial_metadata_error = GRPC_ERROR_NONE; + grpc_error_handle recv_initial_metadata_error = GRPC_ERROR_NONE; grpc_closure* original_recv_initial_metadata_ready = nullptr; grpc_closure recv_initial_metadata_ready; // State for handling recv_trailing_metadata ops. grpc_metadata_batch* recv_trailing_metadata; grpc_closure* original_recv_trailing_metadata_ready; grpc_closure recv_trailing_metadata_ready; - grpc_error* recv_trailing_metadata_error = GRPC_ERROR_NONE; + grpc_error_handle recv_trailing_metadata_error = GRPC_ERROR_NONE; bool seen_recv_trailing_metadata_ready = false; // State for handling send_message ops. grpc_transport_stream_op_batch* send_message_batch; @@ -108,7 +110,8 @@ struct channel_data { }; } // namespace -static grpc_error* client_filter_incoming_metadata(grpc_metadata_batch* b) { +static grpc_error_handle client_filter_incoming_metadata( + grpc_metadata_batch* b) { if (b->idx.named.status != nullptr) { /* If both gRPC status and HTTP status are provided in the response, we * should prefer the gRPC status code, as mentioned in @@ -123,7 +126,7 @@ static grpc_error* client_filter_incoming_metadata(grpc_metadata_batch* b) { GPR_DUMP_ASCII); std::string msg = absl::StrCat("Received http2 header with status: ", val); - grpc_error* e = grpc_error_set_str( + grpc_error_handle e = grpc_error_set_str( grpc_error_set_int( grpc_error_set_str( GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -182,7 +185,8 @@ static grpc_error* client_filter_incoming_metadata(grpc_metadata_batch* b) { return GRPC_ERROR_NONE; } -static void recv_initial_metadata_ready(void* user_data, grpc_error* error) { +static void recv_initial_metadata_ready(void* user_data, + grpc_error_handle error) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (error == GRPC_ERROR_NONE) { @@ -201,7 +205,8 @@ static void recv_initial_metadata_ready(void* user_data, grpc_error* error) { grpc_core::Closure::Run(DEBUG_LOCATION, closure, error); } -static void recv_trailing_metadata_ready(void* user_data, grpc_error* error) { +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle error) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (calld->original_recv_initial_metadata_ready != nullptr) { @@ -223,7 +228,7 @@ static void recv_trailing_metadata_ready(void* user_data, grpc_error* error) { calld->original_recv_trailing_metadata_ready, error); } -static void send_message_on_complete(void* arg, grpc_error* error) { +static void send_message_on_complete(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); calld->send_message_cache.Destroy(); @@ -234,9 +239,10 @@ static void send_message_on_complete(void* arg, grpc_error* error) { // Pulls a slice from the send_message byte stream, updating // calld->send_message_bytes_read. -static grpc_error* pull_slice_from_send_message(call_data* calld) { +static grpc_error_handle pull_slice_from_send_message(call_data* calld) { grpc_slice incoming_slice; - grpc_error* error = calld->send_message_caching_stream->Pull(&incoming_slice); + grpc_error_handle error = + calld->send_message_caching_stream->Pull(&incoming_slice); if (error == GRPC_ERROR_NONE) { calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice); grpc_slice_unref_internal(incoming_slice); @@ -249,10 +255,11 @@ static grpc_error* pull_slice_from_send_message(call_data* calld) { // calld->send_message_caching_stream->length(), then we have completed // reading from the byte stream; otherwise, an async read has been dispatched // and on_send_message_next_done() will be invoked when it is complete. -static grpc_error* read_all_available_send_message_data(call_data* calld) { +static grpc_error_handle read_all_available_send_message_data( + call_data* calld) { while (calld->send_message_caching_stream->Next( SIZE_MAX, &calld->on_send_message_next_done)) { - grpc_error* error = pull_slice_from_send_message(calld); + grpc_error_handle error = pull_slice_from_send_message(calld); if (error != GRPC_ERROR_NONE) return error; if (calld->send_message_bytes_read == calld->send_message_caching_stream->length()) { @@ -263,7 +270,7 @@ static grpc_error* read_all_available_send_message_data(call_data* calld) { } // Async callback for ByteStream::Next(). -static void on_send_message_next_done(void* arg, grpc_error* error) { +static void on_send_message_next_done(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); if (error != GRPC_ERROR_NONE) { @@ -301,8 +308,8 @@ static char* slice_buffer_to_string(grpc_slice_buffer* slice_buffer) { // Modifies the path entry in the batch's send_initial_metadata to // append the base64-encoded query for a GET request. -static grpc_error* update_path_for_get(grpc_call_element* elem, - grpc_transport_stream_op_batch* batch) { +static grpc_error_handle update_path_for_get( + grpc_call_element* elem, grpc_transport_stream_op_batch* batch) { call_data* calld = static_cast(elem->call_data); grpc_slice path_slice = GRPC_MDVALUE(batch->payload->send_initial_metadata.send_initial_metadata @@ -376,7 +383,7 @@ static void http_client_start_transport_stream_op_batch( &calld->recv_trailing_metadata_ready; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; bool batch_will_be_handled_asynchronously = false; if (batch->send_initial_metadata) { // Decide which HTTP VERB to use. We use GET if the request is marked @@ -475,7 +482,7 @@ done: } /* Constructor for call_data */ -static grpc_error* http_client_init_call_elem( +static grpc_error_handle http_client_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { new (elem->call_data) call_data(elem, *args); return GRPC_ERROR_NONE; @@ -561,7 +568,7 @@ static grpc_core::ManagedMemorySlice user_agent_from_args( } /* Constructor for channel_data */ -static grpc_error* http_client_init_channel_elem( +static grpc_error_handle http_client_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* chand = static_cast(elem->channel_data); GPR_ASSERT(!args->is_last); diff --git a/src/core/ext/filters/http/client_authority_filter.cc b/src/core/ext/filters/http/client_authority_filter.cc index 9511d2591a3..f44ef853b4b 100644 --- a/src/core/ext/filters/http/client_authority_filter.cc +++ b/src/core/ext/filters/http/client_authority_filter.cc @@ -57,7 +57,7 @@ void client_authority_start_transport_stream_op_batch( if (batch->send_initial_metadata && batch->payload->send_initial_metadata.send_initial_metadata->idx.named .authority == nullptr) { - grpc_error* error = grpc_metadata_batch_add_head( + grpc_error_handle error = grpc_metadata_batch_add_head( batch->payload->send_initial_metadata.send_initial_metadata, &calld->authority_storage, GRPC_MDELEM_REF(chand->default_authority_mdelem), GRPC_BATCH_AUTHORITY); @@ -72,7 +72,7 @@ void client_authority_start_transport_stream_op_batch( } /* Constructor for call_data */ -grpc_error* client_authority_init_call_elem( +grpc_error_handle client_authority_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { call_data* calld = static_cast(elem->call_data); calld->call_combiner = args->call_combiner; @@ -85,7 +85,7 @@ void client_authority_destroy_call_elem( grpc_closure* /*ignored*/) {} /* Constructor for channel_data */ -grpc_error* client_authority_init_channel_elem( +grpc_error_handle client_authority_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* chand = static_cast(elem->channel_data); const grpc_arg* default_authority_arg = diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.cc b/src/core/ext/filters/http/message_compress/message_compress_filter.cc index 09c914fab07..0fc85b1ea21 100644 --- a/src/core/ext/filters/http/message_compress/message_compress_filter.cc +++ b/src/core/ext/filters/http/message_compress/message_compress_filter.cc @@ -131,25 +131,25 @@ class CallData { bool SkipMessageCompression(); void InitializeState(grpc_call_element* elem); - grpc_error* ProcessSendInitialMetadata(grpc_call_element* elem, - grpc_metadata_batch* initial_metadata); + grpc_error_handle ProcessSendInitialMetadata( + grpc_call_element* elem, grpc_metadata_batch* initial_metadata); // Methods for processing a send_message batch - static void StartSendMessageBatch(void* elem_arg, grpc_error* unused); - static void OnSendMessageNextDone(void* elem_arg, grpc_error* error); - grpc_error* PullSliceFromSendMessage(); + static void StartSendMessageBatch(void* elem_arg, grpc_error_handle unused); + static void OnSendMessageNextDone(void* elem_arg, grpc_error_handle error); + grpc_error_handle PullSliceFromSendMessage(); void ContinueReadingSendMessage(grpc_call_element* elem); void FinishSendMessage(grpc_call_element* elem); void SendMessageBatchContinue(grpc_call_element* elem); static void FailSendMessageBatchInCallCombiner(void* calld_arg, - grpc_error* error); + grpc_error_handle error); - static void SendMessageOnComplete(void* calld_arg, grpc_error* error); + static void SendMessageOnComplete(void* calld_arg, grpc_error_handle error); grpc_core::CallCombiner* call_combiner_; grpc_message_compression_algorithm message_compression_algorithm_ = GRPC_MESSAGE_COMPRESS_NONE; - grpc_error* cancel_error_ = GRPC_ERROR_NONE; + grpc_error_handle cancel_error_ = GRPC_ERROR_NONE; grpc_transport_stream_op_batch* send_message_batch_ = nullptr; bool seen_initial_metadata_ = false; /* Set to true, if the fields below are initialized. */ @@ -232,7 +232,7 @@ void CallData::InitializeState(grpc_call_element* elem) { grpc_schedule_on_exec_ctx); } -grpc_error* CallData::ProcessSendInitialMetadata( +grpc_error_handle CallData::ProcessSendInitialMetadata( grpc_call_element* elem, grpc_metadata_batch* initial_metadata) { ChannelData* channeld = static_cast(elem->channel_data); // Find the compression algorithm. @@ -246,7 +246,7 @@ grpc_error* CallData::ProcessSendInitialMetadata( grpc_compression_algorithm_to_stream_compression_algorithm( compression_algorithm); // Hint compression algorithm. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (message_compression_algorithm_ != GRPC_MESSAGE_COMPRESS_NONE) { InitializeState(elem); error = grpc_metadata_batch_add_tail( @@ -281,7 +281,7 @@ grpc_error* CallData::ProcessSendInitialMetadata( return error; } -void CallData::SendMessageOnComplete(void* calld_arg, grpc_error* error) { +void CallData::SendMessageOnComplete(void* calld_arg, grpc_error_handle error) { CallData* calld = static_cast(calld_arg); grpc_slice_buffer_reset_and_unref_internal(&calld->slices_); grpc_core::Closure::Run(DEBUG_LOCATION, @@ -348,7 +348,7 @@ void CallData::FinishSendMessage(grpc_call_element* elem) { } void CallData::FailSendMessageBatchInCallCombiner(void* calld_arg, - grpc_error* error) { + grpc_error_handle error) { CallData* calld = static_cast(calld_arg); if (calld->send_message_batch_ != nullptr) { grpc_transport_stream_op_batch_finish_with_failure( @@ -359,9 +359,9 @@ void CallData::FailSendMessageBatchInCallCombiner(void* calld_arg, } // Pulls a slice from the send_message byte stream and adds it to slices_. -grpc_error* CallData::PullSliceFromSendMessage() { +grpc_error_handle CallData::PullSliceFromSendMessage() { grpc_slice incoming_slice; - grpc_error* error = + grpc_error_handle error = send_message_batch_->payload->send_message.send_message->Pull( &incoming_slice); if (error == GRPC_ERROR_NONE) { @@ -382,7 +382,7 @@ void CallData::ContinueReadingSendMessage(grpc_call_element* elem) { } while (send_message_batch_->payload->send_message.send_message->Next( ~static_cast(0), &on_send_message_next_done_)) { - grpc_error* error = PullSliceFromSendMessage(); + grpc_error_handle error = PullSliceFromSendMessage(); if (error != GRPC_ERROR_NONE) { // Closure callback; does not take ownership of error. FailSendMessageBatchInCallCombiner(this, error); @@ -398,7 +398,7 @@ void CallData::ContinueReadingSendMessage(grpc_call_element* elem) { } // Async callback for ByteStream::Next(). -void CallData::OnSendMessageNextDone(void* elem_arg, grpc_error* error) { +void CallData::OnSendMessageNextDone(void* elem_arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(elem_arg); CallData* calld = static_cast(elem->call_data); if (error != GRPC_ERROR_NONE) { @@ -421,7 +421,8 @@ void CallData::OnSendMessageNextDone(void* elem_arg, grpc_error* error) { } } -void CallData::StartSendMessageBatch(void* elem_arg, grpc_error* /*unused*/) { +void CallData::StartSendMessageBatch(void* elem_arg, + grpc_error_handle /*unused*/) { grpc_call_element* elem = static_cast(elem_arg); CallData* calld = static_cast(elem->call_data); if (calld->SkipMessageCompression()) { @@ -458,7 +459,7 @@ void CallData::CompressStartTransportStreamOpBatch( // Handle send_initial_metadata. if (batch->send_initial_metadata) { GPR_ASSERT(!seen_initial_metadata_); - grpc_error* error = ProcessSendInitialMetadata( + grpc_error_handle error = ProcessSendInitialMetadata( elem, batch->payload->send_initial_metadata.send_initial_metadata); if (error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure(batch, error, @@ -503,8 +504,8 @@ void CompressStartTransportStreamOpBatch( } /* Constructor for call_data */ -grpc_error* CompressInitCallElem(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle CompressInitCallElem(grpc_call_element* elem, + const grpc_call_element_args* args) { new (elem->call_data) CallData(elem, *args); return GRPC_ERROR_NONE; } @@ -518,8 +519,8 @@ void CompressDestroyCallElem(grpc_call_element* elem, } /* Constructor for ChannelData */ -grpc_error* CompressInitChannelElem(grpc_channel_element* elem, - grpc_channel_element_args* args) { +grpc_error_handle CompressInitChannelElem(grpc_channel_element* elem, + grpc_channel_element_args* args) { new (elem->channel_data) ChannelData(args); return GRPC_ERROR_NONE; } diff --git a/src/core/ext/filters/http/message_compress/message_decompress_filter.cc b/src/core/ext/filters/http/message_compress/message_decompress_filter.cc index 4ab8a5638c5..426dd9039d7 100644 --- a/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +++ b/src/core/ext/filters/http/message_compress/message_decompress_filter.cc @@ -89,24 +89,24 @@ class CallData { grpc_call_element* elem, grpc_transport_stream_op_batch* batch); private: - static void OnRecvInitialMetadataReady(void* arg, grpc_error* error); + static void OnRecvInitialMetadataReady(void* arg, grpc_error_handle error); // Methods for processing a receive message event void MaybeResumeOnRecvMessageReady(); - static void OnRecvMessageReady(void* arg, grpc_error* error); - static void OnRecvMessageNextDone(void* arg, grpc_error* error); - grpc_error* PullSliceFromRecvMessage(); + static void OnRecvMessageReady(void* arg, grpc_error_handle error); + static void OnRecvMessageNextDone(void* arg, grpc_error_handle error); + grpc_error_handle PullSliceFromRecvMessage(); void ContinueReadingRecvMessage(); void FinishRecvMessage(); - void ContinueRecvMessageReadyCallback(grpc_error* error); + void ContinueRecvMessageReadyCallback(grpc_error_handle error); // Methods for processing a recv_trailing_metadata event void MaybeResumeOnRecvTrailingMetadataReady(); - static void OnRecvTrailingMetadataReady(void* arg, grpc_error* error); + static void OnRecvTrailingMetadataReady(void* arg, grpc_error_handle error); CallCombiner* call_combiner_; // Overall error for the call - grpc_error* error_ = GRPC_ERROR_NONE; + grpc_error_handle error_ = GRPC_ERROR_NONE; // Fields for handling recv_initial_metadata_ready callback grpc_closure on_recv_initial_metadata_ready_; grpc_closure* original_recv_initial_metadata_ready_ = nullptr; @@ -130,7 +130,7 @@ class CallData { bool seen_recv_trailing_metadata_ready_ = false; grpc_closure on_recv_trailing_metadata_ready_; grpc_closure* original_recv_trailing_metadata_ready_ = nullptr; - grpc_error* on_recv_trailing_metadata_ready_error_ = GRPC_ERROR_NONE; + grpc_error_handle on_recv_trailing_metadata_ready_error_ = GRPC_ERROR_NONE; }; grpc_message_compression_algorithm DecodeMessageCompressionAlgorithm( @@ -149,7 +149,7 @@ grpc_message_compression_algorithm DecodeMessageCompressionAlgorithm( return algorithm; } -void CallData::OnRecvInitialMetadataReady(void* arg, grpc_error* error) { +void CallData::OnRecvInitialMetadataReady(void* arg, grpc_error_handle error) { CallData* calld = static_cast(arg); if (error == GRPC_ERROR_NONE) { grpc_linked_mdelem* grpc_encoding = @@ -174,7 +174,7 @@ void CallData::MaybeResumeOnRecvMessageReady() { } } -void CallData::OnRecvMessageReady(void* arg, grpc_error* error) { +void CallData::OnRecvMessageReady(void* arg, grpc_error_handle error) { CallData* calld = static_cast(arg); if (error == GRPC_ERROR_NONE) { if (calld->original_recv_initial_metadata_ready_ != nullptr) { @@ -218,7 +218,7 @@ void CallData::ContinueReadingRecvMessage() { while ((*recv_message_) ->Next((*recv_message_)->length() - recv_slices_.length, &on_recv_message_next_done_)) { - grpc_error* error = PullSliceFromRecvMessage(); + grpc_error_handle error = PullSliceFromRecvMessage(); if (error != GRPC_ERROR_NONE) { return ContinueRecvMessageReadyCallback(error); } @@ -229,16 +229,16 @@ void CallData::ContinueReadingRecvMessage() { } } -grpc_error* CallData::PullSliceFromRecvMessage() { +grpc_error_handle CallData::PullSliceFromRecvMessage() { grpc_slice incoming_slice; - grpc_error* error = (*recv_message_)->Pull(&incoming_slice); + grpc_error_handle error = (*recv_message_)->Pull(&incoming_slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&recv_slices_, incoming_slice); } return error; } -void CallData::OnRecvMessageNextDone(void* arg, grpc_error* error) { +void CallData::OnRecvMessageNextDone(void* arg, grpc_error_handle error) { CallData* calld = static_cast(arg); if (error != GRPC_ERROR_NONE) { return calld->ContinueRecvMessageReadyCallback(GRPC_ERROR_REF(error)); @@ -283,7 +283,7 @@ void CallData::FinishRecvMessage() { ContinueRecvMessageReadyCallback(GRPC_ERROR_REF(error_)); } -void CallData::ContinueRecvMessageReadyCallback(grpc_error* error) { +void CallData::ContinueRecvMessageReadyCallback(grpc_error_handle error) { MaybeResumeOnRecvTrailingMetadataReady(); // The surface will clean up the receiving stream if there is an error. grpc_closure* closure = original_recv_message_ready_; @@ -294,14 +294,14 @@ void CallData::ContinueRecvMessageReadyCallback(grpc_error* error) { void CallData::MaybeResumeOnRecvTrailingMetadataReady() { if (seen_recv_trailing_metadata_ready_) { seen_recv_trailing_metadata_ready_ = false; - grpc_error* error = on_recv_trailing_metadata_ready_error_; + grpc_error_handle error = on_recv_trailing_metadata_ready_error_; on_recv_trailing_metadata_ready_error_ = GRPC_ERROR_NONE; GRPC_CALL_COMBINER_START(call_combiner_, &on_recv_trailing_metadata_ready_, error, "Continuing OnRecvTrailingMetadataReady"); } } -void CallData::OnRecvTrailingMetadataReady(void* arg, grpc_error* error) { +void CallData::OnRecvTrailingMetadataReady(void* arg, grpc_error_handle error) { CallData* calld = static_cast(arg); if (calld->original_recv_initial_metadata_ready_ != nullptr || calld->original_recv_message_ready_ != nullptr) { @@ -356,8 +356,8 @@ void DecompressStartTransportStreamOpBatch( calld->DecompressStartTransportStreamOpBatch(elem, batch); } -grpc_error* DecompressInitCallElem(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle DecompressInitCallElem(grpc_call_element* elem, + const grpc_call_element_args* args) { ChannelData* chand = static_cast(elem->channel_data); new (elem->call_data) CallData(*args, chand); return GRPC_ERROR_NONE; @@ -370,8 +370,8 @@ void DecompressDestroyCallElem(grpc_call_element* elem, calld->~CallData(); } -grpc_error* DecompressInitChannelElem(grpc_channel_element* elem, - grpc_channel_element_args* args) { +grpc_error_handle DecompressInitChannelElem(grpc_channel_element* elem, + grpc_channel_element_args* args) { ChannelData* chand = static_cast(elem->channel_data); new (chand) ChannelData(args); return GRPC_ERROR_NONE; diff --git a/src/core/ext/filters/http/server/http_server_filter.cc b/src/core/ext/filters/http/server/http_server_filter.cc index e4ece548b55..226ba020b4f 100644 --- a/src/core/ext/filters/http/server/http_server_filter.cc +++ b/src/core/ext/filters/http/server/http_server_filter.cc @@ -35,9 +35,11 @@ #define EXPECTED_CONTENT_TYPE "application/grpc" #define EXPECTED_CONTENT_TYPE_LENGTH (sizeof(EXPECTED_CONTENT_TYPE) - 1) -static void hs_recv_initial_metadata_ready(void* user_data, grpc_error* err); -static void hs_recv_trailing_metadata_ready(void* user_data, grpc_error* err); -static void hs_recv_message_ready(void* user_data, grpc_error* err); +static void hs_recv_initial_metadata_ready(void* user_data, + grpc_error_handle err); +static void hs_recv_trailing_metadata_ready(void* user_data, + grpc_error_handle err); +static void hs_recv_message_ready(void* user_data, grpc_error_handle err); namespace { @@ -74,7 +76,7 @@ struct call_data { // State for intercepting recv_initial_metadata. grpc_closure recv_initial_metadata_ready; - grpc_error* recv_initial_metadata_ready_error = GRPC_ERROR_NONE; + grpc_error_handle recv_initial_metadata_ready_error = GRPC_ERROR_NONE; grpc_closure* original_recv_initial_metadata_ready; grpc_metadata_batch* recv_initial_metadata = nullptr; uint32_t* recv_initial_metadata_flags; @@ -89,7 +91,7 @@ struct call_data { // State for intercepting recv_trailing_metadata grpc_closure recv_trailing_metadata_ready; grpc_closure* original_recv_trailing_metadata_ready; - grpc_error* recv_trailing_metadata_ready_error; + grpc_error_handle recv_trailing_metadata_ready_error; bool seen_recv_trailing_metadata_ready = false; }; @@ -99,7 +101,7 @@ struct channel_data { } // namespace -static grpc_error* hs_filter_outgoing_metadata(grpc_metadata_batch* b) { +static grpc_error_handle hs_filter_outgoing_metadata(grpc_metadata_batch* b) { if (b->idx.named.grpc_message != nullptr) { grpc_slice pct_encoded_msg = grpc_percent_encode_slice( GRPC_MDVALUE(b->idx.named.grpc_message->md), @@ -114,8 +116,8 @@ static grpc_error* hs_filter_outgoing_metadata(grpc_metadata_batch* b) { return GRPC_ERROR_NONE; } -static void hs_add_error(const char* error_name, grpc_error** cumulative, - grpc_error* new_err) { +static void hs_add_error(const char* error_name, grpc_error_handle* cumulative, + grpc_error_handle new_err) { if (new_err == GRPC_ERROR_NONE) return; if (*cumulative == GRPC_ERROR_NONE) { *cumulative = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_name); @@ -149,10 +151,10 @@ static bool md_strict_equal(grpc_mdelem a, grpc_mdelem b_static) { } } -static grpc_error* hs_filter_incoming_metadata(grpc_call_element* elem, - grpc_metadata_batch* b) { +static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem, + grpc_metadata_batch* b) { call_data* calld = static_cast(elem->call_data); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* error_name = "Failed processing incoming headers"; if (b->idx.named.method != nullptr) { @@ -330,7 +332,8 @@ static grpc_error* hs_filter_incoming_metadata(grpc_call_element* elem, return error; } -static void hs_recv_initial_metadata_ready(void* user_data, grpc_error* err) { +static void hs_recv_initial_metadata_ready(void* user_data, + grpc_error_handle err) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); calld->seen_recv_initial_metadata_ready = true; @@ -367,7 +370,7 @@ static void hs_recv_initial_metadata_ready(void* user_data, grpc_error* err) { calld->original_recv_initial_metadata_ready, err); } -static void hs_recv_message_ready(void* user_data, grpc_error* err) { +static void hs_recv_message_ready(void* user_data, grpc_error_handle err) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); calld->seen_recv_message_ready = true; @@ -392,7 +395,8 @@ static void hs_recv_message_ready(void* user_data, grpc_error* err) { } } -static void hs_recv_trailing_metadata_ready(void* user_data, grpc_error* err) { +static void hs_recv_trailing_metadata_ready(void* user_data, + grpc_error_handle err) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (!calld->seen_recv_initial_metadata_ready) { @@ -410,13 +414,13 @@ static void hs_recv_trailing_metadata_ready(void* user_data, grpc_error* err) { calld->original_recv_trailing_metadata_ready, err); } -static grpc_error* hs_mutate_op(grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { +static grpc_error_handle hs_mutate_op(grpc_call_element* elem, + grpc_transport_stream_op_batch* op) { /* grab pointers to our data from the call element */ call_data* calld = static_cast(elem->call_data); if (op->send_initial_metadata) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* error_name = "Failed sending initial metadata"; hs_add_error( error_name, &error, @@ -463,7 +467,7 @@ static grpc_error* hs_mutate_op(grpc_call_element* elem, } if (op->send_trailing_metadata) { - grpc_error* error = hs_filter_outgoing_metadata( + grpc_error_handle error = hs_filter_outgoing_metadata( op->payload->send_trailing_metadata.send_trailing_metadata); if (error != GRPC_ERROR_NONE) return error; } @@ -475,7 +479,7 @@ static void hs_start_transport_stream_op_batch( grpc_call_element* elem, grpc_transport_stream_op_batch* op) { GPR_TIMER_SCOPE("hs_start_transport_stream_op_batch", 0); call_data* calld = static_cast(elem->call_data); - grpc_error* error = hs_mutate_op(elem, op); + grpc_error_handle error = hs_mutate_op(elem, op); if (error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure(op, error, calld->call_combiner); @@ -485,8 +489,8 @@ static void hs_start_transport_stream_op_batch( } /* Constructor for call_data */ -static grpc_error* hs_init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle hs_init_call_elem(grpc_call_element* elem, + const grpc_call_element_args* args) { new (elem->call_data) call_data(elem, *args); return GRPC_ERROR_NONE; } @@ -500,8 +504,8 @@ static void hs_destroy_call_elem(grpc_call_element* elem, } /* Constructor for channel_data */ -static grpc_error* hs_init_channel_elem(grpc_channel_element* elem, - grpc_channel_element_args* args) { +static grpc_error_handle hs_init_channel_elem(grpc_channel_element* elem, + grpc_channel_element_args* args) { channel_data* chand = static_cast(elem->channel_data); GPR_ASSERT(!args->is_last); chand->surface_user_agent = grpc_channel_arg_get_bool( diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc index 6c7b42a89b9..664cf4ab8b8 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc @@ -50,7 +50,7 @@ constexpr char kEncodedIpv6AddressLengthString[] = "32"; constexpr char kEmptyAddressLengthString[] = "00"; constexpr size_t kLengthPrefixSize = 2; -grpc_error* ServerLoadReportingChannelData::Init( +grpc_error_handle ServerLoadReportingChannelData::Init( grpc_channel_element* /* elem */, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); // Find and record the peer_identity. @@ -232,8 +232,8 @@ grpc_filtered_mdelem ServerLoadReportingCallData::RecvInitialMetadataFilter( return GRPC_FILTERED_MDELEM(md); } -void ServerLoadReportingCallData::RecvInitialMetadataReady(void* arg, - grpc_error* err) { +void ServerLoadReportingCallData::RecvInitialMetadataReady( + void* arg, grpc_error_handle err) { grpc_call_element* elem = reinterpret_cast(arg); ServerLoadReportingCallData* calld = reinterpret_cast(elem->call_data); @@ -264,7 +264,7 @@ void ServerLoadReportingCallData::RecvInitialMetadataReady(void* arg, GRPC_ERROR_REF(err)); } -grpc_error* ServerLoadReportingCallData::Init( +grpc_error_handle ServerLoadReportingCallData::Init( grpc_call_element* elem, const grpc_call_element_args* /*args*/) { service_method_ = grpc_empty_slice(); GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady, diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h index 3bfdc989059..47390fa0219 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h @@ -30,8 +30,8 @@ namespace grpc { class ServerLoadReportingChannelData : public ChannelData { public: - grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args) override; + grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args) override; // Getters. const char* peer_identity() { return peer_identity_; } @@ -45,8 +45,8 @@ class ServerLoadReportingChannelData : public ChannelData { class ServerLoadReportingCallData : public CallData { public: - grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args) override; + grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args) override; void Destroy(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_call_closure) override; @@ -68,7 +68,7 @@ class ServerLoadReportingCallData : public CallData { static const char* GetStatusTagForStatus(grpc_status_code status); // Records the call start. - static void RecvInitialMetadataReady(void* arg, grpc_error* err); + static void RecvInitialMetadataReady(void* arg, grpc_error_handle err); // From the initial metadata, extracts the service_method_, target_host_, and // client_ip_and_lr_token_. diff --git a/src/core/ext/filters/max_age/max_age_filter.cc b/src/core/ext/filters/max_age/max_age_filter.cc index ee89272fcf3..97a4dc28c90 100644 --- a/src/core/ext/filters/max_age/max_age_filter.cc +++ b/src/core/ext/filters/max_age/max_age_filter.cc @@ -206,7 +206,8 @@ static void decrease_call_count(channel_data* chand) { } } -static void start_max_idle_timer_after_init(void* arg, grpc_error* /*error*/) { +static void start_max_idle_timer_after_init(void* arg, + grpc_error_handle /*error*/) { channel_data* chand = static_cast(arg); /* Decrease call_count. If there are no active calls at this time, max_idle_timer will start here. If the number of active calls is not 0, @@ -258,7 +259,8 @@ class ConnectivityWatcher : public AsyncConnectivityStateWatcherInterface { } // namespace grpc_core -static void start_max_age_timer_after_init(void* arg, grpc_error* /*error*/) { +static void start_max_age_timer_after_init(void* arg, + grpc_error_handle /*error*/) { channel_data* chand = static_cast(arg); { grpc_core::MutexLock lock(&chand->max_age_timer_mu); @@ -277,8 +279,8 @@ static void start_max_age_timer_after_init(void* arg, grpc_error* /*error*/) { "max_age start_max_age_timer_after_init"); } -static void start_max_age_grace_timer_after_goaway_op(void* arg, - grpc_error* /*error*/) { +static void start_max_age_grace_timer_after_goaway_op( + void* arg, grpc_error_handle /*error*/) { channel_data* chand = static_cast(arg); { grpc_core::MutexLock lock(&chand->max_age_timer_mu); @@ -307,7 +309,7 @@ static void close_max_idle_channel(channel_data* chand) { elem->filter->start_transport_op(elem, op); } -static void max_idle_timer_cb(void* arg, grpc_error* error) { +static void max_idle_timer_cb(void* arg, grpc_error_handle error) { channel_data* chand = static_cast(arg); if (error == GRPC_ERROR_NONE) { bool try_again = true; @@ -351,7 +353,7 @@ static void max_idle_timer_cb(void* arg, grpc_error* error) { GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_idle_timer"); } -static void close_max_age_channel(void* arg, grpc_error* error) { +static void close_max_age_channel(void* arg, grpc_error_handle error) { channel_data* chand = static_cast(arg); { grpc_core::MutexLock lock(&chand->max_age_timer_mu); @@ -374,7 +376,7 @@ static void close_max_age_channel(void* arg, grpc_error* error) { GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_timer"); } -static void force_close_max_age_channel(void* arg, grpc_error* error) { +static void force_close_max_age_channel(void* arg, grpc_error_handle error) { channel_data* chand = static_cast(arg); { grpc_core::MutexLock lock(&chand->max_age_timer_mu); @@ -412,7 +414,7 @@ add_random_max_connection_age_jitter_and_convert_to_grpc_millis(int value) { } /* Constructor for call_data. */ -static grpc_error* max_age_init_call_elem( +static grpc_error_handle max_age_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* /*args*/) { channel_data* chand = static_cast(elem->channel_data); increase_call_count(chand); @@ -428,8 +430,8 @@ static void max_age_destroy_call_elem( } /* Constructor for channel_data. */ -static grpc_error* max_age_init_channel_elem(grpc_channel_element* elem, - grpc_channel_element_args* args) { +static grpc_error_handle max_age_init_channel_elem( + grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* chand = static_cast(elem->channel_data); new (chand) channel_data(); chand->channel_stack = args->channel_stack; diff --git a/src/core/ext/filters/message_size/message_size_filter.cc b/src/core/ext/filters/message_size/message_size_filter.cc index 10a58d98066..3c921e28ecd 100644 --- a/src/core/ext/filters/message_size/message_size_filter.cc +++ b/src/core/ext/filters/message_size/message_size_filter.cc @@ -37,8 +37,9 @@ #include "src/core/lib/surface/call.h" #include "src/core/lib/surface/channel_init.h" -static void recv_message_ready(void* user_data, grpc_error* error); -static void recv_trailing_metadata_ready(void* user_data, grpc_error* error); +static void recv_message_ready(void* user_data, grpc_error_handle error); +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle error); namespace grpc_core { @@ -67,9 +68,10 @@ const MessageSizeParsedConfig* MessageSizeParsedConfig::GetFromCallContext( std::unique_ptr MessageSizeParser::ParsePerMethodParams(const grpc_channel_args* /*args*/, - const Json& json, grpc_error** error) { + const Json& json, + grpc_error_handle* error) { GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE); - std::vector error_list; + std::vector error_list; // Max request size. int max_request_message_bytes = -1; auto it = json.object_value().find("maxRequestMessageBytes"); @@ -179,7 +181,7 @@ struct call_data { grpc_closure recv_message_ready; grpc_closure recv_trailing_metadata_ready; // The error caused by a message that is too large, or GRPC_ERROR_NONE - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // Used by recv_message_ready. grpc_core::OrphanablePtr* recv_message = nullptr; // Original recv_message_ready callback, invoked after our own. @@ -187,20 +189,20 @@ struct call_data { // Original recv_trailing_metadata callback, invoked after our own. grpc_closure* original_recv_trailing_metadata_ready; bool seen_recv_trailing_metadata = false; - grpc_error* recv_trailing_metadata_error; + grpc_error_handle recv_trailing_metadata_error; }; } // namespace // Callback invoked when we receive a message. Here we check the max // receive message size. -static void recv_message_ready(void* user_data, grpc_error* error) { +static void recv_message_ready(void* user_data, grpc_error_handle error) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (*calld->recv_message != nullptr && calld->limits.max_recv_size >= 0 && (*calld->recv_message)->length() > static_cast(calld->limits.max_recv_size)) { - grpc_error* new_error = grpc_error_set_int( + grpc_error_handle new_error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat("Received message larger than max (%u vs. %d)", (*calld->recv_message)->length(), @@ -233,7 +235,8 @@ static void recv_message_ready(void* user_data, grpc_error* error) { // Callback invoked on completion of recv_trailing_metadata // Notifies the recv_trailing_metadata batch of any message size failures -static void recv_trailing_metadata_ready(void* user_data, grpc_error* error) { +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle error) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (calld->next_recv_message_ready != nullptr) { @@ -291,7 +294,7 @@ static void message_size_start_transport_stream_op_batch( } // Constructor for call_data. -static grpc_error* message_size_init_call_elem( +static grpc_error_handle message_size_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { channel_data* chand = static_cast(elem->channel_data); new (elem->call_data) call_data(elem, *chand, *args); @@ -315,7 +318,7 @@ grpc_core::MessageSizeParsedConfig::message_size_limits get_message_size_limits( } // Constructor for channel_data. -static grpc_error* message_size_init_channel_elem( +static grpc_error_handle message_size_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); channel_data* chand = static_cast(elem->channel_data); diff --git a/src/core/ext/filters/message_size/message_size_filter.h b/src/core/ext/filters/message_size/message_size_filter.h index 0583a789267..6629803e4e1 100644 --- a/src/core/ext/filters/message_size/message_size_filter.h +++ b/src/core/ext/filters/message_size/message_size_filter.h @@ -51,7 +51,7 @@ class MessageSizeParser : public ServiceConfigParser::Parser { public: std::unique_ptr ParsePerMethodParams( const grpc_channel_args* /*args*/, const Json& json, - grpc_error** error) override; + grpc_error_handle* error) override; static void Register(); diff --git a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc index 40239d6c300..b2e8f3fd98f 100644 --- a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +++ b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc @@ -54,7 +54,8 @@ static bool get_user_agent_mdelem(const grpc_metadata_batch* batch, } // Callback invoked when we receive an initial metadata. -static void recv_initial_metadata_ready(void* user_data, grpc_error* error) { +static void recv_initial_metadata_ready(void* user_data, + grpc_error_handle error) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); @@ -105,7 +106,7 @@ static void cronet_compression_start_transport_stream_op_batch( } // Constructor for call_data. -static grpc_error* cronet_compression_init_call_elem( +static grpc_error_handle cronet_compression_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* /*args*/) { call_data* calld = static_cast(elem->call_data); calld->next_recv_initial_metadata_ready = nullptr; @@ -122,7 +123,7 @@ static void cronet_compression_destroy_call_elem( grpc_closure* /*ignored*/) {} // Constructor for channel_data. -static grpc_error* cronet_compression_init_channel_elem( +static grpc_error_handle cronet_compression_init_channel_elem( grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/src/core/ext/transport/chttp2/client/chttp2_connector.cc index 345663a04cd..8b3d5d75d9c 100644 --- a/src/core/ext/transport/chttp2/client/chttp2_connector.cc +++ b/src/core/ext/transport/chttp2/client/chttp2_connector.cc @@ -75,7 +75,7 @@ void Chttp2Connector::Connect(const Args& args, Result* result, args.channel_args, &addr, args.deadline); } -void Chttp2Connector::Shutdown(grpc_error* error) { +void Chttp2Connector::Shutdown(grpc_error_handle error) { MutexLock lock(&mu_); shutdown_ = true; if (handshake_mgr_ != nullptr) { @@ -89,7 +89,7 @@ void Chttp2Connector::Shutdown(grpc_error* error) { GRPC_ERROR_UNREF(error); } -void Chttp2Connector::Connected(void* arg, grpc_error* error) { +void Chttp2Connector::Connected(void* arg, grpc_error_handle error) { Chttp2Connector* self = static_cast(arg); bool unref = false; { @@ -131,14 +131,14 @@ void Chttp2Connector::StartHandshakeLocked() { namespace { void NullThenSchedClosure(const DebugLocation& location, grpc_closure** closure, - grpc_error* error) { + grpc_error_handle error) { grpc_closure* c = *closure; *closure = nullptr; ExecCtx::Run(location, c, error); } } // namespace -void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error* error) { +void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error_handle error) { auto* args = static_cast(arg); Chttp2Connector* self = static_cast(args->user_data); { @@ -194,7 +194,7 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error* error) { self->Unref(); } -void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error* error) { +void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error_handle error) { Chttp2Connector* self = static_cast(arg); { MutexLock lock(&self->mu_); @@ -220,7 +220,7 @@ void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error* error) { self->Unref(); } -void Chttp2Connector::OnTimeout(void* arg, grpc_error* /*error*/) { +void Chttp2Connector::OnTimeout(void* arg, grpc_error_handle /*error*/) { Chttp2Connector* self = static_cast(arg); { MutexLock lock(&self->mu_); @@ -245,7 +245,7 @@ void Chttp2Connector::OnTimeout(void* arg, grpc_error* /*error*/) { self->Unref(); } -void Chttp2Connector::MaybeNotify(grpc_error* error) { +void Chttp2Connector::MaybeNotify(grpc_error_handle error) { if (notify_error_.has_value()) { GRPC_ERROR_UNREF(error); NullThenSchedClosure(DEBUG_LOCATION, ¬ify_, notify_error_.value()); diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.h b/src/core/ext/transport/chttp2/client/chttp2_connector.h index 7624b7f8f7e..59db078f3b7 100644 --- a/src/core/ext/transport/chttp2/client/chttp2_connector.h +++ b/src/core/ext/transport/chttp2/client/chttp2_connector.h @@ -33,14 +33,14 @@ class Chttp2Connector : public SubchannelConnector { ~Chttp2Connector() override; void Connect(const Args& args, Result* result, grpc_closure* notify) override; - void Shutdown(grpc_error* error) override; + void Shutdown(grpc_error_handle error) override; private: - static void Connected(void* arg, grpc_error* error); + static void Connected(void* arg, grpc_error_handle error); void StartHandshakeLocked(); - static void OnHandshakeDone(void* arg, grpc_error* error); - static void OnReceiveSettings(void* arg, grpc_error* error); - static void OnTimeout(void* arg, grpc_error* error); + static void OnHandshakeDone(void* arg, grpc_error_handle error); + static void OnReceiveSettings(void* arg, grpc_error_handle error); + static void OnTimeout(void* arg, grpc_error_handle error); // We cannot invoke notify_ until both OnTimeout() and OnReceiveSettings() // have been called since that is an indicator to the upper layer that we are @@ -51,7 +51,7 @@ class Chttp2Connector : public SubchannelConnector { // invoked, we call MaybeNotify() again to actually invoke the notify_ // callback. Note that this only happens if the handshake is done and the // connector is waiting on the SETTINGS frame. - void MaybeNotify(grpc_error* error); + void MaybeNotify(grpc_error_handle error); Mutex mu_; Args args_; @@ -66,7 +66,7 @@ class Chttp2Connector : public SubchannelConnector { grpc_closure on_receive_settings_; grpc_timer timer_; grpc_closure on_timeout_; - absl::optional notify_error_; + absl::optional notify_error_; RefCountedPtr handshake_mgr_; }; diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc index d82cc1d3f5e..58f274264a7 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc @@ -51,7 +51,7 @@ class Chttp2InsecureClientChannelFactory : public ClientChannelFactory { namespace { grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args, - grpc_error** error) { + grpc_error_handle* error) { if (target == nullptr) { gpr_log(GPR_ERROR, "cannot create channel with NULL target name"); if (error != nullptr) { @@ -106,7 +106,7 @@ grpc_channel* grpc_insecure_channel_create(const char* target, const char* arg_to_remove = arg.key; grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove( args, &arg_to_remove, 1, &arg, 1); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // Create channel. grpc_channel* channel = grpc_core::CreateChannel(target, new_args, &error); // Clean up. diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc index 1360047cd56..4700093e310 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc @@ -56,7 +56,7 @@ grpc_channel* grpc_insecure_channel_create_from_fd( grpc_transport* transport = grpc_create_chttp2_transport(final_args, client, true); GPR_ASSERT(transport); - grpc_error* error = nullptr; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_channel* channel = grpc_channel_create(target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport, nullptr, &error); diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc index 225628cb9fc..f128d341d6f 100644 --- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc @@ -129,7 +129,7 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory { namespace { grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args, - grpc_error** error) { + grpc_error_handle* error) { if (target == nullptr) { gpr_log(GPR_ERROR, "cannot create channel with NULL target name"); if (error != nullptr) { @@ -181,7 +181,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds, 4, ((void*)creds, target, (void*)args, (void*)reserved)); GPR_ASSERT(reserved == nullptr); grpc_channel* channel = nullptr; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (creds != nullptr) { // Add channel args containing the client channel factory and channel // credentials. diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc index ee01addc558..009dafea545 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.cc +++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc @@ -61,14 +61,14 @@ const char kUnixAbstractUriPrefix[] = "unix-abstract:"; class Chttp2ServerListener : public Server::ListenerInterface { public: - static grpc_error* Create(Server* server, grpc_resolved_address* addr, - grpc_channel_args* args, - Chttp2ServerArgsModifier args_modifier, - int* port_num); + static grpc_error_handle Create(Server* server, grpc_resolved_address* addr, + grpc_channel_args* args, + Chttp2ServerArgsModifier args_modifier, + int* port_num); - static grpc_error* CreateWithAcceptor(Server* server, const char* name, - grpc_channel_args* args, - Chttp2ServerArgsModifier args_modifier); + static grpc_error_handle CreateWithAcceptor( + Server* server, const char* name, grpc_channel_args* args, + Chttp2ServerArgsModifier args_modifier); // Do not instantiate directly. Use one of the factory methods above. Chttp2ServerListener(Server* server, grpc_channel_args* args, @@ -122,9 +122,9 @@ class Chttp2ServerListener : public Server::ListenerInterface { using InternallyRefCounted::Ref; private: - static void OnTimeout(void* arg, grpc_error* error); - static void OnReceiveSettings(void* arg, grpc_error* /* error */); - static void OnHandshakeDone(void* arg, grpc_error* error); + static void OnTimeout(void* arg, grpc_error_handle error); + static void OnReceiveSettings(void* arg, grpc_error_handle /* error */); + static void OnHandshakeDone(void* arg, grpc_error_handle error); RefCountedPtr const connection_; grpc_pollset* const accepting_pollset_; grpc_tcp_server_acceptor* const acceptor_; @@ -155,7 +155,7 @@ class Chttp2ServerListener : public Server::ListenerInterface { using InternallyRefCounted::Ref; private: - static void OnClose(void* arg, grpc_error* error); + static void OnClose(void* arg, grpc_error_handle error); RefCountedPtr listener_; Mutex mu_ ABSL_ACQUIRED_AFTER(&listener_->mu_); @@ -179,7 +179,7 @@ class Chttp2ServerListener : public Server::ListenerInterface { grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor); - static void TcpServerShutdownComplete(void* arg, grpc_error* error); + static void TcpServerShutdownComplete(void* arg, grpc_error_handle error); static void DestroyListener(Server* /*server*/, void* arg, grpc_closure* destroy_done); @@ -259,7 +259,7 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager( if (listener_->started_) return; } int port_temp; - grpc_error* error = grpc_tcp_server_add_port( + grpc_error_handle error = grpc_tcp_server_add_port( listener_->tcp_server_, &listener_->resolved_address_, &port_temp); if (error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(error); @@ -347,7 +347,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::Start( } void Chttp2ServerListener::ActiveConnection::HandshakingState::OnTimeout( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { HandshakingState* self = static_cast(arg); // Note that we may be called with GRPC_ERROR_NONE when the timer fires // or with an error indicating that the timer system is being shut down. @@ -366,14 +366,14 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnTimeout( } void Chttp2ServerListener::ActiveConnection::HandshakingState:: - OnReceiveSettings(void* arg, grpc_error* /* error */) { + OnReceiveSettings(void* arg, grpc_error_handle /* error */) { HandshakingState* self = static_cast(arg); grpc_timer_cancel(&self->timer_); self->Unref(); } void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { auto* args = static_cast(arg); HandshakingState* self = static_cast(args->user_data); OrphanablePtr handshaking_state_ref; @@ -409,7 +409,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone( if (args->endpoint != nullptr) { grpc_transport* transport = grpc_create_chttp2_transport( args->args, args->endpoint, false, resource_user); - grpc_error* channel_init_err = + grpc_error_handle channel_init_err = self->connection_->listener_->server_->SetupTransport( transport, self->accepting_pollset_, args->args, grpc_chttp2_transport_get_socket_node(transport), @@ -553,8 +553,8 @@ void Chttp2ServerListener::ActiveConnection::Start( handshaking_state_ref->Start(endpoint, args); } -void Chttp2ServerListener::ActiveConnection::OnClose(void* arg, - grpc_error* /* error */) { +void Chttp2ServerListener::ActiveConnection::OnClose( + void* arg, grpc_error_handle /* error */) { ActiveConnection* self = static_cast(arg); OrphanablePtr connection; { @@ -577,15 +577,13 @@ void Chttp2ServerListener::ActiveConnection::OnClose(void* arg, // Chttp2ServerListener // -grpc_error* Chttp2ServerListener::Create(Server* server, - grpc_resolved_address* addr, - grpc_channel_args* args, - Chttp2ServerArgsModifier args_modifier, - int* port_num) { +grpc_error_handle Chttp2ServerListener::Create( + Server* server, grpc_resolved_address* addr, grpc_channel_args* args, + Chttp2ServerArgsModifier args_modifier, int* port_num) { Chttp2ServerListener* listener = nullptr; // The bulk of this method is inside of a lambda to make cleanup // easier without using goto. - grpc_error* error = [&]() { + grpc_error_handle error = [&]() { // Create Chttp2ServerListener. listener = new Chttp2ServerListener(server, args, args_modifier); error = grpc_tcp_server_create(&listener->tcp_server_shutdown_complete_, @@ -627,12 +625,12 @@ grpc_error* Chttp2ServerListener::Create(Server* server, return error; } -grpc_error* Chttp2ServerListener::CreateWithAcceptor( +grpc_error_handle Chttp2ServerListener::CreateWithAcceptor( Server* server, const char* name, grpc_channel_args* args, Chttp2ServerArgsModifier args_modifier) { Chttp2ServerListener* listener = new Chttp2ServerListener(server, args, args_modifier); - grpc_error* error = grpc_tcp_server_create( + grpc_error_handle error = grpc_tcp_server_create( &listener->tcp_server_shutdown_complete_, args, &listener->tcp_server_); if (error != GRPC_ERROR_NONE) { delete listener; @@ -710,14 +708,14 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, args = grpc_channel_args_copy(self->args_); connection_manager = self->connection_manager_; } - auto endpoint_cleanup = [&](grpc_error* error) { + auto endpoint_cleanup = [&](grpc_error_handle error) { grpc_endpoint_shutdown(tcp, error); grpc_endpoint_destroy(tcp); gpr_free(acceptor); }; if (self->server_->config_fetcher() != nullptr) { if (connection_manager == nullptr) { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "No ConnectionManager configured. Closing connection."); endpoint_cleanup(error); grpc_channel_args_destroy(args); @@ -734,7 +732,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, args_result.status().ToString().c_str())); return; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; args = self->args_modifier_(*args_result, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_DEBUG, "Closing connection: %s", grpc_error_string(error)); @@ -781,7 +779,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, } void Chttp2ServerListener::TcpServerShutdownComplete(void* arg, - grpc_error* error) { + grpc_error_handle error) { Chttp2ServerListener* self = static_cast(arg); self->channelz_listen_socket_.reset(); GRPC_ERROR_UNREF(error); @@ -822,19 +820,19 @@ void Chttp2ServerListener::Orphan() { // Chttp2ServerAddPort() // -grpc_error* Chttp2ServerAddPort(Server* server, const char* addr, - grpc_channel_args* args, - Chttp2ServerArgsModifier args_modifier, - int* port_num) { +grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr, + grpc_channel_args* args, + Chttp2ServerArgsModifier args_modifier, + int* port_num) { if (strncmp(addr, "external:", 9) == 0) { return grpc_core::Chttp2ServerListener::CreateWithAcceptor( server, addr, args, args_modifier); } *port_num = -1; grpc_resolved_addresses* resolved = nullptr; - std::vector error_list; + std::vector error_list; // Using lambda to avoid use of goto. - grpc_error* error = [&]() { + grpc_error_handle error = [&]() { if (absl::StartsWith(addr, kUnixUriPrefix)) { error = grpc_resolve_unix_domain_address( addr + sizeof(kUnixUriPrefix) - 1, &resolved); @@ -885,7 +883,7 @@ grpc_error* Chttp2ServerAddPort(Server* server, const char* addr, } return GRPC_ERROR_NONE; }(); // lambda end - for (grpc_error* error : error_list) { + for (grpc_error_handle error : error_list) { GRPC_ERROR_UNREF(error); } grpc_channel_args_destroy(args); diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.h b/src/core/ext/transport/chttp2/server/chttp2_server.h index 10322e9af34..e4e6b7cc978 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.h +++ b/src/core/ext/transport/chttp2/server/chttp2_server.h @@ -34,11 +34,11 @@ namespace grpc_core { // added to the server. Takes ownership of the args. Caller takes ownership of // returned args. On failure, the error parameter will be set. using Chttp2ServerArgsModifier = - std::function; + std::function; /// Adds a port to \a server. Sets \a port_num to the port number. /// Takes ownership of \a args. -grpc_error* Chttp2ServerAddPort( +grpc_error_handle Chttp2ServerAddPort( Server* server, const char* addr, grpc_channel_args* args, Chttp2ServerArgsModifier connection_args_modifier, int* port_num); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc index 3a3d6f371e5..ee402cf678a 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc @@ -30,7 +30,7 @@ namespace { grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args, - grpc_error** /*error*/) { + grpc_error_handle* /*error*/) { return args; } @@ -41,7 +41,7 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) { int port_num = 0; GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2, (server, addr)); - grpc_error* err = grpc_core::Chttp2ServerAddPort( + grpc_error_handle err = grpc_core::Chttp2ServerAddPort( server->core_server.get(), addr, grpc_channel_args_copy(server->core_server->channel_args()), ModifyArgsForConnection, &port_num); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc index 0ee9eeecf82..603be830bad 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc @@ -51,7 +51,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server, grpc_transport* transport = grpc_create_chttp2_transport( server_args, server_endpoint, false /* is_client */); - grpc_error* error = + grpc_error_handle error = core_server->SetupTransport(transport, nullptr, server_args, nullptr); if (error == GRPC_ERROR_NONE) { for (grpc_pollset* pollset : core_server->pollsets()) { diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc index 563c3034902..b6c3d898e85 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc @@ -40,7 +40,7 @@ namespace { grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args, - grpc_error** error) { + grpc_error_handle* error) { grpc_server_credentials* server_credentials = grpc_find_server_credentials_in_args(args); if (server_credentials == nullptr) { @@ -69,7 +69,7 @@ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args, int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr, grpc_server_credentials* creds) { grpc_core::ExecCtx exec_ctx; - grpc_error* err = GRPC_ERROR_NONE; + grpc_error_handle err = GRPC_ERROR_NONE; grpc_core::RefCountedPtr sc; int port_num = 0; grpc_channel_args* args = nullptr; diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index 1bc69413d25..5486bfc5092 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -100,23 +100,23 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false, "chttp2_refcount"); // forward declarations of various callbacks that we'll build closures around -static void write_action_begin_locked(void* t, grpc_error* error); -static void write_action(void* t, grpc_error* error); -static void write_action_end(void* t, grpc_error* error); -static void write_action_end_locked(void* t, grpc_error* error); +static void write_action_begin_locked(void* t, grpc_error_handle error); +static void write_action(void* t, grpc_error_handle error); +static void write_action_end(void* t, grpc_error_handle error); +static void write_action_end_locked(void* t, grpc_error_handle error); -static void read_action(void* t, grpc_error* error); -static void read_action_locked(void* t, grpc_error* error); +static void read_action(void* t, grpc_error_handle error); +static void read_action_locked(void* t, grpc_error_handle error); static void continue_read_action_locked(grpc_chttp2_transport* t); -static void complete_fetch(void* gs, grpc_error* error); -static void complete_fetch_locked(void* gs, grpc_error* error); +static void complete_fetch(void* gs, grpc_error_handle error); +static void complete_fetch_locked(void* gs, grpc_error_handle error); // Set a transport level setting, and push it to our peer static void queue_setting_update(grpc_chttp2_transport* t, grpc_chttp2_setting_id id, uint32_t value); static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error* error); + grpc_error_handle error); // Start new streams that have been created if we can static void maybe_start_some_streams(grpc_chttp2_transport* t); @@ -126,40 +126,43 @@ static void connectivity_state_set(grpc_chttp2_transport* t, const absl::Status& status, const char* reason); -static void benign_reclaimer(void* arg, grpc_error* error); -static void destructive_reclaimer(void* arg, grpc_error* error); -static void benign_reclaimer_locked(void* arg, grpc_error* error); -static void destructive_reclaimer_locked(void* arg, grpc_error* error); +static void benign_reclaimer(void* arg, grpc_error_handle error); +static void destructive_reclaimer(void* arg, grpc_error_handle error); +static void benign_reclaimer_locked(void* arg, grpc_error_handle error); +static void destructive_reclaimer_locked(void* arg, grpc_error_handle error); static void post_benign_reclaimer(grpc_chttp2_transport* t); static void post_destructive_reclaimer(grpc_chttp2_transport* t); -static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error); -static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error); +static void close_transport_locked(grpc_chttp2_transport* t, + grpc_error_handle error); +static void end_all_the_calls(grpc_chttp2_transport* t, + grpc_error_handle error); -static void start_bdp_ping(void* tp, grpc_error* error); -static void finish_bdp_ping(void* tp, grpc_error* error); -static void start_bdp_ping_locked(void* tp, grpc_error* error); -static void finish_bdp_ping_locked(void* tp, grpc_error* error); -static void next_bdp_ping_timer_expired(void* tp, grpc_error* error); -static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error); +static void start_bdp_ping(void* tp, grpc_error_handle error); +static void finish_bdp_ping(void* tp, grpc_error_handle error); +static void start_bdp_ping_locked(void* tp, grpc_error_handle error); +static void finish_bdp_ping_locked(void* tp, grpc_error_handle error); +static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error); +static void next_bdp_ping_timer_expired_locked(void* tp, + grpc_error_handle error); -static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error); +static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error); static void send_ping_locked(grpc_chttp2_transport* t, grpc_closure* on_initiate, grpc_closure* on_ack); -static void retry_initiate_ping_locked(void* tp, grpc_error* error); +static void retry_initiate_ping_locked(void* tp, grpc_error_handle error); // keepalive-relevant functions -static void init_keepalive_ping(void* arg, grpc_error* error); -static void init_keepalive_ping_locked(void* arg, grpc_error* error); -static void start_keepalive_ping(void* arg, grpc_error* error); -static void finish_keepalive_ping(void* arg, grpc_error* error); -static void start_keepalive_ping_locked(void* arg, grpc_error* error); -static void finish_keepalive_ping_locked(void* arg, grpc_error* error); -static void keepalive_watchdog_fired(void* arg, grpc_error* error); -static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error); +static void init_keepalive_ping(void* arg, grpc_error_handle error); +static void init_keepalive_ping_locked(void* arg, grpc_error_handle error); +static void start_keepalive_ping(void* arg, grpc_error_handle error); +static void finish_keepalive_ping(void* arg, grpc_error_handle error); +static void start_keepalive_ping_locked(void* arg, grpc_error_handle error); +static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error); +static void keepalive_watchdog_fired(void* arg, grpc_error_handle error); +static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error); -static void reset_byte_stream(void* arg, grpc_error* error); +static void reset_byte_stream(void* arg, grpc_error_handle error); // Flow control default enabled. Can be disabled by setting // GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL @@ -203,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() { grpc_slice_buffer_destroy_internal(&outbuf); grpc_chttp2_hpack_compressor_destroy(&hpack_compressor); - grpc_error* error = + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"); // ContextList::Execute follows semantics of a callback function and does not // take a ref on error @@ -534,7 +537,7 @@ grpc_chttp2_transport::grpc_chttp2_transport( } } -static void destroy_transport_locked(void* tp, grpc_error* /*error*/) { +static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) { grpc_chttp2_transport* t = static_cast(tp); t->destroying = 1; close_transport_locked( @@ -552,7 +555,7 @@ static void destroy_transport(grpc_transport* gt) { } static void close_transport_locked(grpc_chttp2_transport* t, - grpc_error* error) { + grpc_error_handle error) { end_all_the_calls(t, GRPC_ERROR_REF(error)); cancel_pings(t, GRPC_ERROR_REF(error)); if (t->closed_with_error == GRPC_ERROR_NONE) { @@ -731,7 +734,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs, return 0; } -static void destroy_stream_locked(void* sp, grpc_error* /*error*/) { +static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) { GPR_TIMER_SCOPE("destroy_stream", 0); grpc_chttp2_stream* s = static_cast(sp); s->~grpc_chttp2_stream(); @@ -819,7 +822,7 @@ static void set_write_state(grpc_chttp2_transport* t, if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) { grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write); if (t->close_transport_on_writes_finished != nullptr) { - grpc_error* err = t->close_transport_on_writes_finished; + grpc_error_handle err = t->close_transport_on_writes_finished; t->close_transport_on_writes_finished = nullptr; close_transport_locked(t, err); } @@ -951,7 +954,8 @@ static const char* begin_writing_desc(bool partial) { } } -static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) { +static void write_action_begin_locked(void* gt, + grpc_error_handle /*error_ignored*/) { GPR_TIMER_SCOPE("write_action_begin_locked", 0); grpc_chttp2_transport* t = static_cast(gt); GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE); @@ -990,7 +994,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) { } } -static void write_action(void* gt, grpc_error* /*error*/) { +static void write_action(void* gt, grpc_error_handle /*error*/) { GPR_TIMER_SCOPE("write_action", 0); grpc_chttp2_transport* t = static_cast(gt); void* cl = t->cl; @@ -1002,7 +1006,7 @@ static void write_action(void* gt, grpc_error* /*error*/) { cl); } -static void write_action_end(void* tp, grpc_error* error) { +static void write_action_end(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end_locked, t, nullptr), @@ -1011,7 +1015,7 @@ static void write_action_end(void* tp, grpc_error* error) { // Callback from the grpc_endpoint after bytes have been written by calling // sendmsg -static void write_action_end_locked(void* tp, grpc_error* error) { +static void write_action_end_locked(void* tp, grpc_error_handle error) { GPR_TIMER_SCOPE("terminate_writing_with_lock", 0); grpc_chttp2_transport* t = static_cast(tp); @@ -1206,7 +1210,8 @@ static void null_then_sched_closure(grpc_closure** closure) { void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t, grpc_chttp2_stream* /*s*/, grpc_closure** pclosure, - grpc_error* error, const char* desc) { + grpc_error_handle error, + const char* desc) { grpc_closure* closure = *pclosure; *pclosure = nullptr; if (closure == nullptr) { @@ -1314,7 +1319,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t, UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked, ::complete_fetch, s, grpc_schedule_on_exec_ctx))) { - grpc_error* error = s->fetching_send_message->Pull(&s->fetching_slice); + grpc_error_handle error = + s->fetching_send_message->Pull(&s->fetching_slice); if (error != GRPC_ERROR_NONE) { s->fetching_send_message.reset(); grpc_chttp2_cancel_stream(t, s, error); @@ -1325,14 +1331,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t, } } -static void complete_fetch(void* gs, grpc_error* error) { +static void complete_fetch(void* gs, grpc_error_handle error) { grpc_chttp2_stream* s = static_cast(gs); s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked, ::complete_fetch_locked, s, nullptr), GRPC_ERROR_REF(error)); } -static void complete_fetch_locked(void* gs, grpc_error* error) { +static void complete_fetch_locked(void* gs, grpc_error_handle error) { grpc_chttp2_stream* s = static_cast(gs); grpc_chttp2_transport* t = s->t; if (error == GRPC_ERROR_NONE) { @@ -1362,7 +1368,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id, } static void perform_stream_op_locked(void* stream_op, - grpc_error* /*error_ignored*/) { + grpc_error_handle /*error_ignored*/) { GPR_TIMER_SCOPE("perform_stream_op_locked", 0); grpc_transport_stream_op_batch* op = @@ -1646,7 +1652,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs, GRPC_ERROR_NONE); } -static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) { +static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) { // callback remaining pings: they're not allowed to call into the transport, // and maybe they hold resources that need to be freed grpc_chttp2_ping_queue* pq = &t->ping_queue; @@ -1713,14 +1719,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) { GRPC_ERROR_NONE); } -void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error) { +void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked, retry_initiate_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void retry_initiate_ping_locked(void* tp, grpc_error* error) { +static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->ping_state.is_delayed_ping_timer_set = false; if (error == GRPC_ERROR_NONE) { @@ -1743,7 +1749,7 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) { } } -static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) { +static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) { // We want to log this irrespective of whether http tracing is enabled gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(), grpc_error_string(error)); @@ -1784,7 +1790,7 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) { } static void perform_transport_op_locked(void* stream_op, - grpc_error* /*error_ignored*/) { + grpc_error_handle /*error_ignored*/) { grpc_transport_op* op = static_cast(stream_op); grpc_chttp2_transport* t = static_cast(op->handler_private.extra_arg); @@ -1864,7 +1870,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata( void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (s->recv_message_ready != nullptr) { *s->recv_message = nullptr; if (s->final_metadata_requested && s->seen_error) { @@ -2014,7 +2020,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t, } static void remove_stream(grpc_chttp2_transport* t, uint32_t id, - grpc_error* error) { + grpc_error_handle error) { grpc_chttp2_stream* s = static_cast( grpc_chttp2_stream_map_delete(&t->stream_map, id)); GPR_DEBUG_ASSERT(s); @@ -2057,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id, } void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error* due_to_error) { + grpc_error_handle due_to_error) { if (!t->is_client && !s->sent_trailing_metadata && grpc_error_has_clear_grpc_status(due_to_error)) { close_from_api(t, s, due_to_error); @@ -2081,7 +2087,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s, } void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error* error) { + grpc_error_handle error) { grpc_status_code status; grpc_slice slice; grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr); @@ -2118,7 +2124,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s, GRPC_ERROR_UNREF(error); } -static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) { +static void add_error(grpc_error_handle error, grpc_error_handle* refs, + size_t* nrefs) { if (error == GRPC_ERROR_NONE) return; for (size_t i = 0; i < *nrefs; i++) { if (error == refs[i]) { @@ -2129,14 +2136,15 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) { ++*nrefs; } -static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s, - const char* main_error_msg) { - grpc_error* refs[3]; +static grpc_error_handle removal_error(grpc_error_handle extra_error, + grpc_chttp2_stream* s, + const char* main_error_msg) { + grpc_error_handle refs[3]; size_t nrefs = 0; add_error(s->read_closed_error, refs, &nrefs); add_error(s->write_closed_error, refs, &nrefs); add_error(extra_error, refs, &nrefs); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (nrefs > 0) { error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg, refs, nrefs); @@ -2146,7 +2154,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s, } static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_chttp2_write_cb** list, grpc_error* error) { + grpc_chttp2_write_cb** list, + grpc_error_handle error) { while (*list) { grpc_chttp2_write_cb* cb = *list; *list = cb->next; @@ -2159,7 +2168,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s, } void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t, - grpc_chttp2_stream* s, grpc_error* error) { + grpc_chttp2_stream* s, + grpc_error_handle error) { error = removal_error(error, s, "Pending writes failed due to stream closure"); s->send_initial_metadata = nullptr; @@ -2183,10 +2193,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t, void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t, grpc_chttp2_stream* s, int close_reads, - int close_writes, grpc_error* error) { + int close_writes, grpc_error_handle error) { if (s->read_closed && s->write_closed) { // already closed, but we should still fake the status if needed. - grpc_error* overall_error = removal_error(error, s, "Stream removed"); + grpc_error_handle overall_error = removal_error(error, s, "Stream removed"); if (overall_error != GRPC_ERROR_NONE) { grpc_chttp2_fake_status(t, s, overall_error); } @@ -2207,7 +2217,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t, } if (s->read_closed && s->write_closed) { became_closed = true; - grpc_error* overall_error = + grpc_error_handle overall_error = removal_error(GRPC_ERROR_REF(error), s, "Stream removed"); if (s->id != 0) { remove_stream(t, s->id, GRPC_ERROR_REF(overall_error)); @@ -2236,7 +2246,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t, } static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error* error) { + grpc_error_handle error) { grpc_slice hdr; grpc_slice status_hdr; grpc_slice http_status_hdr; @@ -2394,7 +2404,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, } struct cancel_stream_cb_args { - grpc_error* error; + grpc_error_handle error; grpc_chttp2_transport* t; }; @@ -2404,7 +2414,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) { grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error)); } -static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) { +static void end_all_the_calls(grpc_chttp2_transport* t, + grpc_error_handle error) { intptr_t http2_error; // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server. if (!t->is_client && !grpc_error_has_clear_grpc_status(error) && @@ -2458,15 +2469,15 @@ void grpc_chttp2_act_on_flowctl_action( }); } -static grpc_error* try_http_parsing(grpc_chttp2_transport* t) { +static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) { grpc_http_parser parser; size_t i = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_http_response response; grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response); - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) { parse_error = grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr); @@ -2487,34 +2498,34 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) { return error; } -static void read_action(void* tp, grpc_error* error) { +static void read_action(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run( GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void read_action_locked(void* tp, grpc_error* error) { +static void read_action_locked(void* tp, grpc_error_handle error) { GPR_TIMER_SCOPE("reading_action_locked", 0); grpc_chttp2_transport* t = static_cast(tp); GRPC_ERROR_REF(error); - grpc_error* err = error; + grpc_error_handle err = error; if (err != GRPC_ERROR_NONE) { err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Endpoint read failed", &err, 1), GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state); } - GPR_SWAP(grpc_error*, err, error); + GPR_SWAP(grpc_error_handle, err, error); GRPC_ERROR_UNREF(err); if (t->closed_with_error == GRPC_ERROR_NONE) { GPR_TIMER_SCOPE("reading_action.parse", 0); size_t i = 0; - grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE, - GRPC_ERROR_NONE}; + grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE, + GRPC_ERROR_NONE}; for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) { errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]); } @@ -2605,14 +2616,14 @@ void schedule_bdp_ping_locked(grpc_chttp2_transport* t) { grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING); } -static void start_bdp_ping(void* tp, grpc_error* error) { +static void start_bdp_ping(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked, start_bdp_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void start_bdp_ping_locked(void* tp, grpc_error* error) { +static void start_bdp_ping_locked(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) { gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(), @@ -2629,14 +2640,14 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) { t->bdp_ping_started = true; } -static void finish_bdp_ping(void* tp, grpc_error* error) { +static void finish_bdp_ping(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void finish_bdp_ping_locked(void* tp, grpc_error* error) { +static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) { gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(), @@ -2666,7 +2677,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) { &t->next_bdp_ping_timer_expired_locked); } -static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) { +static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); t->combiner->Run( GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked, @@ -2674,7 +2685,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) { GRPC_ERROR_REF(error)); } -static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) { +static void next_bdp_ping_timer_expired_locked(void* tp, + grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(tp); GPR_ASSERT(t->have_next_bdp_ping_timer); t->have_next_bdp_ping_timer = false; @@ -2750,14 +2762,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args, } } -static void init_keepalive_ping(void* arg, grpc_error* error) { +static void init_keepalive_ping(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void init_keepalive_ping_locked(void* arg, grpc_error* error) { +static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING); if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) { @@ -2790,14 +2802,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) { GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping"); } -static void start_keepalive_ping(void* arg, grpc_error* error) { +static void start_keepalive_ping(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void start_keepalive_ping_locked(void* arg, grpc_error* error) { +static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); if (error != GRPC_ERROR_NONE) { return; @@ -2818,14 +2830,14 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) { t->keepalive_ping_started = true; } -static void finish_keepalive_ping(void* arg, grpc_error* error) { +static void finish_keepalive_ping(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void finish_keepalive_ping_locked(void* arg, grpc_error* error) { +static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) { if (error == GRPC_ERROR_NONE) { @@ -2856,7 +2868,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) { GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end"); } -static void keepalive_watchdog_fired(void* arg, grpc_error* error) { +static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run( GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked, @@ -2864,7 +2876,8 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) { GRPC_ERROR_REF(error)); } -static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) { +static void keepalive_watchdog_fired_locked(void* arg, + grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) { if (error == GRPC_ERROR_NONE) { @@ -2921,7 +2934,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/, // BYTE STREAM // -static void reset_byte_stream(void* arg, grpc_error* error) { +static void reset_byte_stream(void* arg, grpc_error_handle error) { grpc_chttp2_stream* s = static_cast(arg); s->pending_byte_stream = false; if (error == GRPC_ERROR_NONE) { @@ -2952,8 +2965,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream( stream->byte_stream_error = GRPC_ERROR_NONE; } -void Chttp2IncomingByteStream::OrphanLocked(void* arg, - grpc_error* /*error_ignored*/) { +void Chttp2IncomingByteStream::OrphanLocked( + void* arg, grpc_error_handle /*error_ignored*/) { Chttp2IncomingByteStream* bs = static_cast(arg); grpc_chttp2_stream* s = bs->stream_; grpc_chttp2_transport* t = s->t; @@ -2972,7 +2985,7 @@ void Chttp2IncomingByteStream::Orphan() { } void Chttp2IncomingByteStream::NextLocked(void* arg, - grpc_error* /*error_ignored*/) { + grpc_error_handle /*error_ignored*/) { Chttp2IncomingByteStream* bs = static_cast(arg); grpc_chttp2_transport* t = bs->transport_; grpc_chttp2_stream* s = bs->stream_; @@ -3042,9 +3055,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() { } } -grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) { +grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) { GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0); - grpc_error* error; + grpc_error_handle error; if (stream_->unprocessed_incoming_frames_buffer.length > 0) { if (!stream_->unprocessed_incoming_frames_decompressed && stream_->stream_decompression_method != @@ -3087,7 +3100,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) { return GRPC_ERROR_NONE; } -void Chttp2IncomingByteStream::PublishError(grpc_error* error) { +void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) { GPR_ASSERT(error != GRPC_ERROR_NONE); grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next, GRPC_ERROR_REF(error)); @@ -3097,10 +3110,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) { grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error)); } -grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice, - grpc_slice* slice_out) { +grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice, + grpc_slice* slice_out) { if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) { - grpc_error* error = + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream"); transport_->combiner->Run(&stream_->reset_byte_stream, GRPC_ERROR_REF(error)); @@ -3115,8 +3128,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice, } } -grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error, - bool reset_on_error) { +grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error, + bool reset_on_error) { if (error == GRPC_ERROR_NONE) { if (remaining_bytes_ != 0) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message"); @@ -3130,7 +3143,7 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error, return error; } -void Chttp2IncomingByteStream::Shutdown(grpc_error* error) { +void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) { GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */)); } @@ -3162,14 +3175,14 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) { } } -static void benign_reclaimer(void* arg, grpc_error* error) { +static void benign_reclaimer(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked, benign_reclaimer_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void benign_reclaimer_locked(void* arg, grpc_error* error) { +static void benign_reclaimer_locked(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); if (error == GRPC_ERROR_NONE && grpc_chttp2_stream_map_size(&t->stream_map) == 0) { @@ -3199,14 +3212,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) { GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer"); } -static void destructive_reclaimer(void* arg, grpc_error* error) { +static void destructive_reclaimer(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked, destructive_reclaimer_locked, t, nullptr), GRPC_ERROR_REF(error)); } -static void destructive_reclaimer_locked(void* arg, grpc_error* error) { +static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) { grpc_chttp2_transport* t = static_cast(arg); size_t n = grpc_chttp2_stream_map_size(&t->stream_map); t->destructive_reclaimer_registered = false; diff --git a/src/core/ext/transport/chttp2/transport/context_list.cc b/src/core/ext/transport/chttp2/transport/context_list.cc index a0473ea822a..afb18abc238 100644 --- a/src/core/ext/transport/chttp2/transport/context_list.cc +++ b/src/core/ext/transport/chttp2/transport/context_list.cc @@ -22,7 +22,7 @@ namespace { void (*write_timestamps_callback_g)(void*, grpc_core::Timestamps*, - grpc_error* error) = nullptr; + grpc_error_handle error) = nullptr; void* (*get_copied_context_fn_g)(void*) = nullptr; } // namespace @@ -41,7 +41,7 @@ void ContextList::Append(ContextList** head, grpc_chttp2_stream* s) { } void ContextList::Execute(void* arg, grpc_core::Timestamps* ts, - grpc_error* error) { + grpc_error_handle error) { ContextList* head = static_cast(arg); ContextList* to_be_freed; while (head != nullptr) { @@ -57,9 +57,8 @@ void ContextList::Execute(void* arg, grpc_core::Timestamps* ts, } } -void grpc_http2_set_write_timestamps_callback(void (*fn)(void*, - grpc_core::Timestamps*, - grpc_error* error)) { +void grpc_http2_set_write_timestamps_callback( + void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)) { write_timestamps_callback_g = fn; } diff --git a/src/core/ext/transport/chttp2/transport/context_list.h b/src/core/ext/transport/chttp2/transport/context_list.h index 5b9d2ab3784..54ec87c67ff 100644 --- a/src/core/ext/transport/chttp2/transport/context_list.h +++ b/src/core/ext/transport/chttp2/transport/context_list.h @@ -36,7 +36,8 @@ class ContextList { /* Executes a function \a fn with each context in the list and \a ts. It also * frees up the entire list after this operation. It is intended as a callback * and hence does not take a ref on \a error */ - static void Execute(void* arg, grpc_core::Timestamps* ts, grpc_error* error); + static void Execute(void* arg, grpc_core::Timestamps* ts, + grpc_error_handle error); private: void* trace_context_ = nullptr; @@ -44,9 +45,8 @@ class ContextList { size_t byte_offset_ = 0; }; -void grpc_http2_set_write_timestamps_callback(void (*fn)(void*, - grpc_core::Timestamps*, - grpc_error* error)); +void grpc_http2_set_write_timestamps_callback( + void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)); void grpc_http2_set_fn_get_copied_context(void* (*fn)(void*)); } /* namespace grpc_core */ diff --git a/src/core/ext/transport/chttp2/transport/flow_control.cc b/src/core/ext/transport/chttp2/transport/flow_control.cc index 09bd7ab60a2..5f5e5515c79 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.cc +++ b/src/core/ext/transport/chttp2/transport/flow_control.cc @@ -203,7 +203,7 @@ uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) { return 0; } -grpc_error* TransportFlowControl::ValidateRecvData( +grpc_error_handle TransportFlowControl::ValidateRecvData( int64_t incoming_frame_size) { if (incoming_frame_size > announced_window_) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -219,10 +219,10 @@ StreamFlowControl::StreamFlowControl(TransportFlowControl* tfc, const grpc_chttp2_stream* s) : tfc_(tfc), s_(s) {} -grpc_error* StreamFlowControl::RecvData(int64_t incoming_frame_size) { +grpc_error_handle StreamFlowControl::RecvData(int64_t incoming_frame_size) { FlowControlTrace trace(" data recv", tfc_, this); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; error = tfc_->ValidateRecvData(incoming_frame_size); if (error != GRPC_ERROR_NONE) return error; diff --git a/src/core/ext/transport/chttp2/transport/flow_control.h b/src/core/ext/transport/chttp2/transport/flow_control.h index 7e053585b18..e5088964b9e 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.h +++ b/src/core/ext/transport/chttp2/transport/flow_control.h @@ -168,7 +168,7 @@ class TransportFlowControlBase { // Called to do bookkeeping when a stream owned by this transport receives // data from the wire. Also does error checking for frame size. - virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) = 0; + virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0; // Called to do bookkeeping when we receive a WINDOW_UPDATE frame. virtual void RecvUpdate(uint32_t /* size */) = 0; @@ -210,7 +210,7 @@ class TransportFlowControlDisabled final : public TransportFlowControlBase { FlowControlAction MakeAction() override { return FlowControlAction(); } FlowControlAction PeriodicUpdate() override { return FlowControlAction(); } void StreamSentData(int64_t /* size */) override {} - grpc_error* RecvData(int64_t /* incoming_frame_size */) override { + grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override { return GRPC_ERROR_NONE; } void RecvUpdate(uint32_t /* size */) override {} @@ -246,14 +246,14 @@ class TransportFlowControl final : public TransportFlowControlBase { void StreamSentData(int64_t size) override { remote_window_ -= size; } - grpc_error* ValidateRecvData(int64_t incoming_frame_size); + grpc_error_handle ValidateRecvData(int64_t incoming_frame_size); void CommitRecvData(int64_t incoming_frame_size) { announced_window_ -= incoming_frame_size; } - grpc_error* RecvData(int64_t incoming_frame_size) override { + grpc_error_handle RecvData(int64_t incoming_frame_size) override { FlowControlTrace trace(" data recv", this, nullptr); - grpc_error* error = ValidateRecvData(incoming_frame_size); + grpc_error_handle error = ValidateRecvData(incoming_frame_size); if (error != GRPC_ERROR_NONE) return error; CommitRecvData(incoming_frame_size); return GRPC_ERROR_NONE; @@ -352,7 +352,7 @@ class StreamFlowControlBase { virtual void SentData(int64_t /* outgoing_frame_size */) = 0; // Bookkeeping and error checking for when data is received by this stream. - virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) = 0; + virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0; // Called to check if this stream needs to send a WINDOW_UPDATE frame. virtual uint32_t MaybeSendUpdate() = 0; @@ -395,7 +395,7 @@ class StreamFlowControlDisabled : public StreamFlowControlBase { } FlowControlAction MakeAction() override { return FlowControlAction(); } void SentData(int64_t /* outgoing_frame_size */) override {} - grpc_error* RecvData(int64_t /* incoming_frame_size */) override { + grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override { return GRPC_ERROR_NONE; } uint32_t MaybeSendUpdate() override { return 0; } @@ -427,7 +427,7 @@ class StreamFlowControl final : public StreamFlowControlBase { } // we have received data from the wire - grpc_error* RecvData(int64_t incoming_frame_size) override; + grpc_error_handle RecvData(int64_t incoming_frame_size) override; // returns an announce if we should send a stream update to our peer, else // returns zero diff --git a/src/core/ext/transport/chttp2/transport/frame_data.cc b/src/core/ext/transport/chttp2/transport/frame_data.cc index ccb28bb239e..745f32a28fe 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.cc +++ b/src/core/ext/transport/chttp2/transport/frame_data.cc @@ -41,7 +41,7 @@ grpc_chttp2_data_parser::~grpc_chttp2_data_parser() { GRPC_ERROR_UNREF(error); } -grpc_error* grpc_chttp2_data_parser_begin_frame( +grpc_error_handle grpc_chttp2_data_parser_begin_frame( grpc_chttp2_data_parser* /*parser*/, uint8_t flags, uint32_t stream_id, grpc_chttp2_stream* s) { if (flags & ~GRPC_CHTTP2_DATA_FLAG_END_STREAM) { @@ -89,11 +89,11 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf, stats->data_bytes += write_bytes; } -grpc_error* grpc_deframe_unprocessed_incoming_frames( +grpc_error_handle grpc_deframe_unprocessed_incoming_frames( grpc_chttp2_data_parser* p, grpc_chttp2_stream* s, grpc_slice_buffer* slices, grpc_slice* slice_out, grpc_core::OrphanablePtr* stream_out) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_chttp2_transport* t = s->t; while (slices->count > 0) { @@ -275,11 +275,11 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames( return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_data_parser_parse(void* /*parser*/, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_data_parser_parse(void* /*parser*/, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last) { if (!s->pending_byte_stream) { grpc_slice_ref_internal(slice); grpc_slice_buffer_add(&s->frame_storage, slice); diff --git a/src/core/ext/transport/chttp2/transport/frame_data.h b/src/core/ext/transport/chttp2/transport/frame_data.h index ec3890098ec..5aa4a3e7e80 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.h +++ b/src/core/ext/transport/chttp2/transport/frame_data.h @@ -50,31 +50,31 @@ struct grpc_chttp2_data_parser { grpc_chttp2_stream_state state = GRPC_CHTTP2_DATA_FH_0; uint8_t frame_type = 0; uint32_t frame_size = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; bool is_frame_compressed = false; grpc_core::Chttp2IncomingByteStream* parsing_frame = nullptr; }; /* start processing a new data frame */ -grpc_error* grpc_chttp2_data_parser_begin_frame(grpc_chttp2_data_parser* parser, - uint8_t flags, - uint32_t stream_id, - grpc_chttp2_stream* s); +grpc_error_handle grpc_chttp2_data_parser_begin_frame( + grpc_chttp2_data_parser* parser, uint8_t flags, uint32_t stream_id, + grpc_chttp2_stream* s); /* handle a slice of a data frame - is_last indicates the last slice of a frame */ -grpc_error* grpc_chttp2_data_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, int is_last); +grpc_error_handle grpc_chttp2_data_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf, uint32_t write_bytes, int is_eof, grpc_transport_one_way_stats* stats, grpc_slice_buffer* outbuf); -grpc_error* grpc_deframe_unprocessed_incoming_frames( +grpc_error_handle grpc_deframe_unprocessed_incoming_frames( grpc_chttp2_data_parser* p, grpc_chttp2_stream* s, grpc_slice_buffer* slices, grpc_slice* slice_out, grpc_core::OrphanablePtr* stream_out); diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.cc b/src/core/ext/transport/chttp2/transport/frame_goaway.cc index 3831b801598..a139bea15c8 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.cc +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.cc @@ -36,9 +36,8 @@ void grpc_chttp2_goaway_parser_destroy(grpc_chttp2_goaway_parser* p) { gpr_free(p->debug_data); } -grpc_error* grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser* p, - uint32_t length, - uint8_t /*flags*/) { +grpc_error_handle grpc_chttp2_goaway_parser_begin_frame( + grpc_chttp2_goaway_parser* p, uint32_t length, uint8_t /*flags*/) { if (length < 8) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat("goaway frame too short (%d bytes)", length).c_str()); @@ -52,11 +51,11 @@ grpc_error* grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser* p, return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_goaway_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* /*s*/, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_goaway_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* /*s*/, + const grpc_slice& slice, + int is_last) { const uint8_t* const beg = GRPC_SLICE_START_PTR(slice); const uint8_t* const end = GRPC_SLICE_END_PTR(slice); const uint8_t* cur = beg; diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.h b/src/core/ext/transport/chttp2/transport/frame_goaway.h index df6274d6286..674f7423091 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.h +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.h @@ -47,13 +47,13 @@ struct grpc_chttp2_goaway_parser { }; void grpc_chttp2_goaway_parser_init(grpc_chttp2_goaway_parser* p); void grpc_chttp2_goaway_parser_destroy(grpc_chttp2_goaway_parser* p); -grpc_error* grpc_chttp2_goaway_parser_begin_frame( +grpc_error_handle grpc_chttp2_goaway_parser_begin_frame( grpc_chttp2_goaway_parser* parser, uint32_t length, uint8_t flags); -grpc_error* grpc_chttp2_goaway_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last); +grpc_error_handle grpc_chttp2_goaway_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code, const grpc_slice& debug_data, diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.cc b/src/core/ext/transport/chttp2/transport/frame_ping.cc index 984123284a3..9da4a72af99 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.cc +++ b/src/core/ext/transport/chttp2/transport/frame_ping.cc @@ -55,9 +55,8 @@ grpc_slice grpc_chttp2_ping_create(uint8_t ack, uint64_t opaque_8bytes) { return slice; } -grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser, - uint32_t length, - uint8_t flags) { +grpc_error_handle grpc_chttp2_ping_parser_begin_frame( + grpc_chttp2_ping_parser* parser, uint32_t length, uint8_t flags) { if (flags & 0xfe || length != 8) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat("invalid ping: length=%d, flags=%02x", length, flags) @@ -69,11 +68,11 @@ grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser, return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_ping_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* /*s*/, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* /*s*/, + const grpc_slice& slice, + int is_last) { const uint8_t* const beg = GRPC_SLICE_START_PTR(slice); const uint8_t* const end = GRPC_SLICE_END_PTR(slice); const uint8_t* cur = beg; diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.h b/src/core/ext/transport/chttp2/transport/frame_ping.h index e356bf43f07..6b5318e9dbb 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.h +++ b/src/core/ext/transport/chttp2/transport/frame_ping.h @@ -31,12 +31,13 @@ struct grpc_chttp2_ping_parser { }; grpc_slice grpc_chttp2_ping_create(uint8_t ack, uint64_t opaque_8bytes); -grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser, - uint32_t length, uint8_t flags); -grpc_error* grpc_chttp2_ping_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, int is_last); +grpc_error_handle grpc_chttp2_ping_parser_begin_frame( + grpc_chttp2_ping_parser* parser, uint32_t length, uint8_t flags); +grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); /* Test-only function for disabling ping ack */ void grpc_set_disable_ping_ack(bool disable_ping_ack); diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc index bcfcb173b66..03a7c61d569 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc @@ -68,7 +68,7 @@ void grpc_chttp2_add_rst_stream_to_next_write( grpc_chttp2_rst_stream_create(id, code, stats)); } -grpc_error* grpc_chttp2_rst_stream_parser_begin_frame( +grpc_error_handle grpc_chttp2_rst_stream_parser_begin_frame( grpc_chttp2_rst_stream_parser* parser, uint32_t length, uint8_t flags) { if (length != 4) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -80,11 +80,11 @@ grpc_error* grpc_chttp2_rst_stream_parser_begin_frame( return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last) { const uint8_t* const beg = GRPC_SLICE_START_PTR(slice); const uint8_t* const end = GRPC_SLICE_END_PTR(slice); const uint8_t* cur = beg; @@ -104,7 +104,7 @@ grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser, ((static_cast(p->reason_bytes[1])) << 16) | ((static_cast(p->reason_bytes[2])) << 8) | ((static_cast(p->reason_bytes[3]))); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (reason != GRPC_HTTP2_NO_ERROR || s->metadata_buffer[1].size == 0) { error = grpc_error_set_int( grpc_error_set_str( diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h index e324ee2cfc3..865e74d9f8e 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h @@ -39,12 +39,12 @@ void grpc_chttp2_add_rst_stream_to_next_write( grpc_chttp2_transport* t, uint32_t id, uint32_t code, grpc_transport_one_way_stats* stats); -grpc_error* grpc_chttp2_rst_stream_parser_begin_frame( +grpc_error_handle grpc_chttp2_rst_stream_parser_begin_frame( grpc_chttp2_rst_stream_parser* parser, uint32_t length, uint8_t flags); -grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last); +grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H */ diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.cc b/src/core/ext/transport/chttp2/transport/frame_settings.cc index 7dbfc69ea0d..576f8158c84 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.cc +++ b/src/core/ext/transport/chttp2/transport/frame_settings.cc @@ -84,7 +84,7 @@ grpc_slice grpc_chttp2_settings_ack_create(void) { return output; } -grpc_error* grpc_chttp2_settings_parser_begin_frame( +grpc_error_handle grpc_chttp2_settings_parser_begin_frame( grpc_chttp2_settings_parser* parser, uint32_t length, uint8_t flags, uint32_t* settings) { parser->target_settings = settings; @@ -110,10 +110,11 @@ grpc_error* grpc_chttp2_settings_parser_begin_frame( } } -grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t, - grpc_chttp2_stream* /*s*/, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_settings_parser_parse(void* p, + grpc_chttp2_transport* t, + grpc_chttp2_stream* /*s*/, + const grpc_slice& slice, + int is_last) { grpc_chttp2_settings_parser* parser = static_cast(p); const uint8_t* cur = GRPC_SLICE_START_PTR(slice); diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.h b/src/core/ext/transport/chttp2/transport/frame_settings.h index 147d5ea3a33..7268277aba5 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.h +++ b/src/core/ext/transport/chttp2/transport/frame_settings.h @@ -49,13 +49,13 @@ grpc_slice grpc_chttp2_settings_create(uint32_t* old_settings, /* Create an ack settings frame */ grpc_slice grpc_chttp2_settings_ack_create(void); -grpc_error* grpc_chttp2_settings_parser_begin_frame( +grpc_error_handle grpc_chttp2_settings_parser_begin_frame( grpc_chttp2_settings_parser* parser, uint32_t length, uint8_t flags, uint32_t* settings); -grpc_error* grpc_chttp2_settings_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last); +grpc_error_handle grpc_chttp2_settings_parser_parse(void* parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H */ diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.cc b/src/core/ext/transport/chttp2/transport/frame_window_update.cc index 943ea177cbb..37e69ff058e 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.cc +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.cc @@ -53,7 +53,7 @@ grpc_slice grpc_chttp2_window_update_create( return slice; } -grpc_error* grpc_chttp2_window_update_parser_begin_frame( +grpc_error_handle grpc_chttp2_window_update_parser_begin_frame( grpc_chttp2_window_update_parser* parser, uint32_t length, uint8_t flags) { if (flags || length != 4) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -66,11 +66,9 @@ grpc_error* grpc_chttp2_window_update_parser_begin_frame( return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_window_update_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_window_update_parser_parse( + void* parser, grpc_chttp2_transport* t, grpc_chttp2_stream* s, + const grpc_slice& slice, int is_last) { const uint8_t* const beg = GRPC_SLICE_START_PTR(slice); const uint8_t* const end = GRPC_SLICE_END_PTR(slice); const uint8_t* cur = beg; diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.h b/src/core/ext/transport/chttp2/transport/frame_window_update.h index 340445d87a4..5a07b9e5921 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.h +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.h @@ -33,12 +33,10 @@ struct grpc_chttp2_window_update_parser { grpc_slice grpc_chttp2_window_update_create( uint32_t id, uint32_t window_delta, grpc_transport_one_way_stats* stats); -grpc_error* grpc_chttp2_window_update_parser_begin_frame( +grpc_error_handle grpc_chttp2_window_update_parser_begin_frame( grpc_chttp2_window_update_parser* parser, uint32_t length, uint8_t flags); -grpc_error* grpc_chttp2_window_update_parser_parse(void* parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last); +grpc_error_handle grpc_chttp2_window_update_parser_parse( + void* parser, grpc_chttp2_transport* t, grpc_chttp2_stream* s, + const grpc_slice& slice, int is_last); #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H */ diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc index 668c2cb75b5..99c308f078b 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc @@ -67,71 +67,82 @@ typedef enum { a set of indirect jumps, and so not waste stack space. */ /* forward declarations for parsing states */ -static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_error(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end, grpc_error* error); -static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p, +static grpc_error_handle parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_error(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end, + grpc_error_handle error); +static grpc_error_handle still_parse_error(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_illegal_op(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); -static grpc_error* parse_string_prefix(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_key_string(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_value_string_with_indexed_key( +static grpc_error_handle parse_string_prefix(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_key_string(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_value_string_with_indexed_key( grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_value_string_with_literal_key( +static grpc_error_handle parse_value_string_with_literal_key( grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); - -static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_indexed_field_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end); -static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p, +static grpc_error_handle parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end); -static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p, +static grpc_error_handle parse_value1(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_value2(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_value3(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_value4(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_value5up(grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end); +static grpc_error_handle parse_indexed_field(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_indexed_field_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_incidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_notidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_max_tbl_size(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); +static grpc_error_handle parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end); + /* we translate the first byte of a hpack field into one of these decoding cases, then use a lookup table to jump directly to the appropriate parser. @@ -647,14 +658,14 @@ static void GPR_ATTRIBUTE_NOINLINE on_hdr_log(grpc_mdelem md) { /* emission helpers */ template -static grpc_error* on_hdr(grpc_chttp2_hpack_parser* p, grpc_mdelem md) { +static grpc_error_handle on_hdr(grpc_chttp2_hpack_parser* p, grpc_mdelem md) { if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) { on_hdr_log(md); } if (do_add) { GPR_DEBUG_ASSERT(GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_INTERNED || GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_STATIC); - grpc_error* err = grpc_chttp2_hptbl_add(&p->table, md); + grpc_error_handle err = grpc_chttp2_hptbl_add(&p->table, md); if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err; } return p->on_header(p->on_header_user_data, md); @@ -693,16 +704,16 @@ static grpc_core::ManagedMemorySlice take_string_intern( } /* jump to the next state */ -static grpc_error* parse_next(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_next(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { p->state = *p->next_state++; return p->state(p, cur, end); } /* begin parsing a header: all functionality is encoded into lookup tables above */ -static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_begin(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (cur == end) { p->state = parse_begin; return GRPC_ERROR_NONE; @@ -712,8 +723,9 @@ static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur, } /* stream dependency and prioritization data: we just skip it */ -static grpc_error* parse_stream_weight(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_stream_weight(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_stream_weight; return GRPC_ERROR_NONE; @@ -722,8 +734,9 @@ static grpc_error* parse_stream_weight(grpc_chttp2_hpack_parser* p, return p->after_prioritization(p, cur + 1, end); } -static grpc_error* parse_stream_dep3(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_stream_dep3(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_stream_dep3; return GRPC_ERROR_NONE; @@ -732,8 +745,9 @@ static grpc_error* parse_stream_dep3(grpc_chttp2_hpack_parser* p, return parse_stream_weight(p, cur + 1, end); } -static grpc_error* parse_stream_dep2(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_stream_dep2(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_stream_dep2; return GRPC_ERROR_NONE; @@ -742,8 +756,9 @@ static grpc_error* parse_stream_dep2(grpc_chttp2_hpack_parser* p, return parse_stream_dep3(p, cur + 1, end); } -static grpc_error* parse_stream_dep1(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_stream_dep1(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_stream_dep1; return GRPC_ERROR_NONE; @@ -752,8 +767,9 @@ static grpc_error* parse_stream_dep1(grpc_chttp2_hpack_parser* p, return parse_stream_dep2(p, cur + 1, end); } -static grpc_error* parse_stream_dep0(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_stream_dep0(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_stream_dep0; return GRPC_ERROR_NONE; @@ -762,7 +778,7 @@ static grpc_error* parse_stream_dep0(grpc_chttp2_hpack_parser* p, return parse_stream_dep1(p, cur + 1, end); } -static grpc_error* GPR_ATTRIBUTE_NOINLINE +static grpc_error_handle GPR_ATTRIBUTE_NOINLINE on_invalid_hpack_idx(grpc_chttp2_hpack_parser* p) { return grpc_error_set_int( grpc_error_set_int( @@ -772,22 +788,23 @@ on_invalid_hpack_idx(grpc_chttp2_hpack_parser* p) { } /* emit an indexed field; jumps to begin the next field on completion */ -static grpc_error* finish_indexed_field(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_indexed_field(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index); if (GPR_UNLIKELY(GRPC_MDISNULL(md))) { return on_invalid_hpack_idx(p); } GRPC_STATS_INC_HPACK_RECV_INDEXED(); - grpc_error* err = on_hdr(p, md); + grpc_error_handle err = on_hdr(p, md); if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err; return parse_begin(p, cur, end); } /* parse an indexed field with index < 127 */ -static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_indexed_field(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { p->dynamic_table_update_allowed = 0; p->index = (*cur) & 0x7f; p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */ @@ -795,9 +812,9 @@ static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p, } /* parse an indexed field with index >= 127 */ -static grpc_error* parse_indexed_field_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_indexed_field_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { finish_indexed_field}; p->dynamic_table_update_allowed = 0; @@ -830,12 +847,12 @@ static const grpc_core::ManagedMemorySlice& get_indexed_key(grpc_mdelem md) { } /* finish a literal header with incremental indexing */ -static grpc_error* finish_lithdr_incidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_incidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX(); grpc_mdelem md = get_precomputed_md_for_idx(p); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(get_indexed_key(md), take_string_intern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -843,11 +860,11 @@ static grpc_error* finish_lithdr_incidx(grpc_chttp2_hpack_parser* p, } /* finish a literal header with incremental indexing with no index */ -static grpc_error* finish_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V(); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(take_string_intern(p, &p->key), take_string_intern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -855,8 +872,9 @@ static grpc_error* finish_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, } /* parse a literal header with incremental indexing; index < 63 */ -static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_lithdr_incidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_incidx}; p->dynamic_table_update_allowed = 0; @@ -867,9 +885,9 @@ static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p, } /* parse a literal header with incremental indexing; index >= 63 */ -static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_string_prefix, parse_value_string_with_indexed_key, finish_lithdr_incidx}; @@ -882,9 +900,9 @@ static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p, } /* parse a literal header with incremental indexing; index = 0 */ -static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_key_string, parse_string_prefix, parse_value_string_with_literal_key, finish_lithdr_incidx_v}; @@ -894,12 +912,12 @@ static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p, } /* finish a literal header without incremental indexing */ -static grpc_error* finish_lithdr_notidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_notidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX(); grpc_mdelem md = get_precomputed_md_for_idx(p); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(get_indexed_key(md), take_string_extern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -907,11 +925,11 @@ static grpc_error* finish_lithdr_notidx(grpc_chttp2_hpack_parser* p, } /* finish a literal header without incremental indexing with index = 0 */ -static grpc_error* finish_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V(); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(take_string_intern(p, &p->key), take_string_extern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -919,8 +937,9 @@ static grpc_error* finish_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, } /* parse a literal header without incremental indexing; index < 15 */ -static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_lithdr_notidx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_notidx}; p->dynamic_table_update_allowed = 0; @@ -931,9 +950,9 @@ static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p, } /* parse a literal header without incremental indexing; index >= 15 */ -static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_string_prefix, parse_value_string_with_indexed_key, finish_lithdr_notidx}; @@ -946,9 +965,9 @@ static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p, } /* parse a literal header without incremental indexing; index == 0 */ -static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_key_string, parse_string_prefix, parse_value_string_with_literal_key, finish_lithdr_notidx_v}; @@ -958,12 +977,12 @@ static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p, } /* finish a literal header that is never indexed */ -static grpc_error* finish_lithdr_nvridx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_nvridx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX(); grpc_mdelem md = get_precomputed_md_for_idx(p); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(get_indexed_key(md), take_string_extern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -971,11 +990,11 @@ static grpc_error* finish_lithdr_nvridx(grpc_chttp2_hpack_parser* p, } /* finish a literal header that is never indexed with an extra value */ -static grpc_error* finish_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V(); - grpc_error* err = on_hdr( + grpc_error_handle err = on_hdr( p, grpc_mdelem_from_slices(take_string_intern(p, &p->key), take_string_extern(p, &p->value))); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -983,8 +1002,9 @@ static grpc_error* finish_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, } /* parse a literal header that is never indexed; index < 15 */ -static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_nvridx}; p->dynamic_table_update_allowed = 0; @@ -995,9 +1015,9 @@ static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p, } /* parse a literal header that is never indexed; index >= 15 */ -static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_string_prefix, parse_value_string_with_indexed_key, finish_lithdr_nvridx}; @@ -1010,9 +1030,9 @@ static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p, } /* parse a literal header that is never indexed; index == 0 */ -static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_key_string, parse_string_prefix, parse_value_string_with_literal_key, finish_lithdr_nvridx_v}; @@ -1022,20 +1042,22 @@ static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p, } /* finish parsing a max table size change */ -static grpc_error* finish_max_tbl_size(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle finish_max_tbl_size(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) { gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index); } - grpc_error* err = + grpc_error_handle err = grpc_chttp2_hptbl_set_current_table_size(&p->table, p->index); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); return parse_begin(p, cur, end); } /* parse a max table size change, max size < 15 */ -static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_max_tbl_size(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (p->dynamic_table_update_allowed == 0) { return parse_error( p, cur, end, @@ -1049,9 +1071,9 @@ static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p, } /* parse a max table size change, max size >= 15 */ -static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { static const grpc_chttp2_hpack_parser_state and_then[] = { finish_max_tbl_size}; if (p->dynamic_table_update_allowed == 0) { @@ -1069,9 +1091,10 @@ static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p, } /* a parse error: jam the parse state into parse_error, and return error */ -static grpc_error* parse_error(grpc_chttp2_hpack_parser* p, - const uint8_t* /*cur*/, const uint8_t* /*end*/, - grpc_error* err) { +static grpc_error_handle parse_error(grpc_chttp2_hpack_parser* p, + const uint8_t* /*cur*/, + const uint8_t* /*end*/, + grpc_error_handle err) { GPR_ASSERT(err != GRPC_ERROR_NONE); if (p->last_error == GRPC_ERROR_NONE) { p->last_error = GRPC_ERROR_REF(err); @@ -1080,24 +1103,25 @@ static grpc_error* parse_error(grpc_chttp2_hpack_parser* p, return err; } -static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p, - const uint8_t* /*cur*/, - const uint8_t* /*end*/) { +static grpc_error_handle still_parse_error(grpc_chttp2_hpack_parser* p, + const uint8_t* /*cur*/, + const uint8_t* /*end*/) { return GRPC_ERROR_REF(p->last_error); } -static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_illegal_op(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { GPR_ASSERT(cur != end); - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("Illegal hpack op code ", *cur).c_str()); return parse_error(p, cur, end, err); } /* parse the 1st byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_value0(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (cur == end) { p->state = parse_value0; return GRPC_ERROR_NONE; @@ -1114,8 +1138,8 @@ static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur, /* parse the 2nd byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_value1(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (cur == end) { p->state = parse_value1; return GRPC_ERROR_NONE; @@ -1132,8 +1156,8 @@ static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur, /* parse the 3rd byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_value2(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (cur == end) { p->state = parse_value2; return GRPC_ERROR_NONE; @@ -1150,8 +1174,8 @@ static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur, /* parse the 4th byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_value3(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (cur == end) { p->state = parse_value3; return GRPC_ERROR_NONE; @@ -1168,8 +1192,8 @@ static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur, /* parse the 5th byte of a varint into p->parsing.value depending on the byte, we may overflow, and care must be taken */ -static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_value4(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { uint8_t c; uint32_t cur_value; uint32_t add_value; @@ -1199,7 +1223,7 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur, } error: - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat( "integer overflow in hpack integer decoding: have 0x%08x, " "got byte 0x%02x on byte 5", @@ -1211,8 +1235,9 @@ error: /* parse any trailing bytes in a varint: it's possible to append an arbitrary number of 0x80's and not affect the value - a zero will terminate - and anything else will overflow */ -static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_value5up(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { while (cur != end && *cur == 0x80) { ++cur; } @@ -1226,7 +1251,7 @@ static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p, return parse_next(p, cur + 1, end); } - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat( "integer overflow in hpack integer decoding: have 0x%08x, " "got byte 0x%02x sometime after byte 5", @@ -1236,8 +1261,9 @@ static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p, } /* parse a string prefix */ -static grpc_error* parse_string_prefix(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_string_prefix(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { if (cur == end) { p->state = parse_string_prefix; return GRPC_ERROR_NONE; @@ -1269,8 +1295,8 @@ static void append_bytes(grpc_chttp2_hpack_parser_string* str, str->data.copied.length += static_cast(length); } -static grpc_error* append_string(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle append_string(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { grpc_chttp2_hpack_parser_string* str = p->parsing.str; uint32_t bits; uint8_t decoded[3]; @@ -1372,8 +1398,8 @@ static grpc_error* append_string(grpc_chttp2_hpack_parser* p, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"))); } -static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle finish_str(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { uint8_t decoded[2]; uint32_t bits; grpc_chttp2_hpack_parser_string* str = p->parsing.str; @@ -1391,7 +1417,7 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur, case B64_BYTE2: bits = p->base64_buffer; if (bits & 0xffff) { - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat("trailing bits in base64 encoding: 0x%04x", bits & 0xffff) .c_str()); @@ -1403,7 +1429,7 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur, case B64_BYTE3: bits = p->base64_buffer; if (bits & 0xff) { - grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat("trailing bits in base64 encoding: 0x%02x", bits & 0xff) .c_str()); @@ -1418,13 +1444,14 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur, } /* decode a nibble from a huffman encoded stream */ -static grpc_error* huff_nibble(grpc_chttp2_hpack_parser* p, uint8_t nibble) { +static grpc_error_handle huff_nibble(grpc_chttp2_hpack_parser* p, + uint8_t nibble) { int16_t emit = emit_sub_tbl[16 * emit_tbl[p->huff_state] + nibble]; int16_t next = next_sub_tbl[16 * next_tbl[p->huff_state] + nibble]; if (emit != -1) { if (emit >= 0 && emit < 256) { uint8_t c = static_cast(emit); - grpc_error* err = append_string(p, &c, (&c) + 1); + grpc_error_handle err = append_string(p, &c, (&c) + 1); if (err != GRPC_ERROR_NONE) return err; } else { assert(emit == 256); @@ -1435,10 +1462,11 @@ static grpc_error* huff_nibble(grpc_chttp2_hpack_parser* p, uint8_t nibble) { } /* decode full bytes from a huffman encoded stream */ -static grpc_error* add_huff_bytes(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle add_huff_bytes(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { for (; cur != end; ++cur) { - grpc_error* err = huff_nibble(p, *cur >> 4); + grpc_error_handle err = huff_nibble(p, *cur >> 4); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); err = huff_nibble(p, *cur & 0xf); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); @@ -1448,8 +1476,8 @@ static grpc_error* add_huff_bytes(grpc_chttp2_hpack_parser* p, /* decode some string bytes based on the current decoding mode (huffman or not) */ -static grpc_error* add_str_bytes(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle add_str_bytes(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { if (p->huff) { return add_huff_bytes(p, cur, end); } else { @@ -1458,18 +1486,18 @@ static grpc_error* add_str_bytes(grpc_chttp2_hpack_parser* p, } /* parse a string - tries to do large chunks at a time */ -static grpc_error* parse_string(grpc_chttp2_hpack_parser* p, const uint8_t* cur, - const uint8_t* end) { +static grpc_error_handle parse_string(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, const uint8_t* end) { size_t remaining = p->strlen - p->strgot; size_t given = static_cast(end - cur); if (remaining <= given) { - grpc_error* err = add_str_bytes(p, cur, cur + remaining); + grpc_error_handle err = add_str_bytes(p, cur, cur + remaining); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); err = finish_str(p, cur + remaining, end); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); return parse_next(p, cur + remaining, end); } else { - grpc_error* err = add_str_bytes(p, cur, cur + given); + grpc_error_handle err = add_str_bytes(p, cur, cur + given); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); GPR_ASSERT(given <= UINT32_MAX - p->strgot); p->strgot += static_cast(given); @@ -1479,10 +1507,9 @@ static grpc_error* parse_string(grpc_chttp2_hpack_parser* p, const uint8_t* cur, } /* begin parsing a string - performs setup, calls parse_string */ -static grpc_error* begin_parse_string(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end, - uint8_t binary, - grpc_chttp2_hpack_parser_string* str) { +static grpc_error_handle begin_parse_string( + grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end, + uint8_t binary, grpc_chttp2_hpack_parser_string* str) { if (!p->huff && binary == NOT_BINARY && static_cast(end - cur) >= p->strlen && p->current_slice_refcount != nullptr) { @@ -1518,8 +1545,9 @@ static grpc_error* begin_parse_string(grpc_chttp2_hpack_parser* p, } /* parse the key string */ -static grpc_error* parse_key_string(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end) { +static grpc_error_handle parse_key_string(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end) { return begin_parse_string(p, cur, end, NOT_BINARY, &p->key); } @@ -1554,8 +1582,8 @@ static void set_precomputed_md_idx(grpc_chttp2_hpack_parser* p, is a binary indexed header during string parsing. We'll need to revisit this metadata when we're done parsing, so we cache the metadata for this index here using set_precomputed_md_idx(). */ -static grpc_error* is_binary_indexed_header(grpc_chttp2_hpack_parser* p, - bool* is) { +static grpc_error_handle is_binary_indexed_header(grpc_chttp2_hpack_parser* p, + bool* is) { grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&p->table, p->index); if (GPR_UNLIKELY(GRPC_MDISNULL(elem))) { return on_invalid_hpack_idx(p); @@ -1574,29 +1602,30 @@ static grpc_error* is_binary_indexed_header(grpc_chttp2_hpack_parser* p, } /* parse the value string */ -static grpc_error* parse_value_string(grpc_chttp2_hpack_parser* p, - const uint8_t* cur, const uint8_t* end, - bool is_binary) { +static grpc_error_handle parse_value_string(grpc_chttp2_hpack_parser* p, + const uint8_t* cur, + const uint8_t* end, + bool is_binary) { return begin_parse_string(p, cur, end, is_binary ? BINARY_BEGIN : NOT_BINARY, &p->value); } -static grpc_error* parse_value_string_with_indexed_key( +static grpc_error_handle parse_value_string_with_indexed_key( grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end) { bool is_binary = false; - grpc_error* err = is_binary_indexed_header(p, &is_binary); + grpc_error_handle err = is_binary_indexed_header(p, &is_binary); if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); return parse_value_string(p, cur, end, is_binary); } -static grpc_error* parse_value_string_with_literal_key( +static grpc_error_handle parse_value_string_with_literal_key( grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end) { return parse_value_string(p, cur, end, is_binary_literal_header(p)); } /* "Uninitialized" header parser to save us a branch in on_hdr(). */ -static grpc_error* on_header_uninitialized(void* /*user_data*/, - grpc_mdelem md) { +static grpc_error_handle on_header_uninitialized(void* /*user_data*/, + grpc_mdelem md) { GRPC_MDELEM_UNREF(md); return GRPC_ERROR_CREATE_FROM_STATIC_STRING("on_header callback not set"); } @@ -1645,15 +1674,15 @@ void grpc_chttp2_hpack_parser_destroy(grpc_chttp2_hpack_parser* p) { gpr_free(p->value.data.copied.str); } -grpc_error* grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p, - const grpc_slice& slice) { +grpc_error_handle grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p, + const grpc_slice& slice) { /* max number of bytes to parse at a time... limits call stack depth on * compilers without TCO */ #define MAX_PARSE_LENGTH 1024 p->current_slice_refcount = slice.refcount; const uint8_t* start = GRPC_SLICE_START_PTR(slice); const uint8_t* end = GRPC_SLICE_END_PTR(slice); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; while (start != end && error == GRPC_ERROR_NONE) { const uint8_t* target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start); error = p->state(p, start, target); @@ -1669,7 +1698,7 @@ static const maybe_complete_func_type maybe_complete_funcs[] = { grpc_chttp2_maybe_complete_recv_initial_metadata, grpc_chttp2_maybe_complete_recv_trailing_metadata}; -static void force_client_rst_stream(void* sp, grpc_error* /*error*/) { +static void force_client_rst_stream(void* sp, grpc_error_handle /*error*/) { grpc_chttp2_stream* s = static_cast(sp); grpc_chttp2_transport* t = s->t; if (!s->write_closed) { @@ -1699,18 +1728,18 @@ static void parse_stream_compression_md(grpc_chttp2_transport* /*t*/, } } -grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last) { +grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last) { GPR_TIMER_SCOPE("grpc_chttp2_header_parser_parse", 0); grpc_chttp2_hpack_parser* parser = static_cast(hpack_parser); if (s != nullptr) { s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice); } - grpc_error* error = grpc_chttp2_hpack_parser_parse(parser, slice); + grpc_error_handle error = grpc_chttp2_hpack_parser_parse(parser, slice); if (error != GRPC_ERROR_NONE) { return error; } diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.h b/src/core/ext/transport/chttp2/transport/hpack_parser.h index 1b859c4d7c6..71aa194a233 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.h +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.h @@ -29,7 +29,7 @@ typedef struct grpc_chttp2_hpack_parser grpc_chttp2_hpack_parser; -typedef grpc_error* (*grpc_chttp2_hpack_parser_state)( +typedef grpc_error_handle (*grpc_chttp2_hpack_parser_state)( grpc_chttp2_hpack_parser* p, const uint8_t* beg, const uint8_t* end); struct grpc_chttp2_hpack_parser_string { @@ -45,10 +45,10 @@ struct grpc_chttp2_hpack_parser_string { }; struct grpc_chttp2_hpack_parser { /* user specified callback for each header output */ - grpc_error* (*on_header)(void* user_data, grpc_mdelem md); + grpc_error_handle (*on_header)(void* user_data, grpc_mdelem md); void* on_header_user_data; - grpc_error* last_error; + grpc_error_handle last_error; /* current parse state - or a function that implements it */ grpc_chttp2_hpack_parser_state state; @@ -103,15 +103,15 @@ void grpc_chttp2_hpack_parser_destroy(grpc_chttp2_hpack_parser* p); void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser* p); -grpc_error* grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p, - const grpc_slice& slice); +grpc_error_handle grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p, + const grpc_slice& slice); /* wraps grpc_chttp2_hpack_parser_parse to provide a frame level parser for the transport */ -grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser, - grpc_chttp2_transport* t, - grpc_chttp2_stream* s, - const grpc_slice& slice, - int is_last); +grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser, + grpc_chttp2_transport* t, + grpc_chttp2_stream* s, + const grpc_slice& slice, + int is_last); #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_H */ diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.cc b/src/core/ext/transport/chttp2/transport/hpack_table.cc index 78ee207c89b..696176b49d5 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_table.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_table.cc @@ -114,8 +114,8 @@ void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl* tbl, tbl->max_bytes = max_bytes; } -grpc_error* grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl* tbl, - uint32_t bytes) { +grpc_error_handle grpc_chttp2_hptbl_set_current_table_size( + grpc_chttp2_hptbl* tbl, uint32_t bytes) { if (tbl->current_table_bytes == bytes) { return GRPC_ERROR_NONE; } @@ -145,7 +145,8 @@ grpc_error* grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl* tbl, return GRPC_ERROR_NONE; } -grpc_error* grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, grpc_mdelem md) { +grpc_error_handle grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, + grpc_mdelem md) { /* determine how many bytes of buffer this entry represents */ size_t elem_bytes = GRPC_SLICE_LENGTH(GRPC_MDKEY(md)) + GRPC_SLICE_LENGTH(GRPC_MDVALUE(md)) + diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.h b/src/core/ext/transport/chttp2/transport/hpack_table.h index 34c3dceda75..14a77932a2e 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_table.h +++ b/src/core/ext/transport/chttp2/transport/hpack_table.h @@ -89,8 +89,8 @@ struct grpc_chttp2_hptbl { void grpc_chttp2_hptbl_destroy(grpc_chttp2_hptbl* tbl); void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl* tbl, uint32_t max_bytes); -grpc_error* grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl* tbl, - uint32_t bytes); +grpc_error_handle grpc_chttp2_hptbl_set_current_table_size( + grpc_chttp2_hptbl* tbl, uint32_t bytes); /* lookup a table entry based on its hpack index */ grpc_mdelem grpc_chttp2_hptbl_lookup_dynamic_index(const grpc_chttp2_hptbl* tbl, @@ -117,8 +117,8 @@ inline grpc_mdelem grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl* tbl, } } /* add a table entry to the index */ -grpc_error* grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, - grpc_mdelem md) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, + grpc_mdelem md) GRPC_MUST_USE_RESULT; size_t grpc_chttp2_get_size_in_hpack_table(grpc_mdelem elem, bool use_true_binary_metadata); diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.cc b/src/core/ext/transport/chttp2/transport/incoming_metadata.cc index d04630d726b..361b7b7ee0b 100644 --- a/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.cc @@ -27,7 +27,7 @@ #include #include -grpc_error* grpc_chttp2_incoming_metadata_buffer_add( +grpc_error_handle grpc_chttp2_incoming_metadata_buffer_add( grpc_chttp2_incoming_metadata_buffer* buffer, grpc_mdelem elem) { buffer->size += GRPC_MDELEM_LENGTH(elem); grpc_linked_mdelem* storage; @@ -42,7 +42,7 @@ grpc_error* grpc_chttp2_incoming_metadata_buffer_add( return grpc_metadata_batch_link_tail(&buffer->batch, storage); } -grpc_error* grpc_chttp2_incoming_metadata_buffer_replace_or_add( +grpc_error_handle grpc_chttp2_incoming_metadata_buffer_replace_or_add( grpc_chttp2_incoming_metadata_buffer* buffer, grpc_mdelem elem) { for (grpc_linked_mdelem* l = buffer->batch.list.head; l != nullptr; l = l->next) { diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h index b63caa1ae25..68413b068c7 100644 --- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h +++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h @@ -46,10 +46,10 @@ struct grpc_chttp2_incoming_metadata_buffer { void grpc_chttp2_incoming_metadata_buffer_publish( grpc_chttp2_incoming_metadata_buffer* buffer, grpc_metadata_batch* batch); -grpc_error* grpc_chttp2_incoming_metadata_buffer_add( +grpc_error_handle grpc_chttp2_incoming_metadata_buffer_add( grpc_chttp2_incoming_metadata_buffer* buffer, grpc_mdelem elem) GRPC_MUST_USE_RESULT; -grpc_error* grpc_chttp2_incoming_metadata_buffer_replace_or_add( +grpc_error_handle grpc_chttp2_incoming_metadata_buffer_replace_or_add( grpc_chttp2_incoming_metadata_buffer* buffer, grpc_mdelem elem) GRPC_MUST_USE_RESULT; void grpc_chttp2_incoming_metadata_buffer_set_deadline( diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h index 30a963df156..9c7f5fce532 100644 --- a/src/core/ext/transport/chttp2/transport/internal.h +++ b/src/core/ext/transport/chttp2/transport/internal.h @@ -217,8 +217,8 @@ class Chttp2IncomingByteStream : public ByteStream { void Orphan() override; bool Next(size_t max_size_hint, grpc_closure* on_complete) override; - grpc_error* Pull(grpc_slice* slice) override; - void Shutdown(grpc_error* error) override; + grpc_error_handle Pull(grpc_slice* slice) override; + void Shutdown(grpc_error_handle error) override; // TODO(roth): When I converted this class to C++, I wanted to make it // inherit from RefCounted or InternallyRefCounted instead of continuing @@ -241,17 +241,17 @@ class Chttp2IncomingByteStream : public ByteStream { } } - void PublishError(grpc_error* error); + void PublishError(grpc_error_handle error); - grpc_error* Push(const grpc_slice& slice, grpc_slice* slice_out); + grpc_error_handle Push(const grpc_slice& slice, grpc_slice* slice_out); - grpc_error* Finished(grpc_error* error, bool reset_on_error); + grpc_error_handle Finished(grpc_error_handle error, bool reset_on_error); uint32_t remaining_bytes() const { return remaining_bytes_; } private: - static void NextLocked(void* arg, grpc_error* error_ignored); - static void OrphanLocked(void* arg, grpc_error* error_ignored); + static void NextLocked(void* arg, grpc_error_handle error_ignored); + static void OrphanLocked(void* arg, grpc_error_handle error_ignored); void MaybeCreateStreamDecompressionCtx(); @@ -309,7 +309,7 @@ struct grpc_chttp2_transport { /** is the transport destroying itself? */ uint8_t destroying = false; /** has the upper layer closed the transport? */ - grpc_error* closed_with_error = GRPC_ERROR_NONE; + grpc_error_handle closed_with_error = GRPC_ERROR_NONE; /** is there a read request to the endpoint outstanding? */ uint8_t endpoint_reading = 1; @@ -358,7 +358,7 @@ struct grpc_chttp2_transport { /** Set to a grpc_error object if a goaway frame is received. By default, set * to GRPC_ERROR_NONE */ - grpc_error* goaway_error = GRPC_ERROR_NONE; + grpc_error_handle goaway_error = GRPC_ERROR_NONE; grpc_chttp2_sent_goaway_state sent_goaway_state = GRPC_CHTTP2_NO_GOAWAY_SEND; @@ -428,9 +428,9 @@ struct grpc_chttp2_transport { /* active parser */ void* parser_data = nullptr; grpc_chttp2_stream* incoming_stream = nullptr; - grpc_error* (*parser)(void* parser_user_data, grpc_chttp2_transport* t, - grpc_chttp2_stream* s, const grpc_slice& slice, - int is_last); + grpc_error_handle (*parser)(void* parser_user_data, grpc_chttp2_transport* t, + grpc_chttp2_stream* s, const grpc_slice& slice, + int is_last); grpc_chttp2_write_cb* write_cb_pool = nullptr; @@ -443,7 +443,7 @@ struct grpc_chttp2_transport { /* if non-NULL, close the transport with this error when writes are finished */ - grpc_error* close_transport_on_writes_finished = GRPC_ERROR_NONE; + grpc_error_handle close_transport_on_writes_finished = GRPC_ERROR_NONE; /* a list of closures to run after writes are finished */ grpc_closure_list run_after_write = GRPC_CLOSURE_LIST_INIT; @@ -581,9 +581,9 @@ struct grpc_chttp2_stream { bool eos_sent = false; /** the error that resulted in this stream being read-closed */ - grpc_error* read_closed_error = GRPC_ERROR_NONE; + grpc_error_handle read_closed_error = GRPC_ERROR_NONE; /** the error that resulted in this stream being write-closed */ - grpc_error* write_closed_error = GRPC_ERROR_NONE; + grpc_error_handle write_closed_error = GRPC_ERROR_NONE; grpc_published_metadata_method published_metadata[2] = {}; bool final_metadata_requested = false; @@ -604,13 +604,14 @@ struct grpc_chttp2_stream { * true */ grpc_slice_buffer unprocessed_incoming_frames_buffer; grpc_closure reset_byte_stream; - grpc_error* byte_stream_error = GRPC_ERROR_NONE; /* protected by t combiner */ - bool received_last_frame = false; /* protected by t combiner */ + grpc_error_handle byte_stream_error = + GRPC_ERROR_NONE; /* protected by t combiner */ + bool received_last_frame = false; /* protected by t combiner */ grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; /** saw some stream level error */ - grpc_error* forced_close_error = GRPC_ERROR_NONE; + grpc_error_handle forced_close_error = GRPC_ERROR_NONE; /** how many header frames have we received? */ uint8_t header_frames_received = 0; /** parsing state for data frames */ @@ -696,12 +697,12 @@ struct grpc_chttp2_begin_write_result { }; grpc_chttp2_begin_write_result grpc_chttp2_begin_write( grpc_chttp2_transport* t); -void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error* error); +void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error); /** Process one slice of incoming data; return 1 if the connection is still viable after reading, or 0 if the connection should be torn down */ -grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t, - const grpc_slice& slice); +grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t, + const grpc_slice& slice); bool grpc_chttp2_list_add_writable_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s); @@ -771,7 +772,8 @@ void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t); void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_closure** pclosure, - grpc_error* error, const char* desc); + grpc_error_handle error, + const char* desc); #define GRPC_HEADER_SIZE_IN_BYTES 5 #define MAX_SIZE_T (~(size_t)0) @@ -791,10 +793,11 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t, } while (0) void grpc_chttp2_fake_status(grpc_chttp2_transport* t, - grpc_chttp2_stream* stream, grpc_error* error); + grpc_chttp2_stream* stream, + grpc_error_handle error); void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t, grpc_chttp2_stream* s, int close_reads, - int close_writes, grpc_error* error); + int close_writes, grpc_error_handle error); void grpc_chttp2_start_writing(grpc_chttp2_transport* t); #ifndef NDEBUG @@ -862,7 +865,7 @@ void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t, grpc_chttp2_stream* s); void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error* due_to_error); + grpc_error_handle due_to_error); void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t, grpc_chttp2_stream* s); @@ -872,14 +875,15 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t, grpc_chttp2_stream* s); void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t, - grpc_chttp2_stream* s, grpc_error* error); + grpc_chttp2_stream* s, + grpc_error_handle error); /** Set the default keepalive configurations, must only be called at initialization */ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args, bool is_client); -void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error); +void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error); void schedule_bdp_ping_locked(grpc_chttp2_transport* t); diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index f4b02bbfac2..e16d6c6c6a1 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -36,27 +36,29 @@ #include "src/core/lib/transport/status_conversion.h" #include "src/core/lib/transport/timeout_encoding.h" -static grpc_error* init_frame_parser(grpc_chttp2_transport* t); -static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t, - int is_continuation); -static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t); -static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t); -static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t); -static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t); -static grpc_error* init_ping_parser(grpc_chttp2_transport* t); -static grpc_error* init_goaway_parser(grpc_chttp2_transport* t); -static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t, - int is_header); +static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t, + int is_continuation); +static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_window_update_frame_parser( + grpc_chttp2_transport* t); +static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t); +static grpc_error_handle init_skip_frame_parser(grpc_chttp2_transport* t, + int is_header); -static grpc_error* parse_frame_slice(grpc_chttp2_transport* t, - const grpc_slice& slice, int is_last); +static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t, + const grpc_slice& slice, + int is_last); -grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t, - const grpc_slice& slice) { +grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t, + const grpc_slice& slice) { const uint8_t* beg = GRPC_SLICE_START_PTR(slice); const uint8_t* end = GRPC_SLICE_END_PTR(slice); const uint8_t* cur = beg; - grpc_error* err; + grpc_error_handle err; if (cur == end) return GRPC_ERROR_NONE; @@ -250,7 +252,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t, GPR_UNREACHABLE_CODE(return nullptr); } -static grpc_error* init_frame_parser(grpc_chttp2_transport* t) { +static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) { if (t->is_first_frame && t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -303,19 +305,21 @@ static grpc_error* init_frame_parser(grpc_chttp2_transport* t) { } } -static grpc_error* skip_parser(void* /*parser*/, grpc_chttp2_transport* /*t*/, - grpc_chttp2_stream* /*s*/, - const grpc_slice& /*slice*/, int /*is_last*/) { +static grpc_error_handle skip_parser(void* /*parser*/, + grpc_chttp2_transport* /*t*/, + grpc_chttp2_stream* /*s*/, + const grpc_slice& /*slice*/, + int /*is_last*/) { return GRPC_ERROR_NONE; } -static grpc_error* skip_header(void* /*tp*/, grpc_mdelem md) { +static grpc_error_handle skip_header(void* /*tp*/, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); return GRPC_ERROR_NONE; } -static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t, - int is_header) { +static grpc_error_handle init_skip_frame_parser(grpc_chttp2_transport* t, + int is_header) { if (is_header) { uint8_t is_eoh = t->expect_continuation_stream_id != 0; t->parser = grpc_chttp2_header_parser_parse; @@ -334,7 +338,7 @@ void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) { init_skip_frame_parser(t, t->parser == grpc_chttp2_header_parser_parse); } -static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) { +static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) { // Update BDP accounting since we have received a data frame. grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator(); if (bdp_est) { @@ -347,7 +351,7 @@ static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) { } grpc_chttp2_stream* s = grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id); - grpc_error* err = GRPC_ERROR_NONE; + grpc_error_handle err = GRPC_ERROR_NONE; grpc_core::chttp2::FlowControlAction action; if (s == nullptr) { err = t->flow_control->RecvData(t->incoming_frame_size); @@ -413,8 +417,8 @@ static void GPR_ATTRIBUTE_NOINLINE on_initial_header_log( gpr_free(value); } -static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_timeout(grpc_chttp2_stream* s, - grpc_mdelem md) { +static grpc_error_handle GPR_ATTRIBUTE_NOINLINE +handle_timeout(grpc_chttp2_stream* s, grpc_mdelem md) { grpc_millis* cached_timeout = static_cast(grpc_mdelem_get_user_data(md, free_timeout)); grpc_millis timeout; @@ -443,9 +447,11 @@ static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_timeout(grpc_chttp2_stream* s, return GRPC_ERROR_NONE; } -static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_metadata_size_limit_exceeded( - grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_mdelem md, - size_t new_size, size_t metadata_size_limit) { +static grpc_error_handle GPR_ATTRIBUTE_NOINLINE +handle_metadata_size_limit_exceeded(grpc_chttp2_transport* t, + grpc_chttp2_stream* s, grpc_mdelem md, + size_t new_size, + size_t metadata_size_limit) { gpr_log(GPR_DEBUG, "received initial metadata size exceeds limit (%" PRIuPTR " vs. %" PRIuPTR @@ -463,9 +469,9 @@ static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_metadata_size_limit_exceeded( return GRPC_ERROR_NONE; } -static grpc_error* GPR_ATTRIBUTE_NOINLINE +static grpc_error_handle GPR_ATTRIBUTE_NOINLINE handle_metadata_add_failure(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_mdelem md, grpc_error* error) { + grpc_mdelem md, grpc_error_handle error) { grpc_chttp2_cancel_stream(t, s, error); grpc_chttp2_parsing_become_skip_parser(t); s->seen_error = true; @@ -473,7 +479,7 @@ handle_metadata_add_failure(grpc_chttp2_transport* t, grpc_chttp2_stream* s, return GRPC_ERROR_NONE; } -static grpc_error* on_initial_header(void* tp, grpc_mdelem md) { +static grpc_error_handle on_initial_header(void* tp, grpc_mdelem md) { GPR_TIMER_SCOPE("on_initial_header", 0); grpc_chttp2_transport* t = static_cast(tp); @@ -496,7 +502,7 @@ static grpc_error* on_initial_header(void* tp, grpc_mdelem md) { return handle_metadata_size_limit_exceeded(t, s, md, new_size, metadata_size_limit); } else { - grpc_error* error = + grpc_error_handle error = grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md); if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) { return handle_metadata_add_failure(t, s, md, error); @@ -506,7 +512,7 @@ static grpc_error* on_initial_header(void* tp, grpc_mdelem md) { return GRPC_ERROR_NONE; } -static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) { +static grpc_error_handle on_trailing_header(void* tp, grpc_mdelem md) { GPR_TIMER_SCOPE("on_trailing_header", 0); grpc_chttp2_transport* t = static_cast(tp); @@ -545,7 +551,7 @@ static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) { s->seen_error = true; GRPC_MDELEM_UNREF(md); } else { - grpc_error* error = + grpc_error_handle error = grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md); if (error != GRPC_ERROR_NONE) { grpc_chttp2_cancel_stream(t, s, error); @@ -557,8 +563,8 @@ static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) { return GRPC_ERROR_NONE; } -static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t, - int is_continuation) { +static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t, + int is_continuation) { uint8_t is_eoh = (t->incoming_frame_flags & GRPC_CHTTP2_DATA_FLAG_END_HEADERS) != 0; grpc_chttp2_stream* s; @@ -595,7 +601,7 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t, GRPC_CHTTP2_IF_TRACING(gpr_log( GPR_ERROR, "ignoring new grpc_chttp2_stream creation on client")); } - grpc_error* err = init_skip_frame_parser(t, 1); + grpc_error_handle err = init_skip_frame_parser(t, 1); if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_HAS_PRIORITY) { grpc_chttp2_hpack_parser_set_has_priority(&t->hpack_parser); } @@ -678,8 +684,9 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t, return GRPC_ERROR_NONE; } -static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) { - grpc_error* err = grpc_chttp2_window_update_parser_begin_frame( +static grpc_error_handle init_window_update_frame_parser( + grpc_chttp2_transport* t) { + grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame( &t->simple.window_update, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; @@ -696,8 +703,8 @@ static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) { return GRPC_ERROR_NONE; } -static grpc_error* init_ping_parser(grpc_chttp2_transport* t) { - grpc_error* err = grpc_chttp2_ping_parser_begin_frame( +static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) { + grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame( &t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; t->parser = grpc_chttp2_ping_parser_parse; @@ -705,8 +712,8 @@ static grpc_error* init_ping_parser(grpc_chttp2_transport* t) { return GRPC_ERROR_NONE; } -static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t) { - grpc_error* err = grpc_chttp2_rst_stream_parser_begin_frame( +static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) { + grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame( &t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; grpc_chttp2_stream* s = t->incoming_stream = @@ -720,8 +727,8 @@ static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t) { return GRPC_ERROR_NONE; } -static grpc_error* init_goaway_parser(grpc_chttp2_transport* t) { - grpc_error* err = grpc_chttp2_goaway_parser_begin_frame( +static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) { + grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame( &t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; t->parser = grpc_chttp2_goaway_parser_parse; @@ -729,13 +736,13 @@ static grpc_error* init_goaway_parser(grpc_chttp2_transport* t) { return GRPC_ERROR_NONE; } -static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) { +static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) { if (t->incoming_stream_id != 0) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Settings frame received for grpc_chttp2_stream"); } - grpc_error* err = grpc_chttp2_settings_parser_begin_frame( + grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame( &t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags, t->settings[GRPC_PEER_SETTINGS]); if (err != GRPC_ERROR_NONE) { @@ -755,10 +762,11 @@ static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) { return GRPC_ERROR_NONE; } -static grpc_error* parse_frame_slice(grpc_chttp2_transport* t, - const grpc_slice& slice, int is_last) { +static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t, + const grpc_slice& slice, + int is_last) { grpc_chttp2_stream* s = t->incoming_stream; - grpc_error* err = t->parser(t->parser_data, t, s, slice, is_last); + grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last); intptr_t unused; if (GPR_LIKELY(err == GRPC_ERROR_NONE)) { return err; diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index 317afcc5103..c89dd9a564a 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -39,7 +39,7 @@ static void add_to_write_list(grpc_chttp2_write_cb** list, } static void finish_write_cb(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_chttp2_write_cb* cb, grpc_error* error) { + grpc_chttp2_write_cb* cb, grpc_error_handle error) { grpc_chttp2_complete_closure_step(t, s, &cb->closure, error, "finish_write_cb"); cb->next = t->write_cb_pool; @@ -134,7 +134,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) { static bool update_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s, int64_t send_bytes, grpc_chttp2_write_cb** list, - int64_t* ctr, grpc_error* error) { + int64_t* ctr, grpc_error_handle error) { bool sched_any = false; grpc_chttp2_write_cb* cb = *list; *list = nullptr; @@ -678,7 +678,7 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write( return ctx.Result(); } -void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error* error) { +void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) { GPR_TIMER_SCOPE("grpc_chttp2_end_write", 0); grpc_chttp2_stream* s; diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index 6eecc63eecd..061b2e0916f 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -165,7 +165,7 @@ struct op_state { /* User requested RECV_TRAILING_METADATA */ bool pending_recv_trailing_metadata = false; cronet_net_error_code net_error = OK; - grpc_error* cancel_error = GRPC_ERROR_NONE; + grpc_error_handle cancel_error = GRPC_ERROR_NONE; /* data structure for storing data coming from server */ struct read_state rs; /* data structure for storing data going to the server */ @@ -306,13 +306,13 @@ static void read_grpc_header(stream_obj* s) { s->state.rs.remaining_bytes); } -static grpc_error* make_error_with_desc(int error_code, - int cronet_internal_error_code, - const char* desc) { +static grpc_error_handle make_error_with_desc(int error_code, + int cronet_internal_error_code, + const char* desc) { std::string error_message = absl::StrFormat("Cronet error code:%d, Cronet error detail:%s", cronet_internal_error_code, desc); - grpc_error* error = + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_message.c_str()); error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, error_code); return error; @@ -1317,7 +1317,7 @@ static enum e_op_result execute_stream_op(struct op_and_state* oas) { op_can_be_run(stream_op, s, &oas->state, OP_RECV_TRAILING_METADATA)) { CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_TRAILING_METADATA", oas); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (stream_state->state_op_done[OP_CANCEL_ERROR]) { error = GRPC_ERROR_REF(stream_state->cancel_error); } else if (stream_state->state_callback_received[OP_FAILED]) { diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index 213c142b974..d35cb542bbf 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -50,15 +50,15 @@ grpc_slice g_fake_auth_key; grpc_slice g_fake_auth_value; struct inproc_stream; -bool cancel_stream_locked(inproc_stream* s, grpc_error* error); -void maybe_process_ops_locked(inproc_stream* s, grpc_error* error); -void op_state_machine_locked(inproc_stream* s, grpc_error* error); +bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error); +void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error); +void op_state_machine_locked(inproc_stream* s, grpc_error_handle error); void log_metadata(const grpc_metadata_batch* md_batch, bool is_client, bool is_initial); -grpc_error* fill_in_metadata(inproc_stream* s, - const grpc_metadata_batch* metadata, - uint32_t flags, grpc_metadata_batch* out_md, - uint32_t* outflags, bool* markfilled); +grpc_error_handle fill_in_metadata(inproc_stream* s, + const grpc_metadata_batch* metadata, + uint32_t flags, grpc_metadata_batch* out_md, + uint32_t* outflags, bool* markfilled); struct shared_mu { shared_mu() { @@ -239,7 +239,7 @@ struct inproc_stream { grpc_millis write_buffer_deadline = GRPC_MILLIS_INF_FUTURE; grpc_metadata_batch write_buffer_trailing_md; bool write_buffer_trailing_md_filled = false; - grpc_error* write_buffer_cancel_error = GRPC_ERROR_NONE; + grpc_error_handle write_buffer_cancel_error = GRPC_ERROR_NONE; struct inproc_stream* other_side; bool other_side_closed = false; // won't talk anymore @@ -270,8 +270,8 @@ struct inproc_stream { bool closed = false; - grpc_error* cancel_self_error = GRPC_ERROR_NONE; - grpc_error* cancel_other_error = GRPC_ERROR_NONE; + grpc_error_handle cancel_self_error = GRPC_ERROR_NONE; + grpc_error_handle cancel_other_error = GRPC_ERROR_NONE; grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; @@ -293,10 +293,10 @@ void log_metadata(const grpc_metadata_batch* md_batch, bool is_client, } } -grpc_error* fill_in_metadata(inproc_stream* s, - const grpc_metadata_batch* metadata, - uint32_t flags, grpc_metadata_batch* out_md, - uint32_t* outflags, bool* markfilled) { +grpc_error_handle fill_in_metadata(inproc_stream* s, + const grpc_metadata_batch* metadata, + uint32_t flags, grpc_metadata_batch* out_md, + uint32_t* outflags, bool* markfilled) { if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) { log_metadata(metadata, s->t->is_client, outflags != nullptr); } @@ -307,7 +307,7 @@ grpc_error* fill_in_metadata(inproc_stream* s, if (markfilled != nullptr) { *markfilled = true; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; for (grpc_linked_mdelem* elem = metadata->list.head; (elem != nullptr) && (error == GRPC_ERROR_NONE); elem = elem->next) { grpc_linked_mdelem* nelem = @@ -374,7 +374,7 @@ void close_other_side_locked(inproc_stream* s, const char* reason) { // this stream_op_batch is only one of the pending operations for this // stream. This is called when one of the pending operations for the stream // is done and about to be NULLed out -void complete_if_batch_end_locked(inproc_stream* s, grpc_error* error, +void complete_if_batch_end_locked(inproc_stream* s, grpc_error_handle error, grpc_transport_stream_op_batch* op, const char* msg) { int is_sm = static_cast(op == s->send_message_op); @@ -394,14 +394,14 @@ void complete_if_batch_end_locked(inproc_stream* s, grpc_error* error, } } -void maybe_process_ops_locked(inproc_stream* s, grpc_error* error) { +void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error) { if (s && (error != GRPC_ERROR_NONE || s->ops_needed)) { s->ops_needed = false; op_state_machine_locked(s, error); } } -void fail_helper_locked(inproc_stream* s, grpc_error* error) { +void fail_helper_locked(inproc_stream* s, grpc_error_handle error) { INPROC_LOG(GPR_INFO, "op_state_machine %p fail_helper", s); // If we're failing this side, we need to make sure that // we also send or have already sent trailing metadata @@ -431,7 +431,7 @@ void fail_helper_locked(inproc_stream* s, grpc_error* error) { } } if (s->recv_initial_md_op) { - grpc_error* err; + grpc_error_handle err; if (!s->t->is_client) { // If this is a server, provide initial metadata with a path and authority // since it expects that as well as no error yet @@ -550,7 +550,7 @@ void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) { GPR_ASSERT( sender->send_message_op->payload->send_message.send_message->Next( SIZE_MAX, &unused)); - grpc_error* error = + grpc_error_handle error = sender->send_message_op->payload->send_message.send_message->Pull( &message_slice); if (error != GRPC_ERROR_NONE) { @@ -583,13 +583,13 @@ void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) { sender->send_message_op = nullptr; } -void op_state_machine_locked(inproc_stream* s, grpc_error* error) { +void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) { // This function gets called when we have contents in the unprocessed reads // Get what we want based on our ops wanted // Schedule our appropriate closures // and then return to ops_needed state if still needed - grpc_error* new_err = GRPC_ERROR_NONE; + grpc_error_handle new_err = GRPC_ERROR_NONE; bool needs_close = false; @@ -887,7 +887,7 @@ done: GRPC_ERROR_UNREF(new_err); } -bool cancel_stream_locked(inproc_stream* s, grpc_error* error) { +bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) { bool ret = false; // was the cancel accepted INPROC_LOG(GPR_INFO, "cancel_stream %p with %s", s, grpc_error_string(error)); if (s->cancel_self_error == GRPC_ERROR_NONE) { @@ -943,7 +943,7 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error* error) { return ret; } -void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} void perform_stream_op(grpc_transport* gt, grpc_stream* gs, grpc_transport_stream_op_batch* op) { @@ -962,7 +962,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs, s->t->is_client, false); } } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_closure* on_complete = op->on_complete; // TODO(roth): This is a hack needed because we use data inside of the // closure itself to do the barrier calculation (i.e., to ensure that @@ -1293,7 +1293,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, client_args); // TODO(ncteisen): design and support channelz GetSocket for inproc. - grpc_error* error = server->core_server->SetupTransport( + grpc_error_handle error = server->core_server->SetupTransport( server_transport, nullptr, server_args, nullptr); grpc_channel* channel = nullptr; if (error == GRPC_ERROR_NONE) { diff --git a/src/core/ext/xds/certificate_provider_factory.h b/src/core/ext/xds/certificate_provider_factory.h index 84c219e66bf..e9bba790de8 100644 --- a/src/core/ext/xds/certificate_provider_factory.h +++ b/src/core/ext/xds/certificate_provider_factory.h @@ -49,7 +49,7 @@ class CertificateProviderFactory { virtual const char* name() const = 0; virtual RefCountedPtr CreateCertificateProviderConfig( - const Json& config_json, grpc_error** error) = 0; + const Json& config_json, grpc_error_handle* error) = 0; // Create a CertificateProvider instance from config. virtual RefCountedPtr diff --git a/src/core/ext/xds/file_watcher_certificate_provider_factory.cc b/src/core/ext/xds/file_watcher_certificate_provider_factory.cc index a5250eba7c4..7a793b06737 100644 --- a/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +++ b/src/core/ext/xds/file_watcher_certificate_provider_factory.cc @@ -64,14 +64,14 @@ std::string FileWatcherCertificateProviderFactory::Config::ToString() const { RefCountedPtr FileWatcherCertificateProviderFactory::Config::Parse(const Json& config_json, - grpc_error** error) { + grpc_error_handle* error) { auto config = MakeRefCounted(); if (config_json.type() != Json::Type::OBJECT) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "error:config type should be OBJECT."); return nullptr; } - std::vector error_list; + std::vector error_list; ParseJsonObjectField(config_json.object_value(), "certificate_file", &config->identity_cert_file_, &error_list, false); ParseJsonObjectField(config_json.object_value(), "private_key_file", @@ -112,7 +112,7 @@ const char* FileWatcherCertificateProviderFactory::name() const { RefCountedPtr FileWatcherCertificateProviderFactory::CreateCertificateProviderConfig( - const Json& config_json, grpc_error** error) { + const Json& config_json, grpc_error_handle* error) { return FileWatcherCertificateProviderFactory::Config::Parse(config_json, error); } diff --git a/src/core/ext/xds/file_watcher_certificate_provider_factory.h b/src/core/ext/xds/file_watcher_certificate_provider_factory.h index c5700625e95..13e10debb3a 100644 --- a/src/core/ext/xds/file_watcher_certificate_provider_factory.h +++ b/src/core/ext/xds/file_watcher_certificate_provider_factory.h @@ -31,7 +31,7 @@ class FileWatcherCertificateProviderFactory class Config : public CertificateProviderFactory::Config { public: static RefCountedPtr Parse(const Json& config_json, - grpc_error** error); + grpc_error_handle* error); const char* name() const override; @@ -58,7 +58,7 @@ class FileWatcherCertificateProviderFactory RefCountedPtr CreateCertificateProviderConfig(const Json& config_json, - grpc_error** error) override; + grpc_error_handle* error) override; RefCountedPtr CreateCertificateProvider( RefCountedPtr config) override; diff --git a/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc b/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc index c1b7b84a826..6e63ae4ef3c 100644 --- a/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +++ b/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc @@ -52,10 +52,10 @@ std::string GoogleMeshCaCertificateProviderFactory::Config::ToString() const { return "{}"; } -std::vector +std::vector GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectStsService( const Json::Object& sts_service) { - std::vector error_list_sts_service; + std::vector error_list_sts_service; if (!ParseJsonObjectField(sts_service, "token_exchange_service_uri", &sts_config_.token_exchange_service_uri, &error_list_sts_service, false)) { @@ -89,14 +89,14 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectStsService( return error_list_sts_service; } -std::vector +std::vector GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectCallCredentials( const Json::Object& call_credentials) { - std::vector error_list_call_credentials; + std::vector error_list_call_credentials; const Json::Object* sts_service = nullptr; if (ParseJsonObjectField(call_credentials, "sts_service", &sts_service, &error_list_call_credentials)) { - std::vector error_list_sts_service = + std::vector error_list_sts_service = ParseJsonObjectStsService(*sts_service); if (!error_list_sts_service.empty()) { error_list_call_credentials.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( @@ -106,10 +106,10 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectCallCredentials( return error_list_call_credentials; } -std::vector +std::vector GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectGoogleGrpc( const Json::Object& google_grpc) { - std::vector error_list_google_grpc; + std::vector error_list_google_grpc; if (!ParseJsonObjectField(google_grpc, "target_uri", &endpoint_, &error_list_google_grpc, false)) { endpoint_ = "meshca.googleapis.com"; // Default target @@ -124,7 +124,7 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectGoogleGrpc( const Json::Object* call_credentials = nullptr; if (ExtractJsonType((*call_credentials_array)[0], "call_credentials[0]", &call_credentials, &error_list_google_grpc)) { - std::vector error_list_call_credentials = + std::vector error_list_call_credentials = ParseJsonObjectCallCredentials(*call_credentials); if (!error_list_call_credentials.empty()) { error_list_google_grpc.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( @@ -137,14 +137,14 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectGoogleGrpc( return error_list_google_grpc; } -std::vector +std::vector GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectGrpcServices( const Json::Object& grpc_service) { - std::vector error_list_grpc_services; + std::vector error_list_grpc_services; const Json::Object* google_grpc = nullptr; if (ParseJsonObjectField(grpc_service, "google_grpc", &google_grpc, &error_list_grpc_services)) { - std::vector error_list_google_grpc = + std::vector error_list_google_grpc = ParseJsonObjectGoogleGrpc(*google_grpc); if (!error_list_google_grpc.empty()) { error_list_grpc_services.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( @@ -158,10 +158,10 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectGrpcServices( return error_list_grpc_services; } -std::vector +std::vector GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectServer( const Json::Object& server) { - std::vector error_list_server; + std::vector error_list_server; std::string api_type; if (ParseJsonObjectField(server, "api_type", &api_type, &error_list_server, false)) { @@ -180,7 +180,7 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectServer( const Json::Object* grpc_service = nullptr; if (ExtractJsonType((*grpc_services)[0], "grpc_services[0]", &grpc_service, &error_list_server)) { - std::vector error_list_grpc_services = + std::vector error_list_grpc_services = ParseJsonObjectGrpcServices(*grpc_service); if (!error_list_grpc_services.empty()) { error_list_server.push_back(GRPC_ERROR_CREATE_FROM_VECTOR( @@ -193,8 +193,8 @@ GoogleMeshCaCertificateProviderFactory::Config::ParseJsonObjectServer( } RefCountedPtr -GoogleMeshCaCertificateProviderFactory::Config::Parse(const Json& config_json, - grpc_error** error) { +GoogleMeshCaCertificateProviderFactory::Config::Parse( + const Json& config_json, grpc_error_handle* error) { auto config = MakeRefCounted(); if (config_json.type() != Json::Type::OBJECT) { @@ -202,11 +202,11 @@ GoogleMeshCaCertificateProviderFactory::Config::Parse(const Json& config_json, "error:config type should be OBJECT."); return nullptr; } - std::vector error_list; + std::vector error_list; const Json::Object* server = nullptr; if (ParseJsonObjectField(config_json.object_value(), "server", &server, &error_list)) { - std::vector error_list_server = + std::vector error_list_server = config->ParseJsonObjectServer(*server); if (!error_list_server.empty()) { error_list.push_back( @@ -257,7 +257,7 @@ const char* GoogleMeshCaCertificateProviderFactory::name() const { RefCountedPtr GoogleMeshCaCertificateProviderFactory::CreateCertificateProviderConfig( - const Json& config_json, grpc_error** error) { + const Json& config_json, grpc_error_handle* error) { return GoogleMeshCaCertificateProviderFactory::Config::Parse(config_json, error); } diff --git a/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h b/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h index 31bf4275767..7a33f977a4a 100644 --- a/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +++ b/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h @@ -63,19 +63,20 @@ class GoogleMeshCaCertificateProviderFactory const std::string& location() const { return location_; } static RefCountedPtr Parse(const Json& config_json, - grpc_error** error); + grpc_error_handle* error); private: // Helpers for parsing the config - std::vector ParseJsonObjectStsService( + std::vector ParseJsonObjectStsService( const Json::Object& sts_service); - std::vector ParseJsonObjectCallCredentials( + std::vector ParseJsonObjectCallCredentials( const Json::Object& call_credentials); - std::vector ParseJsonObjectGoogleGrpc( + std::vector ParseJsonObjectGoogleGrpc( const Json::Object& google_grpc); - std::vector ParseJsonObjectGrpcServices( + std::vector ParseJsonObjectGrpcServices( const Json::Object& grpc_service); - std::vector ParseJsonObjectServer(const Json::Object& server); + std::vector ParseJsonObjectServer( + const Json::Object& server); std::string endpoint_; StsConfig sts_config_; @@ -90,7 +91,7 @@ class GoogleMeshCaCertificateProviderFactory RefCountedPtr CreateCertificateProviderConfig(const Json& config_json, - grpc_error** error) override; + grpc_error_handle* error) override; RefCountedPtr CreateCertificateProvider( RefCountedPtr /*config*/) override { diff --git a/src/core/ext/xds/xds_api.cc b/src/core/ext/xds/xds_api.cc index adbca6c1213..4f311ca6a79 100644 --- a/src/core/ext/xds/xds_api.cc +++ b/src/core/ext/xds/xds_api.cc @@ -1068,8 +1068,8 @@ absl::string_view TypeUrlExternalToInternal(bool use_v3, grpc_slice XdsApi::CreateAdsRequest( const XdsBootstrap::XdsServer& server, const std::string& type_url, const std::set& resource_names, - const std::string& version, const std::string& nonce, grpc_error* error, - bool populate_node) { + const std::string& version, const std::string& nonce, + grpc_error_handle error, bool populate_node) { upb::Arena arena; const EncodingContext context = {client_, tracer_, symtab_.ptr(), arena.ptr(), server.ShouldUseV3()}; @@ -1197,8 +1197,9 @@ void MaybeLogClusterLoadAssignment( } } -grpc_error* RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match, - XdsApi::Route* route, bool* ignore_route) { +grpc_error_handle RoutePathMatchParse( + const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route, + bool* ignore_route) { auto* case_sensitive_ptr = envoy_config_route_v3_RouteMatch_case_sensitive(match); bool case_sensitive = true; @@ -1290,7 +1291,7 @@ grpc_error* RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match, return GRPC_ERROR_NONE; } -grpc_error* RouteHeaderMatchersParse( +grpc_error_handle RouteHeaderMatchersParse( const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) { size_t size; const envoy_config_route_v3_HeaderMatcher* const* headers = @@ -1357,7 +1358,7 @@ grpc_error* RouteHeaderMatchersParse( return GRPC_ERROR_NONE; } -grpc_error* RouteRuntimeFractionParse( +grpc_error_handle RouteRuntimeFractionParse( const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) { const envoy_config_core_v3_RuntimeFractionalPercent* runtime_fraction = envoy_config_route_v3_RouteMatch_runtime_fraction(match); @@ -1390,9 +1391,9 @@ grpc_error* RouteRuntimeFractionParse( return GRPC_ERROR_NONE; } -grpc_error* ExtractHttpFilterTypeName(const EncodingContext& context, - const google_protobuf_Any* any, - absl::string_view* filter_type) { +grpc_error_handle ExtractHttpFilterTypeName(const EncodingContext& context, + const google_protobuf_Any* any, + absl::string_view* filter_type) { *filter_type = UpbStringToAbsl(google_protobuf_Any_type_url(any)); if (*filter_type == "type.googleapis.com/udpa.type.v1.TypedStruct") { upb_strview any_value = google_protobuf_Any_value(any); @@ -1410,7 +1411,7 @@ grpc_error* ExtractHttpFilterTypeName(const EncodingContext& context, } template -grpc_error* ParseTypedPerFilterConfig( +grpc_error_handle ParseTypedPerFilterConfig( const EncodingContext& context, const ParentType* parent, const EntryType* (*entry_func)(const ParentType*, size_t*), upb_strview (*key_func)(const EntryType*), @@ -1454,7 +1455,8 @@ grpc_error* ParseTypedPerFilterConfig( .c_str()); } } - grpc_error* error = ExtractHttpFilterTypeName(context, any, &filter_type); + grpc_error_handle error = + ExtractHttpFilterTypeName(context, any, &filter_type); if (error != GRPC_ERROR_NONE) return error; const XdsHttpFilterImpl* filter_impl = XdsHttpFilterRegistry::GetFilterForType(filter_type); @@ -1478,9 +1480,9 @@ grpc_error* ParseTypedPerFilterConfig( return GRPC_ERROR_NONE; } -grpc_error* RouteActionParse(const EncodingContext& context, - const envoy_config_route_v3_Route* route_msg, - XdsApi::Route* route, bool* ignore_route) { +grpc_error_handle RouteActionParse(const EncodingContext& context, + const envoy_config_route_v3_Route* route_msg, + XdsApi::Route* route, bool* ignore_route) { if (!envoy_config_route_v3_Route_has_route(route_msg)) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "No RouteAction found in route."); @@ -1533,7 +1535,7 @@ grpc_error* RouteActionParse(const EncodingContext& context, if (cluster.weight == 0) continue; sum_of_weights += cluster.weight; if (context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< + grpc_error_handle error = ParseTypedPerFilterConfig< envoy_config_route_v3_WeightedCluster_ClusterWeight, envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry>( context, cluster_weight, @@ -1663,7 +1665,7 @@ grpc_error* RouteActionParse(const EncodingContext& context, return GRPC_ERROR_NONE; } -grpc_error* RouteConfigParse( +grpc_error_handle RouteConfigParse( const EncodingContext& context, const envoy_config_route_v3_RouteConfiguration* route_config, XdsApi::RdsUpdate* rds_update) { @@ -1695,7 +1697,7 @@ grpc_error* RouteConfigParse( } // Parse typed_per_filter_config. if (context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< + grpc_error_handle error = ParseTypedPerFilterConfig< envoy_config_route_v3_VirtualHost, envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry>( context, virtual_hosts[i], @@ -1728,7 +1730,8 @@ grpc_error* RouteConfigParse( } XdsApi::Route route; bool ignore_route = false; - grpc_error* error = RoutePathMatchParse(match, &route, &ignore_route); + grpc_error_handle error = + RoutePathMatchParse(match, &route, &ignore_route); if (error != GRPC_ERROR_NONE) return error; if (ignore_route) continue; error = RouteHeaderMatchersParse(match, &route); @@ -1739,7 +1742,7 @@ grpc_error* RouteConfigParse( if (error != GRPC_ERROR_NONE) return error; if (ignore_route) continue; if (context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< + grpc_error_handle error = ParseTypedPerFilterConfig< envoy_config_route_v3_Route, envoy_config_route_v3_Route_TypedPerFilterConfigEntry>( context, routes[j], @@ -1771,11 +1774,11 @@ CertificateProviderInstanceParse( certificate_provider_instance_proto))}; } -grpc_error* CommonTlsContextParse( +grpc_error_handle CommonTlsContextParse( const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* common_tls_context_proto, XdsApi::CommonTlsContext* common_tls_context) GRPC_MUST_USE_RESULT; -grpc_error* CommonTlsContextParse( +grpc_error_handle CommonTlsContextParse( const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* common_tls_context_proto, XdsApi::CommonTlsContext* common_tls_context) { @@ -1870,7 +1873,7 @@ grpc_error* CommonTlsContextParse( return GRPC_ERROR_NONE; } -grpc_error* HttpConnectionManagerParse( +grpc_error_handle HttpConnectionManagerParse( bool is_client, const EncodingContext& context, const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* http_connection_manager_proto, @@ -1925,7 +1928,8 @@ grpc_error* HttpConnectionManagerParse( .c_str()); } absl::string_view filter_type; - grpc_error* error = ExtractHttpFilterTypeName(context, any, &filter_type); + grpc_error_handle error = + ExtractHttpFilterTypeName(context, any, &filter_type); if (error != GRPC_ERROR_NONE) return error; const XdsHttpFilterImpl* filter_impl = XdsHttpFilterRegistry::GetFilterForType(filter_type); @@ -1974,7 +1978,8 @@ grpc_error* HttpConnectionManagerParse( envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config( http_connection_manager_proto); XdsApi::RdsUpdate rds_update; - grpc_error* error = RouteConfigParse(context, route_config, &rds_update); + grpc_error_handle error = + RouteConfigParse(context, route_config, &rds_update); if (error != GRPC_ERROR_NONE) return error; http_connection_manager->rds_update = std::move(rds_update); return GRPC_ERROR_NONE; @@ -2007,7 +2012,7 @@ grpc_error* HttpConnectionManagerParse( return GRPC_ERROR_NONE; } -grpc_error* LdsResponseParseClient( +grpc_error_handle LdsResponseParseClient( const EncodingContext& context, const envoy_config_listener_v3_ApiListener* api_listener, bool is_v2, XdsApi::LdsUpdate* lds_update) { @@ -2026,7 +2031,7 @@ grpc_error* LdsResponseParseClient( &lds_update->http_connection_manager); } -grpc_error* DownstreamTlsContextParse( +grpc_error_handle DownstreamTlsContextParse( const EncodingContext& context, const envoy_config_core_v3_TransportSocket* transport_socket, XdsApi::DownstreamTlsContext* downstream_tls_context) { @@ -2050,7 +2055,7 @@ grpc_error* DownstreamTlsContextParse( envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context( downstream_tls_context_proto); if (common_tls_context != nullptr) { - grpc_error* error = CommonTlsContextParse( + grpc_error_handle error = CommonTlsContextParse( common_tls_context, &downstream_tls_context->common_tls_context); if (error != GRPC_ERROR_NONE) return error; } @@ -2073,12 +2078,12 @@ grpc_error* DownstreamTlsContextParse( return GRPC_ERROR_NONE; } -grpc_error* CidrRangeParse( +grpc_error_handle CidrRangeParse( const envoy_config_core_v3_CidrRange* cidr_range_proto, XdsApi::LdsUpdate::FilterChainMap::CidrRange* cidr_range) { std::string address_prefix = UpbStringToStdString( envoy_config_core_v3_CidrRange_address_prefix(cidr_range_proto)); - grpc_error* error = + grpc_error_handle error = grpc_string_to_sockaddr(&cidr_range->address, address_prefix.c_str(), 0); if (error != GRPC_ERROR_NONE) return error; cidr_range->prefix_len = 0; @@ -2097,7 +2102,7 @@ grpc_error* CidrRangeParse( return GRPC_ERROR_NONE; } -grpc_error* FilterChainMatchParse( +grpc_error_handle FilterChainMatchParse( const envoy_config_listener_v3_FilterChainMatch* filter_chain_match_proto, FilterChain::FilterChainMatch* filter_chain_match) { auto* destination_port = @@ -2113,7 +2118,7 @@ grpc_error* FilterChainMatchParse( filter_chain_match->prefix_ranges.reserve(size); for (size_t i = 0; i < size; i++) { XdsApi::LdsUpdate::FilterChainMap::CidrRange cidr_range; - grpc_error* error = CidrRangeParse(prefix_ranges[i], &cidr_range); + grpc_error_handle error = CidrRangeParse(prefix_ranges[i], &cidr_range); if (error != GRPC_ERROR_NONE) return error; filter_chain_match->prefix_ranges.push_back(cidr_range); } @@ -2127,7 +2132,8 @@ grpc_error* FilterChainMatchParse( filter_chain_match->source_prefix_ranges.reserve(size); for (size_t i = 0; i < size; i++) { XdsApi::LdsUpdate::FilterChainMap::CidrRange cidr_range; - grpc_error* error = CidrRangeParse(source_prefix_ranges[i], &cidr_range); + grpc_error_handle error = + CidrRangeParse(source_prefix_ranges[i], &cidr_range); if (error != GRPC_ERROR_NONE) return error; filter_chain_match->source_prefix_ranges.push_back(cidr_range); } @@ -2156,11 +2162,11 @@ grpc_error* FilterChainMatchParse( return GRPC_ERROR_NONE; } -grpc_error* FilterChainParse( +grpc_error_handle FilterChainParse( const EncodingContext& context, const envoy_config_listener_v3_FilterChain* filter_chain_proto, bool is_v2, FilterChain* filter_chain) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto* filter_chain_match = envoy_config_listener_v3_FilterChain_filter_chain_match( filter_chain_proto); @@ -2223,8 +2229,8 @@ grpc_error* FilterChainParse( return error; } -grpc_error* AddressParse(const envoy_config_core_v3_Address* address_proto, - std::string* address) { +grpc_error_handle AddressParse( + const envoy_config_core_v3_Address* address_proto, std::string* address) { const auto* socket_address = envoy_config_core_v3_Address_socket_address(address_proto); if (socket_address == nullptr) { @@ -2263,7 +2269,7 @@ struct InternalFilterChainMap { DestinationIpMap destination_ip_map; }; -grpc_error* AddFilterChainDataForSourcePort( +grpc_error_handle AddFilterChainDataForSourcePort( const FilterChain& filter_chain, XdsApi::LdsUpdate::FilterChainMap::SourcePortsMap* ports_map, uint32_t port) { @@ -2280,14 +2286,14 @@ grpc_error* AddFilterChainDataForSourcePort( return GRPC_ERROR_NONE; } -grpc_error* AddFilterChainDataForSourcePorts( +grpc_error_handle AddFilterChainDataForSourcePorts( const FilterChain& filter_chain, XdsApi::LdsUpdate::FilterChainMap::SourcePortsMap* ports_map) { if (filter_chain.filter_chain_match.source_ports.empty()) { return AddFilterChainDataForSourcePort(filter_chain, ports_map, 0); } else { for (uint32_t port : filter_chain.filter_chain_match.source_ports) { - grpc_error* error = + grpc_error_handle error = AddFilterChainDataForSourcePort(filter_chain, ports_map, port); if (error != GRPC_ERROR_NONE) return error; } @@ -2295,7 +2301,7 @@ grpc_error* AddFilterChainDataForSourcePorts( return GRPC_ERROR_NONE; } -grpc_error* AddFilterChainDataForSourceIpRange( +grpc_error_handle AddFilterChainDataForSourceIpRange( const FilterChain& filter_chain, InternalFilterChainMap::SourceIpMap* source_ip_map) { if (filter_chain.filter_chain_match.source_prefix_ranges.empty()) { @@ -2313,7 +2319,7 @@ grpc_error* AddFilterChainDataForSourceIpRange( if (insert_result.second) { insert_result.first->second.prefix_range.emplace(prefix_range); } - grpc_error* error = AddFilterChainDataForSourcePorts( + grpc_error_handle error = AddFilterChainDataForSourcePorts( filter_chain, &insert_result.first->second.ports_map); if (error != GRPC_ERROR_NONE) return error; } @@ -2321,7 +2327,7 @@ grpc_error* AddFilterChainDataForSourceIpRange( return GRPC_ERROR_NONE; } -grpc_error* AddFilterChainDataForSourceType( +grpc_error_handle AddFilterChainDataForSourceType( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIp* destination_ip) { GPR_ASSERT(static_cast( @@ -2331,7 +2337,7 @@ grpc_error* AddFilterChainDataForSourceType( filter_chain.filter_chain_match.source_type)]); } -grpc_error* AddFilterChainDataForApplicationProtocols( +grpc_error_handle AddFilterChainDataForApplicationProtocols( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIp* destination_ip) { // Only allow filter chains that do not mention application protocols @@ -2341,7 +2347,7 @@ grpc_error* AddFilterChainDataForApplicationProtocols( return AddFilterChainDataForSourceType(filter_chain, destination_ip); } -grpc_error* AddFilterChainDataForTransportProtocol( +grpc_error_handle AddFilterChainDataForTransportProtocol( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIp* destination_ip) { const std::string& transport_protocol = @@ -2369,7 +2375,7 @@ grpc_error* AddFilterChainDataForTransportProtocol( destination_ip); } -grpc_error* AddFilterChainDataForServerNames( +grpc_error_handle AddFilterChainDataForServerNames( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIp* destination_ip) { // Don't continue adding filter chains with server names mentioned @@ -2379,7 +2385,7 @@ grpc_error* AddFilterChainDataForServerNames( return AddFilterChainDataForTransportProtocol(filter_chain, destination_ip); } -grpc_error* AddFilterChainDataForDestinationIpRange( +grpc_error_handle AddFilterChainDataForDestinationIpRange( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIpMap* destination_ip_map) { if (filter_chain.filter_chain_match.prefix_ranges.empty()) { @@ -2397,7 +2403,7 @@ grpc_error* AddFilterChainDataForDestinationIpRange( if (insert_result.second) { insert_result.first->second.prefix_range.emplace(prefix_range); } - grpc_error* error = AddFilterChainDataForServerNames( + grpc_error_handle error = AddFilterChainDataForServerNames( filter_chain, &insert_result.first->second); if (error != GRPC_ERROR_NONE) return error; } @@ -2424,14 +2430,14 @@ XdsApi::LdsUpdate::FilterChainMap BuildFromInternalFilterChainMap( return filter_chain_map; } -grpc_error* BuildFilterChainMap( +grpc_error_handle BuildFilterChainMap( const std::vector& filter_chains, XdsApi::LdsUpdate::FilterChainMap* filter_chain_map) { InternalFilterChainMap internal_filter_chain_map; for (const auto& filter_chain : filter_chains) { // Discard filter chain entries that specify destination port if (filter_chain.filter_chain_match.destination_port != 0) continue; - grpc_error* error = AddFilterChainDataForDestinationIpRange( + grpc_error_handle error = AddFilterChainDataForDestinationIpRange( filter_chain, &internal_filter_chain_map.destination_ip_map); if (error != GRPC_ERROR_NONE) return error; } @@ -2440,12 +2446,12 @@ grpc_error* BuildFilterChainMap( return GRPC_ERROR_NONE; } -grpc_error* LdsResponseParseServer( +grpc_error_handle LdsResponseParseServer( const EncodingContext& context, const envoy_config_listener_v3_Listener* listener, bool is_v2, XdsApi::LdsUpdate* lds_update) { lds_update->type = XdsApi::LdsUpdate::ListenerType::kTcpListener; - grpc_error* error = + grpc_error_handle error = AddressParse(envoy_config_listener_v3_Listener_address(listener), &lds_update->address); if (error != GRPC_ERROR_NONE) return error; @@ -2489,13 +2495,13 @@ grpc_error* LdsResponseParseServer( return GRPC_ERROR_NONE; } -grpc_error* LdsResponseParse( +grpc_error_handle LdsResponseParse( const EncodingContext& context, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_listener_names, XdsApi::LdsUpdateMap* lds_update_map, std::set* resource_names_failed) { - std::vector errors; + std::vector errors; // Get the resources from the response. size_t size; const google_protobuf_Any* const* resources = @@ -2564,7 +2570,7 @@ grpc_error* LdsResponseParse( resource_names_failed->insert(listener_name); continue; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (api_listener != nullptr) { error = LdsResponseParseClient(context, api_listener, is_v2, &lds_update); } else { @@ -2581,13 +2587,13 @@ grpc_error* LdsResponseParse( return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing LDS response", &errors); } -grpc_error* RdsResponseParse( +grpc_error_handle RdsResponseParse( const EncodingContext& context, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_route_configuration_names, XdsApi::RdsUpdateMap* rds_update_map, std::set* resource_names_failed) { - std::vector errors; + std::vector errors; // Get the resources from the response. size_t size; const google_protobuf_Any* const* resources = @@ -2638,7 +2644,8 @@ grpc_error* RdsResponseParse( rds_resource_data.serialized_proto = UpbStringToStdString(encoded_route_config); // Parse the route_config. - grpc_error* error = RouteConfigParse(context, route_config, &rds_update); + grpc_error_handle error = + RouteConfigParse(context, route_config, &rds_update); if (error != GRPC_ERROR_NONE) { errors.push_back(grpc_error_add_child( GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -2650,13 +2657,13 @@ grpc_error* RdsResponseParse( return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing RDS response", &errors); } -grpc_error* CdsResponseParse( +grpc_error_handle CdsResponseParse( const EncodingContext& context, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_cluster_names, XdsApi::CdsUpdateMap* cds_update_map, std::set* resource_names_failed) { - std::vector errors; + std::vector errors; // Get the resources from the response. size_t size; const google_protobuf_Any* const* resources = @@ -2912,7 +2919,7 @@ grpc_error* CdsResponseParse( envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context( upstream_tls_context); if (common_tls_context != nullptr) { - grpc_error* error = CommonTlsContextParse( + grpc_error_handle error = CommonTlsContextParse( common_tls_context, &cds_update.common_tls_context); if (error != GRPC_ERROR_NONE) { errors.push_back(grpc_error_add_child( @@ -2983,7 +2990,7 @@ grpc_error* CdsResponseParse( return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing CDS response", &errors); } -grpc_error* ServerAddressParseAndAppend( +grpc_error_handle ServerAddressParseAndAppend( const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint, ServerAddressList* list) { // If health_status is not HEALTHY or UNKNOWN, skip this endpoint. @@ -3008,14 +3015,15 @@ grpc_error* ServerAddressParseAndAppend( } // Populate grpc_resolved_address. grpc_resolved_address addr; - grpc_error* error = grpc_string_to_sockaddr(&addr, address_str.c_str(), port); + grpc_error_handle error = + grpc_string_to_sockaddr(&addr, address_str.c_str(), port); if (error != GRPC_ERROR_NONE) return error; // Append the address to the list. list->emplace_back(addr, nullptr); return GRPC_ERROR_NONE; } -grpc_error* LocalityParse( +grpc_error_handle LocalityParse( const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints, XdsApi::EdsUpdate::Priority::Locality* output_locality, size_t* priority) { // Parse LB weight. @@ -3049,7 +3057,7 @@ grpc_error* LocalityParse( envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints( locality_lb_endpoints, &size); for (size_t i = 0; i < size; ++i) { - grpc_error* error = ServerAddressParseAndAppend( + grpc_error_handle error = ServerAddressParseAndAppend( lb_endpoints[i], &output_locality->endpoints); if (error != GRPC_ERROR_NONE) return error; } @@ -3059,7 +3067,7 @@ grpc_error* LocalityParse( return GRPC_ERROR_NONE; } -grpc_error* DropParseAndAppend( +grpc_error_handle DropParseAndAppend( const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* drop_overload, XdsApi::EdsUpdate::DropConfig* drop_config) { @@ -3098,13 +3106,13 @@ grpc_error* DropParseAndAppend( return GRPC_ERROR_NONE; } -grpc_error* EdsResponseParse( +grpc_error_handle EdsResponseParse( const EncodingContext& context, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_eds_service_names, XdsApi::EdsUpdateMap* eds_update_map, std::set* resource_names_failed) { - std::vector errors; + std::vector errors; // Get the resources from the response. size_t size; const google_protobuf_Any* const* resources = @@ -3161,7 +3169,7 @@ grpc_error* EdsResponseParse( const envoy_config_endpoint_v3_LocalityLbEndpoints* const* endpoints = envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints( cluster_load_assignment, &locality_size); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; for (size_t j = 0; j < locality_size; ++j) { size_t priority; XdsApi::EdsUpdate::Priority::Locality locality; @@ -3475,10 +3483,10 @@ grpc_slice XdsApi::CreateLrsRequest( return SerializeLrsRequest(context, request); } -grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response, - bool* send_all_clusters, - std::set* cluster_names, - grpc_millis* load_reporting_interval) { +grpc_error_handle XdsApi::ParseLrsResponse( + const grpc_slice& encoded_response, bool* send_all_clusters, + std::set* cluster_names, + grpc_millis* load_reporting_interval) { upb::Arena arena; // Decode the response. const envoy_service_load_stats_v3_LoadStatsResponse* decoded_response = diff --git a/src/core/ext/xds/xds_api.h b/src/core/ext/xds/xds_api.h index b8e46da18cd..e7bf1cd14e5 100644 --- a/src/core/ext/xds/xds_api.h +++ b/src/core/ext/xds/xds_api.h @@ -609,7 +609,7 @@ class XdsApi { // Otherwise, one of the *_update_map fields will be populated, based // on the type_url field. struct AdsParseResult { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; std::string version; std::string nonce; std::string type_url; @@ -628,7 +628,7 @@ class XdsApi { const std::string& type_url, const std::set& resource_names, const std::string& version, - const std::string& nonce, grpc_error* error, + const std::string& nonce, grpc_error_handle error, bool populate_node); // Parses an ADS response. @@ -648,10 +648,10 @@ class XdsApi { // Parses the LRS response and returns \a // load_reporting_interval for client-side load reporting. If there is any // error, the output config is invalid. - grpc_error* ParseLrsResponse(const grpc_slice& encoded_response, - bool* send_all_clusters, - std::set* cluster_names, - grpc_millis* load_reporting_interval); + grpc_error_handle ParseLrsResponse(const grpc_slice& encoded_response, + bool* send_all_clusters, + std::set* cluster_names, + grpc_millis* load_reporting_interval); // Assemble the client config proto message and return the serialized result. std::string AssembleClientConfig( diff --git a/src/core/ext/xds/xds_bootstrap.cc b/src/core/ext/xds/xds_bootstrap.cc index cc6753c2cfd..33cf276d2c1 100644 --- a/src/core/ext/xds/xds_bootstrap.cc +++ b/src/core/ext/xds/xds_bootstrap.cc @@ -81,11 +81,12 @@ bool XdsBootstrap::XdsServer::ShouldUseV3() const { // std::unique_ptr XdsBootstrap::Create( - absl::string_view json_string, grpc_error** error) { + absl::string_view json_string, grpc_error_handle* error) { Json json = Json::Parse(json_string, error); if (*error != GRPC_ERROR_NONE) { - grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Failed to parse bootstrap JSON string", error, 1); + grpc_error_handle error_out = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Failed to parse bootstrap JSON string", error, 1); GRPC_ERROR_UNREF(*error); *error = error_out; return nullptr; @@ -93,13 +94,13 @@ std::unique_ptr XdsBootstrap::Create( return absl::make_unique(std::move(json), error); } -XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) { +XdsBootstrap::XdsBootstrap(Json json, grpc_error_handle* error) { if (json.type() != Json::Type::OBJECT) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "malformed JSON in bootstrap file"); return; } - std::vector error_list; + std::vector error_list; auto it = json.mutable_object()->find("xds_servers"); if (it == json.mutable_object()->end()) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -108,7 +109,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"xds_servers\" field is not an array")); } else { - grpc_error* parse_error = ParseXdsServerList(&it->second); + grpc_error_handle parse_error = ParseXdsServerList(&it->second); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } it = json.mutable_object()->find("node"); @@ -117,7 +118,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"node\" field is not an object")); } else { - grpc_error* parse_error = ParseNode(&it->second); + grpc_error_handle parse_error = ParseNode(&it->second); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } @@ -138,7 +139,7 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"certificate_providers\" field is not an object")); } else { - grpc_error* parse_error = ParseCertificateProviders(&it->second); + grpc_error_handle parse_error = ParseCertificateProviders(&it->second); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } @@ -147,15 +148,15 @@ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) { &error_list); } -grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseXdsServerList(Json* json) { + std::vector error_list; for (size_t i = 0; i < json->mutable_array()->size(); ++i) { Json& child = json->mutable_array()->at(i); if (child.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("array element ", i, " is not an object").c_str())); } else { - grpc_error* parse_error = ParseXdsServer(&child, i); + grpc_error_handle parse_error = ParseXdsServer(&child, i); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } @@ -163,8 +164,8 @@ grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) { &error_list); } -grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseXdsServer(Json* json, size_t idx) { + std::vector error_list; servers_.emplace_back(); XdsServer& server = servers_[servers_.size() - 1]; auto it = json->mutable_object()->find("server_uri"); @@ -185,7 +186,8 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"channel_creds\" field is not an array")); } else { - grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server); + grpc_error_handle parse_error = + ParseChannelCredsArray(&it->second, &server); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } it = json->mutable_object()->find("server_features"); @@ -194,14 +196,15 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"server_features\" field is not an array")); } else { - grpc_error* parse_error = ParseServerFeaturesArray(&it->second, &server); + grpc_error_handle parse_error = + ParseServerFeaturesArray(&it->second, &server); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. if (error_list.empty()) return GRPC_ERROR_NONE; - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("errors parsing index ", idx).c_str()); for (size_t i = 0; i < error_list.size(); ++i) { error = grpc_error_add_child(error, error_list[i]); @@ -209,16 +212,16 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) { return error; } -grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json, - XdsServer* server) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseChannelCredsArray(Json* json, + XdsServer* server) { + std::vector error_list; for (size_t i = 0; i < json->mutable_array()->size(); ++i) { Json& child = json->mutable_array()->at(i); if (child.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("array element ", i, " is not an object").c_str())); } else { - grpc_error* parse_error = ParseChannelCreds(&child, i, server); + grpc_error_handle parse_error = ParseChannelCreds(&child, i, server); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } @@ -230,9 +233,9 @@ grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json, &error_list); } -grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx, - XdsServer* server) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseChannelCreds(Json* json, size_t idx, + XdsServer* server) { + std::vector error_list; std::string type; auto it = json->mutable_object()->find("type"); if (it == json->mutable_object()->end()) { @@ -268,7 +271,7 @@ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx, // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. if (error_list.empty()) return GRPC_ERROR_NONE; - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("errors parsing index ", idx).c_str()); for (size_t i = 0; i < error_list.size(); ++i) { error = grpc_error_add_child(error, error_list[i]); @@ -276,9 +279,9 @@ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx, return error; } -grpc_error* XdsBootstrap::ParseServerFeaturesArray(Json* json, - XdsServer* server) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseServerFeaturesArray(Json* json, + XdsServer* server) { + std::vector error_list; for (size_t i = 0; i < json->mutable_array()->size(); ++i) { Json& child = json->mutable_array()->at(i); if (child.type() == Json::Type::STRING && @@ -290,8 +293,8 @@ grpc_error* XdsBootstrap::ParseServerFeaturesArray(Json* json, "errors parsing \"server_features\" array", &error_list); } -grpc_error* XdsBootstrap::ParseNode(Json* json) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseNode(Json* json) { + std::vector error_list; node_ = absl::make_unique(); auto it = json->mutable_object()->find("id"); if (it != json->mutable_object()->end()) { @@ -317,7 +320,7 @@ grpc_error* XdsBootstrap::ParseNode(Json* json) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"locality\" field is not an object")); } else { - grpc_error* parse_error = ParseLocality(&it->second); + grpc_error_handle parse_error = ParseLocality(&it->second); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } @@ -334,8 +337,8 @@ grpc_error* XdsBootstrap::ParseNode(Json* json) { &error_list); } -grpc_error* XdsBootstrap::ParseLocality(Json* json) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseLocality(Json* json) { + std::vector error_list; auto it = json->mutable_object()->find("region"); if (it != json->mutable_object()->end()) { if (it->second.type() != Json::Type::STRING) { @@ -367,8 +370,8 @@ grpc_error* XdsBootstrap::ParseLocality(Json* json) { &error_list); } -grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) { - std::vector error_list; +grpc_error_handle XdsBootstrap::ParseCertificateProviders(Json* json) { + std::vector error_list; for (auto& certificate_provider : *(json->mutable_object())) { if (certificate_provider.second.type() != Json::Type::OBJECT) { error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -376,7 +379,7 @@ grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) { "\" is not an object") .c_str())); } else { - grpc_error* parse_error = ParseCertificateProvider( + grpc_error_handle parse_error = ParseCertificateProvider( certificate_provider.first, &certificate_provider.second); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } @@ -385,9 +388,9 @@ grpc_error* XdsBootstrap::ParseCertificateProviders(Json* json) { "errors parsing \"certificate_providers\" object", &error_list); } -grpc_error* XdsBootstrap::ParseCertificateProvider( +grpc_error_handle XdsBootstrap::ParseCertificateProvider( const std::string& instance_name, Json* certificate_provider_json) { - std::vector error_list; + std::vector error_list; auto it = certificate_provider_json->mutable_object()->find("plugin_name"); if (it == certificate_provider_json->mutable_object()->end()) { error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -408,14 +411,14 @@ grpc_error* XdsBootstrap::ParseCertificateProvider( error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "\"config\" field is not an object")); } else { - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; config = factory->CreateCertificateProviderConfig(it->second, &parse_error); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); } } else { // "config" is an optional field, so create an empty JSON object. - grpc_error* parse_error = GRPC_ERROR_NONE; + grpc_error_handle parse_error = GRPC_ERROR_NONE; config = factory->CreateCertificateProviderConfig(Json::Object(), &parse_error); if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error); @@ -427,7 +430,7 @@ grpc_error* XdsBootstrap::ParseCertificateProvider( // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error // string is not static in this case. if (error_list.empty()) return GRPC_ERROR_NONE; - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("errors parsing element \"", instance_name, "\"").c_str()); for (size_t i = 0; i < error_list.size(); ++i) { error = grpc_error_add_child(error, error_list[i]); diff --git a/src/core/ext/xds/xds_bootstrap.h b/src/core/ext/xds/xds_bootstrap.h index 19d7a7292b9..eff5e7abd1e 100644 --- a/src/core/ext/xds/xds_bootstrap.h +++ b/src/core/ext/xds/xds_bootstrap.h @@ -71,10 +71,10 @@ class XdsBootstrap { // If *error is not GRPC_ERROR_NONE after returning, then there was an // error parsing the contents. static std::unique_ptr Create(absl::string_view json_string, - grpc_error** error); + grpc_error_handle* error); // Do not instantiate directly -- use Create() above instead. - XdsBootstrap(Json json, grpc_error** error); + XdsBootstrap(Json json, grpc_error_handle* error); std::string ToString() const; @@ -92,16 +92,17 @@ class XdsBootstrap { } private: - grpc_error* ParseXdsServerList(Json* json); - grpc_error* ParseXdsServer(Json* json, size_t idx); - grpc_error* ParseChannelCredsArray(Json* json, XdsServer* server); - grpc_error* ParseChannelCreds(Json* json, size_t idx, XdsServer* server); - grpc_error* ParseServerFeaturesArray(Json* json, XdsServer* server); - grpc_error* ParseNode(Json* json); - grpc_error* ParseLocality(Json* json); - grpc_error* ParseCertificateProviders(Json* json); - grpc_error* ParseCertificateProvider(const std::string& instance_name, - Json* certificate_provider_json); + grpc_error_handle ParseXdsServerList(Json* json); + grpc_error_handle ParseXdsServer(Json* json, size_t idx); + grpc_error_handle ParseChannelCredsArray(Json* json, XdsServer* server); + grpc_error_handle ParseChannelCreds(Json* json, size_t idx, + XdsServer* server); + grpc_error_handle ParseServerFeaturesArray(Json* json, XdsServer* server); + grpc_error_handle ParseNode(Json* json); + grpc_error_handle ParseLocality(Json* json); + grpc_error_handle ParseCertificateProviders(Json* json); + grpc_error_handle ParseCertificateProvider(const std::string& instance_name, + Json* certificate_provider_json); absl::InlinedVector servers_; std::unique_ptr node_; diff --git a/src/core/ext/xds/xds_certificate_provider.cc b/src/core/ext/xds/xds_certificate_provider.cc index 7e84d5f9662..ce1ba673634 100644 --- a/src/core/ext/xds/xds_certificate_provider.cc +++ b/src/core/ext/xds/xds_certificate_provider.cc @@ -51,8 +51,8 @@ class RootCertificatesWatcher } } - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override { + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override { if (root_cert_error != GRPC_ERROR_NONE) { parent_->SetErrorForCert(cert_name_, root_cert_error /* pass the ref */, absl::nullopt); @@ -86,8 +86,8 @@ class IdentityCertificatesWatcher } } - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override { + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override { if (identity_cert_error != GRPC_ERROR_NONE) { parent_->SetErrorForCert(cert_name_, absl::nullopt, identity_cert_error /* pass the ref */); diff --git a/src/core/ext/xds/xds_client.cc b/src/core/ext/xds/xds_client.cc index d777980210a..88a7f4afe5f 100644 --- a/src/core/ext/xds/xds_client.cc +++ b/src/core/ext/xds/xds_client.cc @@ -101,8 +101,8 @@ class XdsClient::ChannelState::RetryableCall private: void StartNewCallLocked(); void StartRetryTimerLocked(); - static void OnRetryTimer(void* arg, grpc_error* error); - void OnRetryTimerLocked(grpc_error* error); + static void OnRetryTimer(void* arg, grpc_error_handle error); + void OnRetryTimerLocked(grpc_error_handle error); // The wrapped xds call that talks to the xds server. It's instantiated // every time we start a new call. It's null during call retry backoff. @@ -179,7 +179,7 @@ class XdsClient::ChannelState::AdsCallState } private: - static void OnTimer(void* arg, grpc_error* error) { + static void OnTimer(void* arg, grpc_error_handle error) { ResourceState* self = static_cast(arg); { MutexLock lock(&self->ads_calld_->xds_client()->mu_); @@ -189,11 +189,11 @@ class XdsClient::ChannelState::AdsCallState self->Unref(DEBUG_LOCATION, "timer"); } - void OnTimerLocked(grpc_error* error) + void OnTimerLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) { if (error == GRPC_ERROR_NONE && timer_pending_) { timer_pending_ = false; - grpc_error* watcher_error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle watcher_error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrFormat( "timeout obtaining resource {type=%s name=%s} from xds server", type_url_, name_) @@ -252,7 +252,7 @@ class XdsClient::ChannelState::AdsCallState // Nonce and error for this resource type. std::string nonce; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // Subscribed resources of this type. std::map> @@ -275,14 +275,14 @@ class XdsClient::ChannelState::AdsCallState XdsApi::EdsUpdateMap eds_update_map) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnRequestSent(void* arg, grpc_error* error); - void OnRequestSentLocked(grpc_error* error) + static void OnRequestSent(void* arg, grpc_error_handle error); + void OnRequestSentLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnResponseReceived(void* arg, grpc_error* error); + static void OnResponseReceived(void* arg, grpc_error_handle error); bool OnResponseReceivedLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnStatusReceived(void* arg, grpc_error* error); - void OnStatusReceivedLocked(grpc_error* error) + static void OnStatusReceived(void* arg, grpc_error_handle error); + void OnStatusReceivedLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); bool IsCurrentCallOnChannel() const; @@ -358,12 +358,12 @@ class XdsClient::ChannelState::LrsCallState private: void ScheduleNextReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnNextReportTimer(void* arg, grpc_error* error); - bool OnNextReportTimerLocked(grpc_error* error) + static void OnNextReportTimer(void* arg, grpc_error_handle error); + bool OnNextReportTimerLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); bool SendReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnReportDone(void* arg, grpc_error* error); - bool OnReportDoneLocked(grpc_error* error) + static void OnReportDone(void* arg, grpc_error_handle error); + bool OnReportDoneLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); bool IsCurrentReporterOnCall() const { @@ -383,14 +383,14 @@ class XdsClient::ChannelState::LrsCallState grpc_closure on_report_done_; }; - static void OnInitialRequestSent(void* arg, grpc_error* error); + static void OnInitialRequestSent(void* arg, grpc_error_handle error); void OnInitialRequestSentLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnResponseReceived(void* arg, grpc_error* error); + static void OnResponseReceived(void* arg, grpc_error_handle error); bool OnResponseReceivedLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); - static void OnStatusReceived(void* arg, grpc_error* error); - void OnStatusReceivedLocked(grpc_error* error) + static void OnStatusReceived(void* arg, grpc_error_handle error); + void OnStatusReceivedLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_); bool IsCurrentCallOnChannel() const; @@ -651,7 +651,7 @@ void XdsClient::ChannelState::RetryableCall::StartRetryTimerLocked() { template void XdsClient::ChannelState::RetryableCall::OnRetryTimer( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { RetryableCall* calld = static_cast(arg); { MutexLock lock(&calld->chand_->xds_client()->mu_); @@ -662,7 +662,7 @@ void XdsClient::ChannelState::RetryableCall::OnRetryTimer( template void XdsClient::ChannelState::RetryableCall::OnRetryTimerLocked( - grpc_error* error) { + grpc_error_handle error) { retry_timer_callback_pending_ = false; if (!shutting_down_ && error == GRPC_ERROR_NONE) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { @@ -1145,8 +1145,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdateLocked( } } -void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg, - grpc_error* error) { +void XdsClient::ChannelState::AdsCallState::OnRequestSent( + void* arg, grpc_error_handle error) { AdsCallState* ads_calld = static_cast(arg); { MutexLock lock(&ads_calld->xds_client()->mu_); @@ -1156,7 +1156,7 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg, } void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked( - grpc_error* error) { + grpc_error_handle error) { if (IsCurrentCallOnChannel() && error == GRPC_ERROR_NONE) { // Clean up the sent message. grpc_byte_buffer_destroy(send_message_payload_); @@ -1180,7 +1180,7 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked( } void XdsClient::ChannelState::AdsCallState::OnResponseReceived( - void* arg, grpc_error* /* error */) { + void* arg, grpc_error_handle /* error */) { AdsCallState* ads_calld = static_cast(arg); bool done; { @@ -1279,7 +1279,7 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() { } void XdsClient::ChannelState::AdsCallState::OnStatusReceived( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { AdsCallState* ads_calld = static_cast(arg); { MutexLock lock(&ads_calld->xds_client()->mu_); @@ -1289,7 +1289,7 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceived( } void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked( - grpc_error* error) { + grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { char* status_details = grpc_slice_to_c_string(status_details_); gpr_log(GPR_INFO, @@ -1351,7 +1351,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter:: } void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { Reporter* self = static_cast(arg); bool done; { @@ -1362,7 +1362,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer( } bool XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimerLocked( - grpc_error* error) { + grpc_error_handle error) { next_report_timer_callback_pending_ = false; if (error != GRPC_ERROR_NONE || !IsCurrentReporterOnCall()) { GRPC_ERROR_UNREF(error); @@ -1427,7 +1427,7 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() { } void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { Reporter* self = static_cast(arg); bool done; { @@ -1438,7 +1438,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone( } bool XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked( - grpc_error* error) { + grpc_error_handle error) { grpc_byte_buffer_destroy(parent_->send_message_payload_); parent_->send_message_payload_ = nullptr; // If there are no more registered stats to report, cancel the call. @@ -1608,7 +1608,7 @@ void XdsClient::ChannelState::LrsCallState::MaybeStartReportingLocked() { } void XdsClient::ChannelState::LrsCallState::OnInitialRequestSent( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { LrsCallState* lrs_calld = static_cast(arg); { MutexLock lock(&lrs_calld->xds_client()->mu_); @@ -1625,7 +1625,7 @@ void XdsClient::ChannelState::LrsCallState::OnInitialRequestSentLocked() { } void XdsClient::ChannelState::LrsCallState::OnResponseReceived( - void* arg, grpc_error* /*error*/) { + void* arg, grpc_error_handle /*error*/) { LrsCallState* lrs_calld = static_cast(arg); bool done; { @@ -1653,7 +1653,7 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() { bool send_all_clusters = false; std::set new_cluster_names; grpc_millis new_load_reporting_interval; - grpc_error* parse_error = xds_client()->api_.ParseLrsResponse( + grpc_error_handle parse_error = xds_client()->api_.ParseLrsResponse( response_slice, &send_all_clusters, &new_cluster_names, &new_load_reporting_interval); if (parse_error != GRPC_ERROR_NONE) { @@ -1728,7 +1728,7 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() { } void XdsClient::ChannelState::LrsCallState::OnStatusReceived( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { LrsCallState* lrs_calld = static_cast(arg); { MutexLock lock(&lrs_calld->xds_client()->mu_); @@ -1738,7 +1738,7 @@ void XdsClient::ChannelState::LrsCallState::OnStatusReceived( } void XdsClient::ChannelState::LrsCallState::OnStatusReceivedLocked( - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(call_ != nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { char* status_details = grpc_slice_to_c_string(status_details_); @@ -2142,7 +2142,7 @@ void XdsClient::ResetBackoff() { } } -void XdsClient::NotifyOnErrorLocked(grpc_error* error) { +void XdsClient::NotifyOnErrorLocked(grpc_error_handle error) { for (const auto& p : listener_map_) { const ListenerState& listener_state = p.second; for (const auto& p : listener_state.watchers) { @@ -2347,7 +2347,7 @@ void XdsClientGlobalShutdown() ABSL_NO_THREAD_SAFETY_ANALYSIS { namespace { std::string GetBootstrapContents(const char* fallback_config, - grpc_error** error) { + grpc_error_handle* error) { // First, try GRPC_XDS_BOOTSTRAP env var. grpc_core::UniquePtr path(gpr_getenv("GRPC_XDS_BOOTSTRAP")); if (path != nullptr) { @@ -2393,7 +2393,7 @@ std::string GetBootstrapContents(const char* fallback_config, } // namespace RefCountedPtr XdsClient::GetOrCreate(const grpc_channel_args* args, - grpc_error** error) { + grpc_error_handle* error) { RefCountedPtr xds_client; // If getting bootstrap from channel args, create a local XdsClient // instance for the channel or server instead of using the global instance. @@ -2504,7 +2504,7 @@ RefCountedPtr XdsClient::GetFromChannelArgs( grpc_slice grpc_dump_xds_configs() { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto xds_client = grpc_core::XdsClient::GetOrCreate(nullptr, &error); if (error != GRPC_ERROR_NONE) { // If we isn't using xDS, just return an empty string. diff --git a/src/core/ext/xds/xds_client.h b/src/core/ext/xds/xds_client.h index b7415af6490..0ee84e7866d 100644 --- a/src/core/ext/xds/xds_client.h +++ b/src/core/ext/xds/xds_client.h @@ -48,7 +48,7 @@ class XdsClient : public DualRefCounted { public: virtual ~ListenerWatcherInterface() = default; virtual void OnListenerChanged(XdsApi::LdsUpdate listener) = 0; - virtual void OnError(grpc_error* error) = 0; + virtual void OnError(grpc_error_handle error) = 0; virtual void OnResourceDoesNotExist() = 0; }; @@ -57,7 +57,7 @@ class XdsClient : public DualRefCounted { public: virtual ~RouteConfigWatcherInterface() = default; virtual void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) = 0; - virtual void OnError(grpc_error* error) = 0; + virtual void OnError(grpc_error_handle error) = 0; virtual void OnResourceDoesNotExist() = 0; }; @@ -66,7 +66,7 @@ class XdsClient : public DualRefCounted { public: virtual ~ClusterWatcherInterface() = default; virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data) = 0; - virtual void OnError(grpc_error* error) = 0; + virtual void OnError(grpc_error_handle error) = 0; virtual void OnResourceDoesNotExist() = 0; }; @@ -75,7 +75,7 @@ class XdsClient : public DualRefCounted { public: virtual ~EndpointWatcherInterface() = default; virtual void OnEndpointChanged(XdsApi::EdsUpdate update) = 0; - virtual void OnError(grpc_error* error) = 0; + virtual void OnError(grpc_error_handle error) = 0; virtual void OnResourceDoesNotExist() = 0; }; @@ -83,7 +83,7 @@ class XdsClient : public DualRefCounted { // If *error is not GRPC_ERROR_NONE upon return, then there was // an error initializing the client. static RefCountedPtr GetOrCreate(const grpc_channel_args* args, - grpc_error** error); + grpc_error_handle* error); // Most callers should not instantiate directly. Use GetOrCreate() instead. XdsClient(std::unique_ptr bootstrap, @@ -317,7 +317,7 @@ class XdsClient : public DualRefCounted { }; // Sends an error notification to all watchers. - void NotifyOnErrorLocked(grpc_error* error) + void NotifyOnErrorLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); XdsApi::ClusterLoadReportMap BuildLoadReportSnapshotLocked( diff --git a/src/core/ext/xds/xds_server_config_fetcher.cc b/src/core/ext/xds/xds_server_config_fetcher.cc index 7cb3b934756..6cdf3e5ebf1 100644 --- a/src/core/ext/xds/xds_server_config_fetcher.cc +++ b/src/core/ext/xds/xds_server_config_fetcher.cc @@ -163,8 +163,8 @@ const XdsApi::LdsUpdate::FilterChainData* FindFilterChainDataForSourceType( return nullptr; } grpc_resolved_address source_addr; - grpc_error* error = grpc_string_to_sockaddr(&source_addr, host.c_str(), - 0 /* port doesn't matter here */); + grpc_error_handle error = grpc_string_to_sockaddr( + &source_addr, host.c_str(), 0 /* port doesn't matter here */); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s", host.c_str()); @@ -214,8 +214,8 @@ const XdsApi::LdsUpdate::FilterChainData* FindFilterChainDataForDestinationIp( return nullptr; } grpc_resolved_address destination_addr; - grpc_error* error = grpc_string_to_sockaddr(&destination_addr, host.c_str(), - 0 /* port doesn't matter here */); + grpc_error_handle error = grpc_string_to_sockaddr( + &destination_addr, host.c_str(), 0 /* port doesn't matter here */); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s", host.c_str()); @@ -448,7 +448,7 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher { } } - void OnError(grpc_error* error) override { + void OnError(grpc_error_handle error) override { if (filter_chain_match_manager_ != nullptr) { gpr_log(GPR_ERROR, "ListenerWatcher:%p XdsClient reports error: %s for %s; " @@ -523,7 +523,7 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create( grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_server_config_fetcher_xds_create()", 0, ()); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::RefCountedPtr xds_client = grpc_core::XdsClient::GetOrCreate(args, &error); if (error != GRPC_ERROR_NONE) { diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc index 60b83667c54..122d7a916fb 100644 --- a/src/core/lib/channel/channel_stack.cc +++ b/src/core/lib/channel/channel_stack.cc @@ -98,7 +98,7 @@ grpc_call_element* grpc_call_stack_element(grpc_call_stack* call_stack, return CALL_ELEMS_FROM_STACK(call_stack) + index; } -grpc_error* grpc_channel_stack_init( +grpc_error_handle grpc_channel_stack_init( int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg, const grpc_channel_filter** filters, size_t filter_count, const grpc_channel_args* channel_args, grpc_transport* optional_transport, @@ -120,7 +120,7 @@ grpc_error* grpc_channel_stack_init( sizeof(grpc_channel_element)); /* init per-filter data */ - grpc_error* first_error = GRPC_ERROR_NONE; + grpc_error_handle first_error = GRPC_ERROR_NONE; for (i = 0; i < filter_count; i++) { args.channel_stack = stack; args.channel_args = channel_args; @@ -129,7 +129,8 @@ grpc_error* grpc_channel_stack_init( args.is_last = i == (filter_count - 1); elems[i].filter = filters[i]; elems[i].channel_data = user_data; - grpc_error* error = elems[i].filter->init_channel_elem(&elems[i], &args); + grpc_error_handle error = + elems[i].filter->init_channel_elem(&elems[i], &args); if (error != GRPC_ERROR_NONE) { if (first_error == GRPC_ERROR_NONE) { first_error = error; @@ -161,10 +162,10 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack) { } } -grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack, - int initial_refs, grpc_iomgr_cb_func destroy, - void* destroy_arg, - const grpc_call_element_args* elem_args) { +grpc_error_handle grpc_call_stack_init( + grpc_channel_stack* channel_stack, int initial_refs, + grpc_iomgr_cb_func destroy, void* destroy_arg, + const grpc_call_element_args* elem_args) { grpc_channel_element* channel_elems = CHANNEL_ELEMS_FROM_STACK(channel_stack); size_t count = channel_stack->count; grpc_call_element* call_elems; @@ -178,7 +179,7 @@ grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack, GPR_ROUND_UP_TO_ALIGNMENT_SIZE(count * sizeof(grpc_call_element)); /* init per-filter data */ - grpc_error* first_error = GRPC_ERROR_NONE; + grpc_error_handle first_error = GRPC_ERROR_NONE; for (size_t i = 0; i < count; i++) { call_elems[i].filter = channel_elems[i].filter; call_elems[i].channel_data = channel_elems[i].channel_data; @@ -187,7 +188,7 @@ grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack, GPR_ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data); } for (size_t i = 0; i < count; i++) { - grpc_error* error = + grpc_error_handle error = call_elems[i].filter->init_call_elem(&call_elems[i], elem_args); if (error != GRPC_ERROR_NONE) { if (first_error == GRPC_ERROR_NONE) { diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h index 1573ae1e056..4832303caba 100644 --- a/src/core/lib/channel/channel_stack.h +++ b/src/core/lib/channel/channel_stack.h @@ -125,8 +125,8 @@ struct grpc_channel_filter { transport and is on the server. Most filters want to ignore this argument. Implementations may assume that elem->call_data is all zeros. */ - grpc_error* (*init_call_elem)(grpc_call_element* elem, - const grpc_call_element_args* args); + grpc_error_handle (*init_call_elem)(grpc_call_element* elem, + const grpc_call_element_args* args); void (*set_pollset_or_pollset_set)(grpc_call_element* elem, grpc_polling_entity* pollent); /* Destroy per call data. @@ -148,8 +148,8 @@ struct grpc_channel_filter { useful for asserting correct configuration by upper layer code. The filter does not need to do any chaining. Implementations may assume that elem->channel_data is all zeros. */ - grpc_error* (*init_channel_elem)(grpc_channel_element* elem, - grpc_channel_element_args* args); + grpc_error_handle (*init_channel_elem)(grpc_channel_element* elem, + grpc_channel_element_args* args); /* Destroy per channel data. The filter does not need to do any chaining */ void (*destroy_channel_elem)(grpc_channel_element* elem); @@ -218,7 +218,7 @@ grpc_call_element* grpc_call_stack_element(grpc_call_stack* stack, size_t i); size_t grpc_channel_stack_size(const grpc_channel_filter** filters, size_t filter_count); /* Initialize a channel stack given some filters */ -grpc_error* grpc_channel_stack_init( +grpc_error_handle grpc_channel_stack_init( int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg, const grpc_channel_filter** filters, size_t filter_count, const grpc_channel_args* args, grpc_transport* optional_transport, @@ -229,10 +229,11 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack); /* Initialize a call stack given a channel stack. transport_server_data is expected to be NULL on a client, or an opaque transport owned pointer on the server. */ -grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack, - int initial_refs, grpc_iomgr_cb_func destroy, - void* destroy_arg, - const grpc_call_element_args* elem_args); +grpc_error_handle grpc_call_stack_init(grpc_channel_stack* channel_stack, + int initial_refs, + grpc_iomgr_cb_func destroy, + void* destroy_arg, + const grpc_call_element_args* elem_args); /* Set a pollset or a pollset_set for a call stack: must occur before the first * op is started */ void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack* call_stack, diff --git a/src/core/lib/channel/channel_stack_builder.cc b/src/core/lib/channel/channel_stack_builder.cc index 8b3008f2217..7f7cf75328b 100644 --- a/src/core/lib/channel/channel_stack_builder.cc +++ b/src/core/lib/channel/channel_stack_builder.cc @@ -267,7 +267,7 @@ void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder* builder) { gpr_free(builder); } -grpc_error* grpc_channel_stack_builder_finish( +grpc_error_handle grpc_channel_stack_builder_finish( grpc_channel_stack_builder* builder, size_t prefix_bytes, int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg, void** result) { // count the number of filters @@ -294,7 +294,7 @@ grpc_error* grpc_channel_stack_builder_finish( grpc_channel_stack* channel_stack = reinterpret_cast( static_cast(*result) + prefix_bytes); // and initialize it - grpc_error* error = grpc_channel_stack_init( + grpc_error_handle error = grpc_channel_stack_init( initial_refs, destroy, destroy_arg == nullptr ? *result : destroy_arg, filters, num_filters, builder->args, builder->transport, builder->name, channel_stack); diff --git a/src/core/lib/channel/channel_stack_builder.h b/src/core/lib/channel/channel_stack_builder.h index 89c30e0c5ea..6782a1484cd 100644 --- a/src/core/lib/channel/channel_stack_builder.h +++ b/src/core/lib/channel/channel_stack_builder.h @@ -156,7 +156,7 @@ void grpc_channel_stack_builder_iterator_destroy( /// Returns the base pointer of the allocated block /// \a initial_refs, \a destroy, \a destroy_arg are as per /// grpc_channel_stack_init -grpc_error* grpc_channel_stack_builder_finish( +grpc_error_handle grpc_channel_stack_builder_finish( grpc_channel_stack_builder* builder, size_t prefix_bytes, int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg, void** result); diff --git a/src/core/lib/channel/channelz.cc b/src/core/lib/channel/channelz.cc index fded1bdefeb..9b3ae866ce8 100644 --- a/src/core/lib/channel/channelz.cc +++ b/src/core/lib/channel/channelz.cc @@ -437,7 +437,7 @@ void PopulateSocketAddressJson(Json::Object* json, const char* name, port_num = atoi(port.data()); } grpc_resolved_address resolved_host; - grpc_error* error = + grpc_error_handle error = grpc_string_to_sockaddr(&resolved_host, host.c_str(), port_num); if (error == GRPC_ERROR_NONE) { std::string packed_host = grpc_sockaddr_get_packed_host(&resolved_host); diff --git a/src/core/lib/channel/connected_channel.cc b/src/core/lib/channel/connected_channel.cc index be74d9e88bb..12b3d786097 100644 --- a/src/core/lib/channel/connected_channel.cc +++ b/src/core/lib/channel/connected_channel.cc @@ -53,13 +53,13 @@ typedef struct connected_channel_call_data { callback_state recv_trailing_metadata_ready; } call_data; -static void run_in_call_combiner(void* arg, grpc_error* error) { +static void run_in_call_combiner(void* arg, grpc_error_handle error) { callback_state* state = static_cast(arg); GRPC_CALL_COMBINER_START(state->call_combiner, state->original_closure, GRPC_ERROR_REF(error), state->reason); } -static void run_cancel_in_call_combiner(void* arg, grpc_error* error) { +static void run_cancel_in_call_combiner(void* arg, grpc_error_handle error) { run_in_call_combiner(arg, error); gpr_free(arg); } @@ -146,7 +146,7 @@ static void connected_channel_start_transport_op(grpc_channel_element* elem, } /* Constructor for call_data */ -static grpc_error* connected_channel_init_call_elem( +static grpc_error_handle connected_channel_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { call_data* calld = static_cast(elem->call_data); channel_data* chand = static_cast(elem->channel_data); @@ -179,7 +179,7 @@ static void connected_channel_destroy_call_elem( } /* Constructor for channel_data */ -static grpc_error* connected_channel_init_channel_elem( +static grpc_error_handle connected_channel_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* cd = static_cast(elem->channel_data); GPR_ASSERT(args->is_last); diff --git a/src/core/lib/channel/handshaker.cc b/src/core/lib/channel/handshaker.cc index e3ba3fcc55a..e3b579a26e9 100644 --- a/src/core/lib/channel/handshaker.cc +++ b/src/core/lib/channel/handshaker.cc @@ -68,7 +68,7 @@ void HandshakeManager::Add(RefCountedPtr handshaker) { HandshakeManager::~HandshakeManager() { handshakers_.clear(); } -void HandshakeManager::Shutdown(grpc_error* why) { +void HandshakeManager::Shutdown(grpc_error_handle why) { { MutexLock lock(&mu_); // Shutdown the handshaker that's currently in progress, if any. @@ -83,7 +83,7 @@ void HandshakeManager::Shutdown(grpc_error* why) { // Helper function to call either the next handshaker or the // on_handshake_done callback. // Returns true if we've scheduled the on_handshake_done callback. -bool HandshakeManager::CallNextHandshakerLocked(grpc_error* error) { +bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) { gpr_log(GPR_INFO, "handshake_manager %p: error=%s shutdown=%d index=%" PRIuPTR @@ -142,7 +142,8 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error* error) { return is_shutdown_; } -void HandshakeManager::CallNextHandshakerFn(void* arg, grpc_error* error) { +void HandshakeManager::CallNextHandshakerFn(void* arg, + grpc_error_handle error) { auto* mgr = static_cast(arg); bool done; { @@ -157,7 +158,7 @@ void HandshakeManager::CallNextHandshakerFn(void* arg, grpc_error* error) { } } -void HandshakeManager::OnTimeoutFn(void* arg, grpc_error* error) { +void HandshakeManager::OnTimeoutFn(void* arg, grpc_error_handle error) { auto* mgr = static_cast(arg); if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled mgr->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out")); diff --git a/src/core/lib/channel/handshaker.h b/src/core/lib/channel/handshaker.h index 942b5fed4dd..b6b69da57d9 100644 --- a/src/core/lib/channel/handshaker.h +++ b/src/core/lib/channel/handshaker.h @@ -78,7 +78,7 @@ struct HandshakerArgs { class Handshaker : public RefCounted { public: ~Handshaker() override = default; - virtual void Shutdown(grpc_error* why) = 0; + virtual void Shutdown(grpc_error_handle why) = 0; virtual void DoHandshake(grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, HandshakerArgs* args) = 0; @@ -100,7 +100,7 @@ class HandshakeManager : public RefCounted { /// Shuts down the handshake manager (e.g., to clean up when the operation is /// aborted in the middle). - void Shutdown(grpc_error* why); + void Shutdown(grpc_error_handle why); /// Invokes handshakers in the order they were added. /// Takes ownership of \a endpoint, and then passes that ownership to @@ -120,14 +120,14 @@ class HandshakeManager : public RefCounted { grpc_iomgr_cb_func on_handshake_done, void* user_data); private: - bool CallNextHandshakerLocked(grpc_error* error); + bool CallNextHandshakerLocked(grpc_error_handle error); // A function used as the handshaker-done callback when chaining // handshakers together. - static void CallNextHandshakerFn(void* arg, grpc_error* error); + static void CallNextHandshakerFn(void* arg, grpc_error_handle error); // Callback invoked when deadline is exceeded. - static void OnTimeoutFn(void* arg, grpc_error* error); + static void OnTimeoutFn(void* arg, grpc_error_handle error); static const size_t HANDSHAKERS_INIT_SIZE = 2; diff --git a/src/core/lib/http/httpcli.cc b/src/core/lib/http/httpcli.cc index 8d024dd3ac5..b49697e2a53 100644 --- a/src/core/lib/http/httpcli.cc +++ b/src/core/lib/http/httpcli.cc @@ -62,7 +62,7 @@ struct internal_request { grpc_closure on_read; grpc_closure done_write; grpc_closure connected; - grpc_error* overall_error; + grpc_error_handle overall_error; grpc_resource_quota* resource_quota; }; static grpc_httpcli_get_override g_get_override = nullptr; @@ -86,9 +86,9 @@ void grpc_httpcli_context_destroy(grpc_httpcli_context* context) { grpc_pollset_set_destroy(context->pollset_set); } -static void next_address(internal_request* req, grpc_error* due_to_error); +static void next_address(internal_request* req, grpc_error_handle due_to_error); -static void finish(internal_request* req, grpc_error* error) { +static void finish(internal_request* req, grpc_error_handle error) { grpc_polling_entity_del_from_pollset_set(req->pollent, req->context->pollset_set); grpc_core::ExecCtx::Run(DEBUG_LOCATION, req->on_done, error); @@ -110,7 +110,7 @@ static void finish(internal_request* req, grpc_error* error) { gpr_free(req); } -static void append_error(internal_request* req, grpc_error* error) { +static void append_error(internal_request* req, grpc_error_handle error) { if (req->overall_error == GRPC_ERROR_NONE) { req->overall_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request"); @@ -127,14 +127,14 @@ static void do_read(internal_request* req) { grpc_endpoint_read(req->ep, &req->incoming, &req->on_read, /*urgent=*/true); } -static void on_read(void* user_data, grpc_error* error) { +static void on_read(void* user_data, grpc_error_handle error) { internal_request* req = static_cast(user_data); size_t i; for (i = 0; i < req->incoming.count; i++) { if (GRPC_SLICE_LENGTH(req->incoming.slices[i])) { req->have_read_byte = 1; - grpc_error* err = grpc_http_parser_parse( + grpc_error_handle err = grpc_http_parser_parse( &req->parser, req->incoming.slices[i], nullptr); if (err != GRPC_ERROR_NONE) { finish(req, err); @@ -154,7 +154,7 @@ static void on_read(void* user_data, grpc_error* error) { static void on_written(internal_request* req) { do_read(req); } -static void done_write(void* arg, grpc_error* error) { +static void done_write(void* arg, grpc_error_handle error) { internal_request* req = static_cast(arg); if (error == GRPC_ERROR_NONE) { on_written(req); @@ -182,7 +182,7 @@ static void on_handshake_done(void* arg, grpc_endpoint* ep) { start_write(req); } -static void on_connected(void* arg, grpc_error* error) { +static void on_connected(void* arg, grpc_error_handle error) { internal_request* req = static_cast(arg); if (!req->ep) { @@ -194,7 +194,7 @@ static void on_connected(void* arg, grpc_error* error) { req->deadline, on_handshake_done); } -static void next_address(internal_request* req, grpc_error* error) { +static void next_address(internal_request* req, grpc_error_handle error) { grpc_resolved_address* addr; if (error != GRPC_ERROR_NONE) { append_error(req, error); @@ -216,7 +216,7 @@ static void next_address(internal_request* req, grpc_error* error) { &args, addr, req->deadline); } -static void on_resolved(void* arg, grpc_error* error) { +static void on_resolved(void* arg, grpc_error_handle error) { internal_request* req = static_cast(arg); if (error != GRPC_ERROR_NONE) { finish(req, GRPC_ERROR_REF(error)); diff --git a/src/core/lib/http/httpcli_security_connector.cc b/src/core/lib/http/httpcli_security_connector.cc index 3475b7ebd57..75db9c789aa 100644 --- a/src/core/lib/http/httpcli_security_connector.cc +++ b/src/core/lib/http/httpcli_security_connector.cc @@ -91,7 +91,7 @@ class grpc_httpcli_ssl_channel_security_connector final void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/, grpc_core::RefCountedPtr* /*auth_context*/, grpc_closure* on_peer_checked) override { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* Check the peer name. */ if (secure_peer_name_ != nullptr && @@ -106,7 +106,7 @@ class grpc_httpcli_ssl_channel_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -120,13 +120,13 @@ class grpc_httpcli_ssl_channel_security_connector final bool check_call_host(absl::string_view /*host*/, grpc_auth_context* /*auth_context*/, grpc_closure* /*on_call_host_checked*/, - grpc_error** error) override { + grpc_error_handle* error) override { *error = GRPC_ERROR_NONE; return true; } void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -165,7 +165,7 @@ struct on_done_closure { void* arg; grpc_core::RefCountedPtr handshake_mgr; }; -static void on_handshake_done(void* arg, grpc_error* error) { +static void on_handshake_done(void* arg, grpc_error_handle error) { auto* args = static_cast(arg); on_done_closure* c = static_cast(args->user_data); if (error != GRPC_ERROR_NONE) { diff --git a/src/core/lib/http/parser.cc b/src/core/lib/http/parser.cc index 3a0b2be4a85..c47a0177d28 100644 --- a/src/core/lib/http/parser.cc +++ b/src/core/lib/http/parser.cc @@ -37,7 +37,7 @@ static char* buf2str(void* buffer, size_t length) { return out; } -static grpc_error* handle_response_line(grpc_http_parser* parser) { +static grpc_error_handle handle_response_line(grpc_http_parser* parser) { uint8_t* beg = parser->cur_line; uint8_t* cur = beg; uint8_t* end = beg + parser->cur_line_length; @@ -90,7 +90,7 @@ static grpc_error* handle_response_line(grpc_http_parser* parser) { return GRPC_ERROR_NONE; } -static grpc_error* handle_request_line(grpc_http_parser* parser) { +static grpc_error_handle handle_request_line(grpc_http_parser* parser) { uint8_t* beg = parser->cur_line; uint8_t* cur = beg; uint8_t* end = beg + parser->cur_line_length; @@ -161,7 +161,7 @@ static grpc_error* handle_request_line(grpc_http_parser* parser) { return GRPC_ERROR_NONE; } -static grpc_error* handle_first_line(grpc_http_parser* parser) { +static grpc_error_handle handle_first_line(grpc_http_parser* parser) { switch (parser->type) { case GRPC_HTTP_REQUEST: return handle_request_line(parser); @@ -172,14 +172,14 @@ static grpc_error* handle_first_line(grpc_http_parser* parser) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here")); } -static grpc_error* add_header(grpc_http_parser* parser) { +static grpc_error_handle add_header(grpc_http_parser* parser) { uint8_t* beg = parser->cur_line; uint8_t* cur = beg; uint8_t* end = beg + parser->cur_line_length; size_t* hdr_count = nullptr; grpc_http_header** hdrs = nullptr; grpc_http_header hdr = {nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; GPR_ASSERT(cur != end); @@ -235,9 +235,9 @@ done: return error; } -static grpc_error* finish_line(grpc_http_parser* parser, - bool* found_body_start) { - grpc_error* err; +static grpc_error_handle finish_line(grpc_http_parser* parser, + bool* found_body_start) { + grpc_error_handle err; switch (parser->state) { case GRPC_HTTP_FIRST_LINE: err = handle_first_line(parser); @@ -264,7 +264,7 @@ static grpc_error* finish_line(grpc_http_parser* parser, return GRPC_ERROR_NONE; } -static grpc_error* addbyte_body(grpc_http_parser* parser, uint8_t byte) { +static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) { size_t* body_length = nullptr; char** body = nullptr; @@ -313,8 +313,8 @@ static bool check_line(grpc_http_parser* parser) { return false; } -static grpc_error* addbyte(grpc_http_parser* parser, uint8_t byte, - bool* found_body_start) { +static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte, + bool* found_body_start) { switch (parser->state) { case GRPC_HTTP_FIRST_LINE: case GRPC_HTTP_HEADERS: @@ -371,12 +371,12 @@ void grpc_http_response_destroy(grpc_http_response* response) { gpr_free(response->hdrs); } -grpc_error* grpc_http_parser_parse(grpc_http_parser* parser, - const grpc_slice& slice, - size_t* start_of_body) { +grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser, + const grpc_slice& slice, + size_t* start_of_body) { for (size_t i = 0; i < GRPC_SLICE_LENGTH(slice); i++) { bool found_body_start = false; - grpc_error* err = + grpc_error_handle err = addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start); if (err != GRPC_ERROR_NONE) return err; if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1; @@ -384,7 +384,7 @@ grpc_error* grpc_http_parser_parse(grpc_http_parser* parser, return GRPC_ERROR_NONE; } -grpc_error* grpc_http_parser_eof(grpc_http_parser* parser) { +grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) { if (parser->state != GRPC_HTTP_BODY) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers"); } diff --git a/src/core/lib/http/parser.h b/src/core/lib/http/parser.h index 2da21903e63..613b9726118 100644 --- a/src/core/lib/http/parser.h +++ b/src/core/lib/http/parser.h @@ -100,10 +100,10 @@ void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type, void grpc_http_parser_destroy(grpc_http_parser* parser); /* Sets \a start_of_body to the offset in \a slice of the start of the body. */ -grpc_error* grpc_http_parser_parse(grpc_http_parser* parser, - const grpc_slice& slice, - size_t* start_of_body); -grpc_error* grpc_http_parser_eof(grpc_http_parser* parser); +grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser, + const grpc_slice& slice, + size_t* start_of_body); +grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser); void grpc_http_request_destroy(grpc_http_request* request); void grpc_http_response_destroy(grpc_http_response* response); diff --git a/src/core/lib/iomgr/buffer_list.cc b/src/core/lib/iomgr/buffer_list.cc index e1b87da4d0c..f92fc9b18c2 100644 --- a/src/core/lib/iomgr/buffer_list.cc +++ b/src/core/lib/iomgr/buffer_list.cc @@ -40,14 +40,14 @@ void fill_gpr_from_timestamp(gpr_timespec* gts, const struct timespec* ts) { } void default_timestamps_callback(void* /*arg*/, grpc_core::Timestamps* /*ts*/, - grpc_error* /*shudown_err*/) { + grpc_error_handle /*shudown_err*/) { gpr_log(GPR_DEBUG, "Timestamps callback has not been registered"); } /** The saved callback function that will be invoked when we get all the * timestamps that we are going to get for a TracedBuffer. */ void (*timestamps_callback)(void*, grpc_core::Timestamps*, - grpc_error* shutdown_err) = + grpc_error_handle shutdown_err) = default_timestamps_callback; /* Used to extract individual opt stats from cmsg, so as to avoid troubles with @@ -268,7 +268,7 @@ void TracedBuffer::ProcessTimestamp(TracedBuffer** head, } void TracedBuffer::Shutdown(TracedBuffer** head, void* remaining, - grpc_error* shutdown_err) { + grpc_error_handle shutdown_err) { GPR_DEBUG_ASSERT(head != nullptr); TracedBuffer* elem = *head; while (elem != nullptr) { @@ -284,9 +284,8 @@ void TracedBuffer::Shutdown(TracedBuffer** head, void* remaining, GRPC_ERROR_UNREF(shutdown_err); } -void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*, - grpc_core::Timestamps*, - grpc_error* error)) { +void grpc_tcp_set_write_timestamps_callback( + void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)) { timestamps_callback = fn; } } /* namespace grpc_core */ @@ -294,9 +293,8 @@ void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*, #else /* GRPC_LINUX_ERRQUEUE */ namespace grpc_core { -void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*, - grpc_core::Timestamps*, - grpc_error* error)) { +void grpc_tcp_set_write_timestamps_callback( + void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)) { // Cast value of fn to void to avoid unused parameter warning. // Can't comment out the name because some compilers and formatters don't // like the sequence */* , which would arise from */*fn*/. diff --git a/src/core/lib/iomgr/buffer_list.h b/src/core/lib/iomgr/buffer_list.h index f8faf7cb087..982c4c6b67f 100644 --- a/src/core/lib/iomgr/buffer_list.h +++ b/src/core/lib/iomgr/buffer_list.h @@ -135,7 +135,7 @@ class TracedBuffer { /** Cleans the list by calling the callback for each traced buffer in the list * with timestamps that it has. */ static void Shutdown(grpc_core::TracedBuffer** head, void* remaining, - grpc_error* shutdown_err); + grpc_error_handle shutdown_err); private: uint32_t seq_no_; /* The sequence number for the last byte in the buffer */ @@ -148,7 +148,7 @@ class TracedBuffer { public: /* Phony shutdown function */ static void Shutdown(grpc_core::TracedBuffer** /*head*/, void* /*remaining*/, - grpc_error* shutdown_err) { + grpc_error_handle shutdown_err) { GRPC_ERROR_UNREF(shutdown_err); } }; @@ -156,9 +156,8 @@ class TracedBuffer { /** Sets the callback function to call when timestamps for a write are * collected. The callback does not own a reference to error. */ -void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*, - grpc_core::Timestamps*, - grpc_error* error)); +void grpc_tcp_set_write_timestamps_callback( + void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)); } /* namespace grpc_core */ diff --git a/src/core/lib/iomgr/call_combiner.cc b/src/core/lib/iomgr/call_combiner.cc index 043b3bb4032..8e6a3405079 100644 --- a/src/core/lib/iomgr/call_combiner.cc +++ b/src/core/lib/iomgr/call_combiner.cc @@ -32,15 +32,15 @@ DebugOnlyTraceFlag grpc_call_combiner_trace(false, "call_combiner"); namespace { -grpc_error* DecodeCancelStateError(gpr_atm cancel_state) { +grpc_error_handle DecodeCancelStateError(gpr_atm cancel_state) { if (cancel_state & 1) { - return reinterpret_cast(cancel_state & - ~static_cast(1)); + return reinterpret_cast(cancel_state & + ~static_cast(1)); } return GRPC_ERROR_NONE; } -gpr_atm EncodeCancelStateError(grpc_error* error) { +gpr_atm EncodeCancelStateError(grpc_error_handle error) { return static_cast(1) | reinterpret_cast(error); } @@ -60,7 +60,7 @@ CallCombiner::~CallCombiner() { } #ifdef GRPC_TSAN_ENABLED -void CallCombiner::TsanClosure(void* arg, grpc_error* error) { +void CallCombiner::TsanClosure(void* arg, grpc_error_handle error) { CallCombiner* self = static_cast(arg); // We ref-count the lock, and check if it's already taken. // If it was taken, we should do nothing. Otherwise, we will mark it as @@ -91,7 +91,8 @@ void CallCombiner::TsanClosure(void* arg, grpc_error* error) { } #endif -void CallCombiner::ScheduleClosure(grpc_closure* closure, grpc_error* error) { +void CallCombiner::ScheduleClosure(grpc_closure* closure, + grpc_error_handle error) { #ifdef GRPC_TSAN_ENABLED original_closure_ = closure; ExecCtx::Run(DEBUG_LOCATION, &tsan_closure_, error); @@ -110,7 +111,7 @@ void CallCombiner::ScheduleClosure(grpc_closure* closure, grpc_error* error) { #define DEBUG_FMT_ARGS #endif -void CallCombiner::Start(grpc_closure* closure, grpc_error* error, +void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error, DEBUG_ARGS const char* reason) { GPR_TIMER_SCOPE("CallCombiner::Start", 0); if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { @@ -191,7 +192,7 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) { while (true) { // Decode original state. gpr_atm original_state = gpr_atm_acq_load(&cancel_state_); - grpc_error* original_error = DecodeCancelStateError(original_state); + grpc_error_handle original_error = DecodeCancelStateError(original_state); // If error is set, invoke the cancellation closure immediately. // Otherwise, store the new closure. if (original_error != GRPC_ERROR_NONE) { @@ -229,11 +230,11 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) { } } -void CallCombiner::Cancel(grpc_error* error) { +void CallCombiner::Cancel(grpc_error_handle error) { GRPC_STATS_INC_CALL_COMBINER_CANCELLED(); while (true) { gpr_atm original_state = gpr_atm_acq_load(&cancel_state_); - grpc_error* original_error = DecodeCancelStateError(original_state); + grpc_error_handle original_error = DecodeCancelStateError(original_state); if (original_error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(error); break; diff --git a/src/core/lib/iomgr/call_combiner.h b/src/core/lib/iomgr/call_combiner.h index 5d2b00cac13..1d4118d8d82 100644 --- a/src/core/lib/iomgr/call_combiner.h +++ b/src/core/lib/iomgr/call_combiner.h @@ -58,7 +58,7 @@ class CallCombiner { #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \ (call_combiner)->Stop(__FILE__, __LINE__, (reason)) /// Starts processing \a closure. - void Start(grpc_closure* closure, grpc_error* error, const char* file, + void Start(grpc_closure* closure, grpc_error_handle error, const char* file, int line, const char* reason); /// Yields the call combiner to the next closure in the queue, if any. void Stop(const char* file, int line, const char* reason); @@ -68,7 +68,8 @@ class CallCombiner { #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \ (call_combiner)->Stop((reason)) /// Starts processing \a closure. - void Start(grpc_closure* closure, grpc_error* error, const char* reason); + void Start(grpc_closure* closure, grpc_error_handle error, + const char* reason); /// Yields the call combiner to the next closure in the queue, if any. void Stop(const char* reason); #endif @@ -97,19 +98,19 @@ class CallCombiner { void SetNotifyOnCancel(grpc_closure* closure); /// Indicates that the call has been cancelled. - void Cancel(grpc_error* error); + void Cancel(grpc_error_handle error); private: - void ScheduleClosure(grpc_closure* closure, grpc_error* error); + void ScheduleClosure(grpc_closure* closure, grpc_error_handle error); #ifdef GRPC_TSAN_ENABLED - static void TsanClosure(void* arg, grpc_error* error); + static void TsanClosure(void* arg, grpc_error_handle error); #endif gpr_atm size_ = 0; // size_t, num closures in queue or currently executing MultiProducerSingleConsumerQueue queue_; // Either 0 (if not cancelled and no cancellation closure set), // a grpc_closure* (if the lowest bit is 0), - // or a grpc_error* (if the lowest bit is 1). + // or a grpc_error_handle (if the lowest bit is 1). gpr_atm cancel_state_ = 0; #ifdef GRPC_TSAN_ENABLED // A fake ref-counted lock that is kept alive after the destruction of @@ -146,7 +147,7 @@ class CallCombinerClosureList { // Adds a closure to the list. The closure must eventually result in // the call combiner being yielded. - void Add(grpc_closure* closure, grpc_error* error, const char* reason) { + void Add(grpc_closure* closure, grpc_error_handle error, const char* reason) { closures_.emplace_back(closure, error, reason); } @@ -195,10 +196,10 @@ class CallCombinerClosureList { private: struct CallCombinerClosure { grpc_closure* closure; - grpc_error* error; + grpc_error_handle error; const char* reason; - CallCombinerClosure(grpc_closure* closure, grpc_error* error, + CallCombinerClosure(grpc_closure* closure, grpc_error_handle error, const char* reason) : closure(closure), error(error), reason(reason) {} }; diff --git a/src/core/lib/iomgr/cfstream_handle.cc b/src/core/lib/iomgr/cfstream_handle.cc index 2f70a2995be..fb112316e30 100644 --- a/src/core/lib/iomgr/cfstream_handle.cc +++ b/src/core/lib/iomgr/cfstream_handle.cc @@ -62,7 +62,7 @@ void CFStreamHandle::ReadCallback(CFReadStreamRef stream, void* client_callback_info) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; - grpc_error* error; + grpc_error_handle error; CFErrorRef stream_error; CFStreamHandle* handle = static_cast(client_callback_info); if (grpc_tcp_trace.enabled()) { @@ -97,7 +97,7 @@ void CFStreamHandle::WriteCallback(CFWriteStreamRef stream, void* clientCallBackInfo) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; - grpc_error* error; + grpc_error_handle error; CFErrorRef stream_error; CFStreamHandle* handle = static_cast(clientCallBackInfo); if (grpc_tcp_trace.enabled()) { @@ -171,7 +171,7 @@ void CFStreamHandle::NotifyOnWrite(grpc_closure* closure) { write_event_.NotifyOn(closure); } -void CFStreamHandle::Shutdown(grpc_error* error) { +void CFStreamHandle::Shutdown(grpc_error_handle error) { open_event_.SetShutdown(GRPC_ERROR_REF(error)); read_event_.SetShutdown(GRPC_ERROR_REF(error)); write_event_.SetShutdown(GRPC_ERROR_REF(error)); diff --git a/src/core/lib/iomgr/cfstream_handle.h b/src/core/lib/iomgr/cfstream_handle.h index b0f0664a04f..2358758f147 100644 --- a/src/core/lib/iomgr/cfstream_handle.h +++ b/src/core/lib/iomgr/cfstream_handle.h @@ -53,7 +53,7 @@ class CFStreamHandle : public GrpcLibraryInitHolder { void NotifyOnOpen(grpc_closure* closure); void NotifyOnRead(grpc_closure* closure); void NotifyOnWrite(grpc_closure* closure); - void Shutdown(grpc_error* error); + void Shutdown(grpc_error_handle error); void Ref(const char* file = "", int line = 0, const char* reason = nullptr); void Unref(const char* file = "", int line = 0, const char* reason = nullptr); diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h index 6bb65340d1a..b429c9e3ebd 100644 --- a/src/core/lib/iomgr/closure.h +++ b/src/core/lib/iomgr/closure.h @@ -50,7 +50,7 @@ typedef struct grpc_closure_list { * describing what went wrong. * Error contract: it is not the cb's job to unref this error; * the closure scheduler will do that after the cb returns */ -typedef void (*grpc_iomgr_cb_func)(void* arg, grpc_error* error); +typedef void (*grpc_iomgr_cb_func)(void* arg, grpc_error_handle error); /** A closure over a grpc_iomgr_cb_func. */ struct grpc_closure { @@ -72,7 +72,7 @@ struct grpc_closure { /** Once queued, the result of the closure. Before then: scratch space */ union { - grpc_error* error; + grpc_error_handle error; uintptr_t scratch; } error_data; @@ -126,7 +126,7 @@ struct wrapped_closure { void* cb_arg; grpc_closure wrapper; }; -inline void closure_wrapper(void* arg, grpc_error* error) { +inline void closure_wrapper(void* arg, grpc_error_handle error) { wrapped_closure* wc = static_cast(arg); grpc_iomgr_cb_func cb = wc->cb; void* cb_arg = wc->cb_arg; @@ -175,7 +175,8 @@ inline void grpc_closure_list_init(grpc_closure_list* closure_list) { and set \a closure's result to \a error Returns true if \a list becomes non-empty */ inline bool grpc_closure_list_append(grpc_closure_list* closure_list, - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, + grpc_error_handle error) { if (closure == nullptr) { GRPC_ERROR_UNREF(error); return false; @@ -194,7 +195,7 @@ inline bool grpc_closure_list_append(grpc_closure_list* closure_list, /** force all success bits in \a list to false */ inline void grpc_closure_list_fail_all(grpc_closure_list* list, - grpc_error* forced_failure) { + grpc_error_handle forced_failure) { for (grpc_closure* c = list->head; c != nullptr; c = c->next_data.next) { if (c->error_data.error == GRPC_ERROR_NONE) { c->error_data.error = GRPC_ERROR_REF(forced_failure); @@ -227,7 +228,7 @@ namespace grpc_core { class Closure { public: static void Run(const DebugLocation& location, grpc_closure* closure, - grpc_error* error) { + grpc_error_handle error) { (void)location; if (closure == nullptr) { GRPC_ERROR_UNREF(error); diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index aa5a2ea44f4..48237e5a102 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -46,11 +46,12 @@ grpc_core::DebugOnlyTraceFlag grpc_combiner_trace(false, "combiner"); #define STATE_ELEM_COUNT_LOW_BIT 2 static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); static void combiner_finally_exec(grpc_core::Combiner* lock, - grpc_closure* closure, grpc_error* error); + grpc_closure* closure, + grpc_error_handle error); -static void offload(void* arg, grpc_error* error); +static void offload(void* arg, grpc_error_handle error); grpc_core::Combiner* grpc_combiner_create(void) { grpc_core::Combiner* lock = new grpc_core::Combiner(); @@ -126,7 +127,7 @@ static void push_first_on_exec_ctx(grpc_core::Combiner* lock) { } static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl, - grpc_error* error) { + grpc_error_handle error) { GPR_TIMER_SCOPE("combiner.execute", 0); GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS(); gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT); @@ -167,7 +168,7 @@ static void move_next() { } } -static void offload(void* arg, grpc_error* /*error*/) { +static void offload(void* arg, grpc_error_handle /*error*/) { grpc_core::Combiner* lock = static_cast(arg); push_last_on_exec_ctx(lock); } @@ -230,7 +231,7 @@ bool grpc_combiner_continue_exec_ctx() { } GPR_TIMER_SCOPE("combiner.exec1", 0); grpc_closure* cl = reinterpret_cast(n); - grpc_error* cl_err = cl->error_data.error; + grpc_error_handle cl_err = cl->error_data.error; #ifndef NDEBUG cl->scheduled = false; #endif @@ -246,7 +247,7 @@ bool grpc_combiner_continue_exec_ctx() { GRPC_COMBINER_TRACE( gpr_log(GPR_INFO, "C:%p execute_final[%d] c=%p", lock, loops, c)); grpc_closure* next = c->next_data.next; - grpc_error* error = c->error_data.error; + grpc_error_handle error = c->error_data.error; #ifndef NDEBUG c->scheduled = false; #endif @@ -297,10 +298,11 @@ bool grpc_combiner_continue_exec_ctx() { return true; } -static void enqueue_finally(void* closure, grpc_error* error); +static void enqueue_finally(void* closure, grpc_error_handle error); static void combiner_finally_exec(grpc_core::Combiner* lock, - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, + grpc_error_handle error) { GPR_ASSERT(lock != nullptr); GPR_TIMER_SCOPE("combiner.execute_finally", 0); GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(); @@ -322,7 +324,7 @@ static void combiner_finally_exec(grpc_core::Combiner* lock, grpc_closure_list_append(&lock->final_list, closure, error); } -static void enqueue_finally(void* closure, grpc_error* error) { +static void enqueue_finally(void* closure, grpc_error_handle error) { grpc_closure* cl = static_cast(closure); combiner_finally_exec( reinterpret_cast(cl->error_data.scratch), cl, @@ -330,11 +332,11 @@ static void enqueue_finally(void* closure, grpc_error* error) { } namespace grpc_core { -void Combiner::Run(grpc_closure* closure, grpc_error* error) { +void Combiner::Run(grpc_closure* closure, grpc_error_handle error) { combiner_exec(this, closure, error); } -void Combiner::FinallyRun(grpc_closure* closure, grpc_error* error) { +void Combiner::FinallyRun(grpc_closure* closure, grpc_error_handle error) { combiner_finally_exec(this, closure, error); } } // namespace grpc_core diff --git a/src/core/lib/iomgr/combiner.h b/src/core/lib/iomgr/combiner.h index 32712066bef..efa2bce6823 100644 --- a/src/core/lib/iomgr/combiner.h +++ b/src/core/lib/iomgr/combiner.h @@ -32,9 +32,9 @@ namespace grpc_core { // use ExecCtx class Combiner { public: - void Run(grpc_closure* closure, grpc_error* error); + void Run(grpc_closure* closure, grpc_error_handle error); // TODO(yashkt) : Remove this method - void FinallyRun(grpc_closure* closure, grpc_error* error); + void FinallyRun(grpc_closure* closure, grpc_error_handle error); Combiner* next_combiner_on_this_exec_ctx = nullptr; MultiProducerSingleConsumerQueue queue; // either: diff --git a/src/core/lib/iomgr/endpoint.cc b/src/core/lib/iomgr/endpoint.cc index 8954f9dc066..4c84501a822 100644 --- a/src/core/lib/iomgr/endpoint.cc +++ b/src/core/lib/iomgr/endpoint.cc @@ -46,7 +46,7 @@ void grpc_endpoint_delete_from_pollset_set(grpc_endpoint* ep, ep->vtable->delete_from_pollset_set(ep, pollset_set); } -void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) { +void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) { ep->vtable->shutdown(ep, why); } diff --git a/src/core/lib/iomgr/endpoint.h b/src/core/lib/iomgr/endpoint.h index b6e6086f14f..4db5e3def24 100644 --- a/src/core/lib/iomgr/endpoint.h +++ b/src/core/lib/iomgr/endpoint.h @@ -44,7 +44,7 @@ struct grpc_endpoint_vtable { void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset); void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset); void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset); - void (*shutdown)(grpc_endpoint* ep, grpc_error* why); + void (*shutdown)(grpc_endpoint* ep, grpc_error_handle why); void (*destroy)(grpc_endpoint* ep); grpc_resource_user* (*get_resource_user)(grpc_endpoint* ep); absl::string_view (*get_peer)(grpc_endpoint* ep); @@ -86,7 +86,7 @@ void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices, /* Causes any pending and future read/write callbacks to run immediately with success==0 */ -void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why); +void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why); void grpc_endpoint_destroy(grpc_endpoint* ep); /* Add an endpoint to a pollset or pollset_set, so that when the pollset is diff --git a/src/core/lib/iomgr/endpoint_cfstream.cc b/src/core/lib/iomgr/endpoint_cfstream.cc index 75cd0f09d1a..8026ff5ee5c 100644 --- a/src/core/lib/iomgr/endpoint_cfstream.cc +++ b/src/core/lib/iomgr/endpoint_cfstream.cc @@ -106,8 +106,8 @@ static void CFStreamUnref(CFStreamEndpoint* ep) { static void CFStreamRef(CFStreamEndpoint* ep) { gpr_ref(&ep->refcount); } #endif -static grpc_error* CFStreamAnnotateError(grpc_error* src_error, - CFStreamEndpoint* ep) { +static grpc_error_handle CFStreamAnnotateError(grpc_error_handle src_error, + CFStreamEndpoint* ep) { return grpc_error_set_str( grpc_error_set_int(src_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE), @@ -115,7 +115,7 @@ static grpc_error* CFStreamAnnotateError(grpc_error* src_error, grpc_slice_from_copied_string(ep->peer_string.c_str())); } -static void CallReadCb(CFStreamEndpoint* ep, grpc_error* error) { +static void CallReadCb(CFStreamEndpoint* ep, grpc_error_handle error) { if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "CFStream endpoint:%p call_read_cb %p %p:%p", ep, ep->read_cb, ep->read_cb->cb, ep->read_cb->cb_arg); @@ -137,7 +137,7 @@ static void CallReadCb(CFStreamEndpoint* ep, grpc_error* error) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error); } -static void CallWriteCb(CFStreamEndpoint* ep, grpc_error* error) { +static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) { if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "CFStream endpoint:%p call_write_cb %p %p:%p", ep, ep->write_cb, ep->write_cb->cb, ep->write_cb->cb_arg); @@ -150,7 +150,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error* error) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error); } -static void ReadAction(void* arg, grpc_error* error) { +static void ReadAction(void* arg, grpc_error_handle error) { CFStreamEndpoint* ep = static_cast(arg); GPR_ASSERT(ep->read_cb != nullptr); if (error) { @@ -192,7 +192,7 @@ static void ReadAction(void* arg, grpc_error* error) { } } -static void WriteAction(void* arg, grpc_error* error) { +static void WriteAction(void* arg, grpc_error_handle error) { CFStreamEndpoint* ep = static_cast(arg); GPR_ASSERT(ep->write_cb != nullptr); if (error) { @@ -242,7 +242,7 @@ static void WriteAction(void* arg, grpc_error* error) { grpc_slice_unref_internal(slice); } -static void CFStreamReadAllocationDone(void* arg, grpc_error* error) { +static void CFStreamReadAllocationDone(void* arg, grpc_error_handle error) { CFStreamEndpoint* ep = static_cast(arg); if (error == GRPC_ERROR_NONE) { ep->stream_sync->NotifyOnRead(&ep->read_action); @@ -286,7 +286,7 @@ static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices, ep_impl->stream_sync->NotifyOnWrite(&ep_impl->write_action); } -void CFStreamShutdown(grpc_endpoint* ep, grpc_error* why) { +void CFStreamShutdown(grpc_endpoint* ep, grpc_error_handle why) { CFStreamEndpoint* ep_impl = reinterpret_cast(ep); if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown (%p)", ep_impl, why); diff --git a/src/core/lib/iomgr/error.cc b/src/core/lib/iomgr/error.cc index dc2c1c88705..e72fa9e08c2 100644 --- a/src/core/lib/iomgr/error.cc +++ b/src/core/lib/iomgr/error.cc @@ -120,7 +120,8 @@ static const char* error_time_name(grpc_error_times key) { } #ifndef NDEBUG -grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) { +grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file, + int line) { if (grpc_trace_error_refcount.enabled()) { gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err, gpr_atm_no_barrier_load(&err->atomics.refs.count), @@ -130,13 +131,13 @@ grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) { return err; } #else -grpc_error* grpc_error_do_ref(grpc_error* err) { +grpc_error_handle grpc_error_do_ref(grpc_error_handle err) { gpr_ref(&err->atomics.refs); return err; } #endif -static void unref_errs(grpc_error* err) { +static void unref_errs(grpc_error_handle err) { uint8_t slot = err->first_err; while (slot != UINT8_MAX) { grpc_linked_error* lerr = @@ -148,7 +149,7 @@ static void unref_errs(grpc_error* err) { } } -static void unref_strs(grpc_error* err) { +static void unref_strs(grpc_error_handle err) { for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) { uint8_t slot = err->strs[which]; if (slot != UINT8_MAX) { @@ -158,7 +159,7 @@ static void unref_strs(grpc_error* err) { } } -static void error_destroy(grpc_error* err) { +static void error_destroy(grpc_error_handle err) { GPR_ASSERT(!grpc_error_is_special(err)); unref_errs(err); unref_strs(err); @@ -168,7 +169,7 @@ static void error_destroy(grpc_error* err) { } #ifndef NDEBUG -void grpc_error_do_unref(grpc_error* err, const char* file, int line) { +void grpc_error_do_unref(grpc_error_handle err, const char* file, int line) { if (grpc_trace_error_refcount.enabled()) { gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err, gpr_atm_no_barrier_load(&err->atomics.refs.count), @@ -179,14 +180,14 @@ void grpc_error_do_unref(grpc_error* err, const char* file, int line) { } } #else -void grpc_error_do_unref(grpc_error* err) { +void grpc_error_do_unref(grpc_error_handle err) { if (gpr_unref(&err->atomics.refs)) { error_destroy(err); } } #endif -static uint8_t get_placement(grpc_error** err, size_t size) { +static uint8_t get_placement(grpc_error_handle* err, size_t size) { GPR_ASSERT(*err); uint8_t slots = static_cast(size / sizeof(intptr_t)); if ((*err)->arena_size + slots > (*err)->arena_capacity) { @@ -196,9 +197,9 @@ static uint8_t get_placement(grpc_error** err, size_t size) { return UINT8_MAX; } #ifndef NDEBUG - grpc_error* orig = *err; + grpc_error_handle orig = *err; #endif - *err = static_cast(gpr_realloc( + *err = static_cast(gpr_realloc( *err, sizeof(grpc_error) + (*err)->arena_capacity * sizeof(intptr_t))); #ifndef NDEBUG if (grpc_trace_error_refcount.enabled()) { @@ -213,7 +214,7 @@ static uint8_t get_placement(grpc_error** err, size_t size) { return placement; } -static void internal_set_int(grpc_error** err, grpc_error_ints which, +static void internal_set_int(grpc_error_handle* err, grpc_error_ints which, intptr_t value) { uint8_t slot = (*err)->ints[which]; if (slot == UINT8_MAX) { @@ -228,7 +229,7 @@ static void internal_set_int(grpc_error** err, grpc_error_ints which, (*err)->arena[slot] = value; } -static void internal_set_str(grpc_error** err, grpc_error_strs which, +static void internal_set_str(grpc_error_handle* err, grpc_error_strs which, const grpc_slice& value) { uint8_t slot = (*err)->strs[which]; if (slot == UINT8_MAX) { @@ -249,7 +250,7 @@ static void internal_set_str(grpc_error** err, grpc_error_strs which, } static char* fmt_time(gpr_timespec tm); -static void internal_set_time(grpc_error** err, grpc_error_times which, +static void internal_set_time(grpc_error_handle* err, grpc_error_times which, gpr_timespec value) { uint8_t slot = (*err)->times[which]; if (slot == UINT8_MAX) { @@ -266,7 +267,8 @@ static void internal_set_time(grpc_error** err, grpc_error_times which, memcpy((*err)->arena + slot, &value, sizeof(value)); } -static void internal_add_error(grpc_error** err, grpc_error* new_err) { +static void internal_add_error(grpc_error_handle* err, + grpc_error_handle new_err) { grpc_linked_error new_last = {new_err, UINT8_MAX}; uint8_t slot = get_placement(err, sizeof(grpc_linked_error)); if (slot == UINT8_MAX) { @@ -312,15 +314,16 @@ void grpc_enable_error_creation() { gpr_atm_no_barrier_store(&g_error_creation_allowed, true); } -grpc_error* grpc_error_create(const char* file, int line, - const grpc_slice& desc, grpc_error** referencing, - size_t num_referencing) { +grpc_error_handle grpc_error_create(const char* file, int line, + const grpc_slice& desc, + grpc_error_handle* referencing, + size_t num_referencing) { GPR_TIMER_SCOPE("grpc_error_create", 0); uint8_t initial_arena_capacity = static_cast( DEFAULT_ERROR_CAPACITY + static_cast(num_referencing * SLOTS_PER_LINKED_ERROR) + SURPLUS_CAPACITY); - grpc_error* err = static_cast( + grpc_error_handle err = static_cast( gpr_malloc(sizeof(*err) + initial_arena_capacity * sizeof(intptr_t))); if (err == nullptr) { // TODO(ctiller): make gpr_malloc return NULL return GRPC_ERROR_OOM; @@ -366,7 +369,7 @@ grpc_error* grpc_error_create(const char* file, int line, return err; } -static void ref_strs(grpc_error* err) { +static void ref_strs(grpc_error_handle err) { for (size_t i = 0; i < GRPC_ERROR_STR_MAX; ++i) { uint8_t slot = err->strs[i]; if (slot != UINT8_MAX) { @@ -376,7 +379,7 @@ static void ref_strs(grpc_error* err) { } } -static void ref_errs(grpc_error* err) { +static void ref_errs(grpc_error_handle err) { uint8_t slot = err->first_err; while (slot != UINT8_MAX) { grpc_linked_error* lerr = @@ -386,9 +389,9 @@ static void ref_errs(grpc_error* err) { } } -static grpc_error* copy_error_and_unref(grpc_error* in) { +static grpc_error_handle copy_error_and_unref(grpc_error_handle in) { GPR_TIMER_SCOPE("copy_error_and_unref", 0); - grpc_error* out; + grpc_error_handle out; if (grpc_error_is_special(in)) { out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown"); if (in == GRPC_ERROR_NONE) { @@ -413,7 +416,7 @@ static grpc_error* copy_error_and_unref(grpc_error* in) { static_cast SLOTS_PER_STR) { new_arena_capacity = static_cast(3 * new_arena_capacity / 2); } - out = static_cast( + out = static_cast( gpr_malloc(sizeof(*in) + new_arena_capacity * sizeof(intptr_t))); #ifndef NDEBUG if (grpc_trace_error_refcount.enabled()) { @@ -437,10 +440,10 @@ static grpc_error* copy_error_and_unref(grpc_error* in) { return out; } -grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which, - intptr_t value) { +grpc_error_handle grpc_error_set_int(grpc_error_handle src, + grpc_error_ints which, intptr_t value) { GPR_TIMER_SCOPE("grpc_error_set_int", 0); - grpc_error* new_err = copy_error_and_unref(src); + grpc_error_handle new_err = copy_error_and_unref(src); internal_set_int(&new_err, which, value); return new_err; } @@ -460,7 +463,8 @@ const special_error_status_map error_status_map[] = { strlen("Cancelled")}, // GRPC_ERROR_CANCELLED }; -bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) { +bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which, + intptr_t* p) { GPR_TIMER_SCOPE("grpc_error_get_int", 0); if (grpc_error_is_special(err)) { if (which != GRPC_ERROR_INT_GRPC_STATUS) return false; @@ -475,15 +479,16 @@ bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) { return false; } -grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which, - const grpc_slice& str) { +grpc_error_handle grpc_error_set_str(grpc_error_handle src, + grpc_error_strs which, + const grpc_slice& str) { GPR_TIMER_SCOPE("grpc_error_set_str", 0); - grpc_error* new_err = copy_error_and_unref(src); + grpc_error_handle new_err = copy_error_and_unref(src); internal_set_str(&new_err, which, str); return new_err; } -bool grpc_error_get_str(grpc_error* err, grpc_error_strs which, +bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which, grpc_slice* str) { if (grpc_error_is_special(err)) { if (which != GRPC_ERROR_STR_GRPC_MESSAGE) return false; @@ -504,14 +509,15 @@ bool grpc_error_get_str(grpc_error* err, grpc_error_strs which, } } -grpc_error* grpc_error_add_child(grpc_error* src, grpc_error* child) { +grpc_error_handle grpc_error_add_child(grpc_error_handle src, + grpc_error_handle child) { GPR_TIMER_SCOPE("grpc_error_add_child", 0); if (src != GRPC_ERROR_NONE) { if (child == GRPC_ERROR_NONE) { /* \a child is empty. Simply return the ref to \a src */ return src; } else if (child != src) { - grpc_error* new_err = copy_error_and_unref(src); + grpc_error_handle new_err = copy_error_and_unref(src); internal_add_error(&new_err, child); return new_err; } else { @@ -612,7 +618,7 @@ static char* fmt_int(intptr_t p) { return s; } -static void collect_ints_kvs(grpc_error* err, kv_pairs* kvs) { +static void collect_ints_kvs(grpc_error_handle err, kv_pairs* kvs) { for (size_t which = 0; which < GRPC_ERROR_INT_MAX; ++which) { uint8_t slot = err->ints[which]; if (slot != UINT8_MAX) { @@ -636,7 +642,7 @@ static char* fmt_str(const grpc_slice& slice) { return s; } -static void collect_strs_kvs(grpc_error* err, kv_pairs* kvs) { +static void collect_strs_kvs(grpc_error_handle err, kv_pairs* kvs) { for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) { uint8_t slot = err->strs[which]; if (slot != UINT8_MAX) { @@ -671,7 +677,7 @@ static char* fmt_time(gpr_timespec tm) { return out; } -static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) { +static void collect_times_kvs(grpc_error_handle err, kv_pairs* kvs) { for (size_t which = 0; which < GRPC_ERROR_TIME_MAX; ++which) { uint8_t slot = err->times[which]; if (slot != UINT8_MAX) { @@ -681,7 +687,7 @@ static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) { } } -static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) { +static void add_errs(grpc_error_handle err, char** s, size_t* sz, size_t* cap) { uint8_t slot = err->first_err; bool first = true; while (slot != UINT8_MAX) { @@ -697,7 +703,7 @@ static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) { } } -static char* errs_string(grpc_error* err) { +static char* errs_string(grpc_error_handle err) { char* s = nullptr; size_t sz = 0; size_t cap = 0; @@ -736,7 +742,7 @@ static char* finish_kvs(kv_pairs* kvs) { return s; } -const char* grpc_error_string(grpc_error* err) { +const char* grpc_error_string(grpc_error_handle err) { GPR_TIMER_SCOPE("grpc_error_string", 0); if (err == GRPC_ERROR_NONE) return no_error_string; if (err == GRPC_ERROR_OOM) return oom_error_string; @@ -771,8 +777,8 @@ const char* grpc_error_string(grpc_error* err) { return out; } -grpc_error* grpc_os_error(const char* file, int line, int err, - const char* call_name) { +grpc_error_handle grpc_os_error(const char* file, int line, int err, + const char* call_name) { return grpc_error_set_str( grpc_error_set_str( grpc_error_set_int( @@ -786,10 +792,10 @@ grpc_error* grpc_os_error(const char* file, int line, int err, } #ifdef GPR_WINDOWS -grpc_error* grpc_wsa_error(const char* file, int line, int err, - const char* call_name) { +grpc_error_handle grpc_wsa_error(const char* file, int line, int err, + const char* call_name) { char* utf8_message = gpr_format_message(err); - grpc_error* error = grpc_error_set_str( + grpc_error_handle error = grpc_error_set_str( grpc_error_set_str( grpc_error_set_int( grpc_error_create(file, line, @@ -803,7 +809,7 @@ grpc_error* grpc_wsa_error(const char* file, int line, int err, } #endif -bool grpc_log_error(const char* what, grpc_error* error, const char* file, +bool grpc_log_error(const char* what, grpc_error_handle error, const char* file, int line) { GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE); const char* msg = grpc_error_string(error); diff --git a/src/core/lib/iomgr/error.h b/src/core/lib/iomgr/error.h index 4c81753a148..c8ce38af7c2 100644 --- a/src/core/lib/iomgr/error.h +++ b/src/core/lib/iomgr/error.h @@ -36,6 +36,7 @@ /// full write up of this object. typedef struct grpc_error grpc_error; +typedef grpc_error* grpc_error_handle; extern grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount; @@ -117,14 +118,14 @@ typedef enum { /// They are always even so that other code (particularly combiner locks, /// polling engines) can safely use the lower bit for themselves. -#define GRPC_ERROR_NONE ((grpc_error*)NULL) -#define GRPC_ERROR_RESERVED_1 ((grpc_error*)1) -#define GRPC_ERROR_OOM ((grpc_error*)2) -#define GRPC_ERROR_RESERVED_2 ((grpc_error*)3) -#define GRPC_ERROR_CANCELLED ((grpc_error*)4) +#define GRPC_ERROR_NONE ((grpc_error_handle)NULL) +#define GRPC_ERROR_RESERVED_1 ((grpc_error_handle)1) +#define GRPC_ERROR_OOM ((grpc_error_handle)2) +#define GRPC_ERROR_RESERVED_2 ((grpc_error_handle)3) +#define GRPC_ERROR_CANCELLED ((grpc_error_handle)4) #define GRPC_ERROR_SPECIAL_MAX GRPC_ERROR_CANCELLED -inline bool grpc_error_is_special(struct grpc_error* err) { +inline bool grpc_error_is_special(grpc_error_handle err) { return err <= GRPC_ERROR_SPECIAL_MAX; } @@ -133,12 +134,13 @@ inline bool grpc_error_is_special(struct grpc_error* err) { void grpc_disable_error_creation(); void grpc_enable_error_creation(); -const char* grpc_error_string(grpc_error* error); +const char* grpc_error_string(grpc_error_handle error); /// Create an error - but use GRPC_ERROR_CREATE instead -grpc_error* grpc_error_create(const char* file, int line, - const grpc_slice& desc, grpc_error** referencing, - size_t num_referencing); +grpc_error_handle grpc_error_create(const char* file, int line, + const grpc_slice& desc, + grpc_error_handle* referencing, + size_t num_referencing); /// Create an error (this is the preferred way of generating an error that is /// not due to a system call - for system calls, use GRPC_OS_ERROR or /// GRPC_WSA_ERROR as appropriate) @@ -171,26 +173,29 @@ grpc_error* grpc_error_create(const char* file, int line, grpc_error_create_from_vector(__FILE__, __LINE__, desc, error_list) #ifndef NDEBUG -grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line); -void grpc_error_do_unref(grpc_error* err, const char* file, int line); -inline grpc_error* grpc_error_ref(grpc_error* err, const char* file, int line) { +grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file, + int line); +void grpc_error_do_unref(grpc_error_handle err, const char* file, int line); +inline grpc_error_handle grpc_error_ref(grpc_error_handle err, const char* file, + int line) { if (grpc_error_is_special(err)) return err; return grpc_error_do_ref(err, file, line); } -inline void grpc_error_unref(grpc_error* err, const char* file, int line) { +inline void grpc_error_unref(grpc_error_handle err, const char* file, + int line) { if (grpc_error_is_special(err)) return; grpc_error_do_unref(err, file, line); } #define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__) #define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__) #else -grpc_error* grpc_error_do_ref(grpc_error* err); -void grpc_error_do_unref(grpc_error* err); -inline grpc_error* grpc_error_ref(grpc_error* err) { +grpc_error_handle grpc_error_do_ref(grpc_error_handle err); +void grpc_error_do_unref(grpc_error_handle err); +inline grpc_error_handle grpc_error_ref(grpc_error_handle err) { if (grpc_error_is_special(err)) return err; return grpc_error_do_ref(err); } -inline void grpc_error_unref(grpc_error* err) { +inline void grpc_error_unref(grpc_error_handle err) { if (grpc_error_is_special(err)) return; grpc_error_do_unref(err); } @@ -201,10 +206,11 @@ inline void grpc_error_unref(grpc_error* err) { // Consumes all the errors in the vector and forms a referencing error from // them. If the vector is empty, return GRPC_ERROR_NONE. template -static grpc_error* grpc_error_create_from_vector(const char* file, int line, - const char* desc, - VectorType* error_list) { - grpc_error* error = GRPC_ERROR_NONE; +static grpc_error_handle grpc_error_create_from_vector(const char* file, + int line, + const char* desc, + VectorType* error_list) { + grpc_error_handle error = GRPC_ERROR_NONE; if (error_list->size() != 0) { error = grpc_error_create(file, line, grpc_slice_from_static_string(desc), error_list->data(), error_list->size()); @@ -217,18 +223,21 @@ static grpc_error* grpc_error_create_from_vector(const char* file, int line, return error; } -grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which, - intptr_t value) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_error_set_int(grpc_error_handle src, + grpc_error_ints which, + intptr_t value) GRPC_MUST_USE_RESULT; /// It is an error to pass nullptr as `p`. Caller should allocate a phony /// intptr_t for `p`, even if the value of `p` is not used. -bool grpc_error_get_int(grpc_error* error, grpc_error_ints which, intptr_t* p); +bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which, + intptr_t* p); /// This call takes ownership of the slice; the error is responsible for /// eventually unref-ing it. -grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which, - const grpc_slice& str) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_error_set_str( + grpc_error_handle src, grpc_error_strs which, + const grpc_slice& str) GRPC_MUST_USE_RESULT; /// Returns false if the specified string is not set. /// Caller does NOT own the slice. -bool grpc_error_get_str(grpc_error* error, grpc_error_strs which, +bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which, grpc_slice* s); /// Add a child error: an error that is believed to have contributed to this @@ -242,13 +251,13 @@ bool grpc_error_get_str(grpc_error* error, grpc_error_strs which, /// returns GRPC_ERROR_NONE. 3) If \a src and \a child point to the same error, /// returns a single reference. (Note that, 2 references should have been /// received to the error in this case.) -grpc_error* grpc_error_add_child(grpc_error* src, - grpc_error* child) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_error_add_child( + grpc_error_handle src, grpc_error_handle child) GRPC_MUST_USE_RESULT; -grpc_error* grpc_os_error(const char* file, int line, int err, - const char* call_name) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_os_error(const char* file, int line, int err, + const char* call_name) GRPC_MUST_USE_RESULT; -inline grpc_error* grpc_assert_never_ok(grpc_error* error) { +inline grpc_error_handle grpc_assert_never_ok(grpc_error_handle error) { GPR_ASSERT(error != GRPC_ERROR_NONE); return error; } @@ -256,15 +265,15 @@ inline grpc_error* grpc_assert_never_ok(grpc_error* error) { /// create an error associated with errno!=0 (an 'operating system' error) #define GRPC_OS_ERROR(err, call_name) \ grpc_assert_never_ok(grpc_os_error(__FILE__, __LINE__, err, call_name)) -grpc_error* grpc_wsa_error(const char* file, int line, int err, - const char* call_name) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_wsa_error(const char* file, int line, int err, + const char* call_name) GRPC_MUST_USE_RESULT; /// windows only: create an error associated with WSAGetLastError()!=0 #define GRPC_WSA_ERROR(err, call_name) \ grpc_wsa_error(__FILE__, __LINE__, err, call_name) -bool grpc_log_error(const char* what, grpc_error* error, const char* file, +bool grpc_log_error(const char* what, grpc_error_handle error, const char* file, int line); -inline bool grpc_log_if_error(const char* what, grpc_error* error, +inline bool grpc_log_if_error(const char* what, grpc_error_handle error, const char* file, int line) { return error == GRPC_ERROR_NONE ? true : grpc_log_error(what, error, file, line); diff --git a/src/core/lib/iomgr/error_cfstream.cc b/src/core/lib/iomgr/error_cfstream.cc index 7bf286585ac..114b3f2e4eb 100644 --- a/src/core/lib/iomgr/error_cfstream.cc +++ b/src/core/lib/iomgr/error_cfstream.cc @@ -31,8 +31,9 @@ #define MAX_ERROR_DESCRIPTION 256 -grpc_error* grpc_error_create_from_cferror(const char* file, int line, - void* arg, const char* custom_desc) { +grpc_error_handle grpc_error_create_from_cferror(const char* file, int line, + void* arg, + const char* custom_desc) { CFErrorRef error = static_cast(arg); char buf_domain[MAX_ERROR_DESCRIPTION]; char buf_desc[MAX_ERROR_DESCRIPTION]; diff --git a/src/core/lib/iomgr/error_cfstream.h b/src/core/lib/iomgr/error_cfstream.h index 06ab7513296..2d5b744c74e 100644 --- a/src/core/lib/iomgr/error_cfstream.h +++ b/src/core/lib/iomgr/error_cfstream.h @@ -24,8 +24,8 @@ #define GRPC_ERROR_CREATE_FROM_CFERROR(error, desc) \ grpc_error_create_from_cferror(__FILE__, __LINE__, \ static_cast((error)), (desc)) -grpc_error* grpc_error_create_from_cferror(const char* file, int line, - void* arg, const char* desc); +grpc_error_handle grpc_error_create_from_cferror(const char* file, int line, + void* arg, const char* desc); #endif /* GRPC_CFSTREAM */ #endif /* GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H */ diff --git a/src/core/lib/iomgr/error_internal.h b/src/core/lib/iomgr/error_internal.h index 33c233b9b67..bfd746b2188 100644 --- a/src/core/lib/iomgr/error_internal.h +++ b/src/core/lib/iomgr/error_internal.h @@ -30,7 +30,7 @@ typedef struct grpc_linked_error grpc_linked_error; struct grpc_linked_error { - grpc_error* err; + grpc_error_handle err; uint8_t next; }; diff --git a/src/core/lib/iomgr/ev_apple.cc b/src/core/lib/iomgr/ev_apple.cc index 1264866bd38..25805826294 100644 --- a/src/core/lib/iomgr/ev_apple.cc +++ b/src/core/lib/iomgr/ev_apple.cc @@ -219,9 +219,9 @@ static void pollset_global_shutdown(void) { /// The Apple pollset simply waits on a condition variable until it is kicked. /// The network events are handled in the global run loop thread. Processing of /// these events will eventually trigger the kick. -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline) { GRPC_POLLING_TRACE("pollset work: %p, worker: %p, deadline: %" PRIu64, pollset, worker, deadline); GrpcApplePollset* apple_pollset = @@ -272,8 +272,8 @@ static void kick_worker(GrpcAppleWorker* worker) { /// The caller must acquire the lock GrpcApplePollset.mu before calling this /// function. The kick action simply signals the condition variable of the /// worker. -static grpc_error* pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) { GrpcApplePollset* apple_pollset = reinterpret_cast(pollset); diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index a8508701294..f09cd78b8fb 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -241,7 +241,7 @@ struct grpc_pollset_set { * Common helpers */ -static bool append_error(grpc_error** composite, grpc_error* error, +static bool append_error(grpc_error_handle* composite, grpc_error_handle error, const char* desc) { if (error == GRPC_ERROR_NONE) return true; if (*composite == GRPC_ERROR_NONE) { @@ -382,7 +382,7 @@ static int fd_wrapped_fd(grpc_fd* fd) { return fd->fd; } /* if 'releasing_fd' is true, it means that we are going to detach the internal * fd from grpc_fd structure (i.e which means we should not be calling * shutdown() syscall on that fd) */ -static void fd_shutdown_internal(grpc_fd* fd, grpc_error* why, +static void fd_shutdown_internal(grpc_fd* fd, grpc_error_handle why, bool releasing_fd) { if (fd->read_closure->SetShutdown(GRPC_ERROR_REF(why))) { if (!releasing_fd) { @@ -402,13 +402,13 @@ static void fd_shutdown_internal(grpc_fd* fd, grpc_error* why, } /* Might be called multiple times */ -static void fd_shutdown(grpc_fd* fd, grpc_error* why) { +static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) { fd_shutdown_internal(fd, why, false); } static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd, const char* reason) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; bool is_release_fd = (release_fd != nullptr); if (!fd->read_closure->IsShutdown()) { @@ -514,12 +514,12 @@ static size_t choose_neighborhood(void) { return static_cast(gpr_cpu_current_cpu()) % g_num_neighborhoods; } -static grpc_error* pollset_global_init(void) { +static grpc_error_handle pollset_global_init(void) { gpr_tls_init(&g_current_thread_pollset); gpr_tls_init(&g_current_thread_worker); gpr_atm_no_barrier_store(&g_active_poller, 0); global_wakeup_fd.read_fd = -1; - grpc_error* err = grpc_wakeup_fd_init(&global_wakeup_fd); + grpc_error_handle err = grpc_wakeup_fd_init(&global_wakeup_fd); if (err != GRPC_ERROR_NONE) return err; struct epoll_event ev; ev.events = static_cast(EPOLLIN | EPOLLET); @@ -589,9 +589,9 @@ static void pollset_destroy(grpc_pollset* pollset) { gpr_mu_destroy(&pollset->mu); } -static grpc_error* pollset_kick_all(grpc_pollset* pollset) { +static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) { GPR_TIMER_SCOPE("pollset_kick_all", 0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (pollset->root_worker != nullptr) { grpc_pollset_worker* worker = pollset->root_worker; do { @@ -663,11 +663,11 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) { NOTE ON SYNCRHONIZATION: Similar to do_epoll_wait(), this function is only called by g_active_poller thread. So there is no need for synchronization when accessing fields in g_epoll_set */ -static grpc_error* process_epoll_events(grpc_pollset* /*pollset*/) { +static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) { GPR_TIMER_SCOPE("process_epoll_events", 0); static const char* err_desc = "process_events"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; long num_events = gpr_atm_acq_load(&g_epoll_set.num_events); long cursor = gpr_atm_acq_load(&g_epoll_set.cursor); for (int idx = 0; @@ -715,7 +715,7 @@ static grpc_error* process_epoll_events(grpc_pollset* /*pollset*/) { NOTE ON SYNCHRONIZATION: At any point of time, only the g_active_poller (i.e the designated poller thread) will be calling this function. So there is no need for any synchronization when accesing fields in g_epoll_set */ -static grpc_error* do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) { +static grpc_error_handle do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) { GPR_TIMER_SCOPE("do_epoll_wait", 0); int r; @@ -1014,12 +1014,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, The function pollset_work() may temporarily release the lock (pollset->po.mu) during the course of its execution but it will always re-acquire the lock and ensure that it is held by the time the function returns */ -static grpc_error* pollset_work(grpc_pollset* ps, - grpc_pollset_worker** worker_hdl, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* ps, + grpc_pollset_worker** worker_hdl, + grpc_millis deadline) { GPR_TIMER_SCOPE("pollset_work", 0); grpc_pollset_worker worker; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "pollset_work"; if (ps->kicked_without_poller) { ps->kicked_without_poller = false; @@ -1065,11 +1065,11 @@ static grpc_error* pollset_work(grpc_pollset* ps, return error; } -static grpc_error* pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) { GPR_TIMER_SCOPE("pollset_kick", 0); GRPC_STATS_INC_POLLSET_KICK(); - grpc_error* ret_err = GRPC_ERROR_NONE; + grpc_error_handle ret_err = GRPC_ERROR_NONE; if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { std::vector log; log.push_back(absl::StrFormat( @@ -1260,7 +1260,7 @@ static bool is_any_background_poller_thread(void) { return false; } static void shutdown_background_closure(void) {} static bool add_closure_to_background_poller(grpc_closure* /*closure*/, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { return false; } diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index f26a99293af..72d7da76ba5 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -134,7 +134,7 @@ static std::string pollable_desc(pollable* p) { /// added static pollable* g_empty_pollable; -static grpc_error* pollable_create(pollable_type type, pollable** p); +static grpc_error_handle pollable_create(pollable_type type, pollable** p); static pollable* pollable_ref(pollable* p, const grpc_core::DebugLocation& dbg_loc, const char* reason) { @@ -314,7 +314,7 @@ struct grpc_pollset_set { * Common helpers */ -static bool append_error(grpc_error** composite, grpc_error* error, +static bool append_error(grpc_error_handle* composite, grpc_error_handle error, const char* desc) { if (error == GRPC_ERROR_NONE) return true; if (*composite == GRPC_ERROR_NONE) { @@ -372,7 +372,7 @@ static void ref_by(grpc_fd* fd, int n) { } /* Uninitialize and add to the freelist */ -static void fd_destroy(void* arg, grpc_error* /*error*/) { +static void fd_destroy(void* arg, grpc_error_handle /*error*/) { grpc_fd* fd = static_cast(arg); fd->destroy(); @@ -509,7 +509,7 @@ static bool fd_is_shutdown(grpc_fd* fd) { } /* Might be called multiple times */ -static void fd_shutdown(grpc_fd* fd, grpc_error* why) { +static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) { if (fd->read_closure.SetShutdown(GRPC_ERROR_REF(why))) { if (shutdown(fd->fd, SHUT_RDWR)) { if (errno != ENOTCONN) { @@ -556,7 +556,7 @@ static void fd_add_pollset(grpc_fd* fd, grpc_pollset* pollset) { * Pollable Definitions */ -static grpc_error* pollable_create(pollable_type type, pollable** p) { +static grpc_error_handle pollable_create(pollable_type type, pollable** p) { *p = nullptr; int epfd = epoll_create1(EPOLL_CLOEXEC); @@ -565,7 +565,7 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) { } GRPC_FD_TRACE("Pollable_create: created epfd: %d (type: %d)", epfd, type); *p = static_cast(gpr_malloc(sizeof(**p))); - grpc_error* err = grpc_wakeup_fd_init(&(*p)->wakeup); + grpc_error_handle err = grpc_wakeup_fd_init(&(*p)->wakeup); if (err != GRPC_ERROR_NONE) { GRPC_FD_TRACE( "Pollable_create: closed epfd: %d (type: %d). wakeupfd_init error", @@ -609,8 +609,8 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) { return GRPC_ERROR_NONE; } -static grpc_error* pollable_add_fd(pollable* p, grpc_fd* fd) { - grpc_error* error = GRPC_ERROR_NONE; +static grpc_error_handle pollable_add_fd(pollable* p, grpc_fd* fd) { + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "pollable_add_fd"; const int epfd = p->epfd; if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { @@ -647,7 +647,7 @@ GPR_TLS_DECL(g_current_thread_pollset); GPR_TLS_DECL(g_current_thread_worker); /* Global state management */ -static grpc_error* pollset_global_init(void) { +static grpc_error_handle pollset_global_init(void) { gpr_tls_init(&g_current_thread_pollset); gpr_tls_init(&g_current_thread_worker); return pollable_create(PO_EMPTY, &g_empty_pollable); @@ -681,7 +681,7 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) { /* pollset->mu must be held before calling this function, * pollset->active_pollable->mu & specific_worker->pollable_obj->mu must not be * held */ -static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) { +static grpc_error_handle kick_one_worker(grpc_pollset_worker* specific_worker) { GPR_TIMER_SCOPE("kick_one_worker", 0); pollable* p = specific_worker->pollable_obj; grpc_core::MutexLockForGprMu lock(&p->mu); @@ -708,7 +708,7 @@ static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) { gpr_log(GPR_INFO, "PS:%p kicked_specific_via_wakeup_fd", p); } specific_worker->kicked = true; - grpc_error* error = grpc_wakeup_fd_wakeup(&p->wakeup); + grpc_error_handle error = grpc_wakeup_fd_wakeup(&p->wakeup); return error; } if (specific_worker->initialized_cv) { @@ -725,8 +725,8 @@ static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) { return GRPC_ERROR_NONE; } -static grpc_error* pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) { GPR_TIMER_SCOPE("pollset_kick", 0); GRPC_STATS_INC_POLLSET_KICK(); if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { @@ -777,9 +777,9 @@ static grpc_error* pollset_kick(grpc_pollset* pollset, } } -static grpc_error* pollset_kick_all(grpc_pollset* pollset) { +static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) { GPR_TIMER_SCOPE("pollset_kick_all", 0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; const char* err_desc = "pollset_kick_all"; grpc_pollset_worker* w = pollset->root_worker; if (w != nullptr) { @@ -828,9 +828,9 @@ static void fd_has_errors(grpc_fd* fd) { fd->error_closure.SetReady(); } * * Note that if a pollable object is already attached to the fd, it may be of * either PO_FD or PO_MULTI type */ -static grpc_error* get_fd_pollable(grpc_fd* fd, pollable** p) { +static grpc_error_handle get_fd_pollable(grpc_fd* fd, pollable** p) { gpr_mu_lock(&fd->pollable_mu); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "get_fd_pollable"; if (fd->pollable_obj == nullptr) { if (append_error(&error, pollable_create(PO_FD, &fd->pollable_obj), @@ -863,8 +863,9 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { pollset_maybe_finish_shutdown(pollset); } -static grpc_error* pollable_process_events(grpc_pollset* pollset, - pollable* pollable_obj, bool drain) { +static grpc_error_handle pollable_process_events(grpc_pollset* pollset, + pollable* pollable_obj, + bool drain) { GPR_TIMER_SCOPE("pollable_process_events", 0); static const char* err_desc = "pollset_process_events"; // Use a simple heuristic to determine how many fd events to process @@ -877,7 +878,7 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset, if (handle_count == 0) { handle_count = 1; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; for (int i = 0; (drain || i < handle_count) && pollable_obj->event_cursor != pollable_obj->event_count; i++) { @@ -932,7 +933,7 @@ static void pollset_destroy(grpc_pollset* pollset) { gpr_mu_destroy(&pollset->mu); } -static grpc_error* pollable_epoll(pollable* p, grpc_millis deadline) { +static grpc_error_handle pollable_epoll(pollable* p, grpc_millis deadline) { GPR_TIMER_SCOPE("pollable_epoll", 0); int timeout = poll_deadline_to_millis_timeout(deadline); @@ -1103,9 +1104,9 @@ static long sys_gettid(void) { return syscall(__NR_gettid); } The function pollset_work() may temporarily release the lock (pollset->po.mu) during the course of its execution but it will always re-acquire the lock and ensure that it is held by the time the function returns */ -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker_hdl, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker_hdl, + grpc_millis deadline) { GPR_TIMER_SCOPE("pollset_work", 0); #ifdef GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP grpc_pollset_worker* worker = @@ -1126,7 +1127,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, deadline, pollset->kicked_without_poller, pollset->active_pollable); } static const char* err_desc = "pollset_work"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (pollset->kicked_without_poller) { pollset->kicked_without_poller = false; } else { @@ -1155,10 +1156,10 @@ static grpc_error* pollset_work(grpc_pollset* pollset, return error; } -static grpc_error* pollset_transition_pollable_from_empty_to_fd_locked( +static grpc_error_handle pollset_transition_pollable_from_empty_to_fd_locked( grpc_pollset* pollset, grpc_fd* fd) { static const char* err_desc = "pollset_transition_pollable_from_empty_to_fd"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, "PS:%p add fd %p (%d); transition pollable from empty to fd", @@ -1171,10 +1172,10 @@ static grpc_error* pollset_transition_pollable_from_empty_to_fd_locked( return error; } -static grpc_error* pollset_transition_pollable_from_fd_to_multi_locked( +static grpc_error_handle pollset_transition_pollable_from_fd_to_multi_locked( grpc_pollset* pollset, grpc_fd* and_add_fd) { static const char* err_desc = "pollset_transition_pollable_from_fd_to_multi"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log( GPR_INFO, @@ -1200,8 +1201,9 @@ static grpc_error* pollset_transition_pollable_from_fd_to_multi_locked( } /* expects pollsets locked, flag whether fd is locked or not */ -static grpc_error* pollset_add_fd_locked(grpc_pollset* pollset, grpc_fd* fd) { - grpc_error* error = GRPC_ERROR_NONE; +static grpc_error_handle pollset_add_fd_locked(grpc_pollset* pollset, + grpc_fd* fd) { + grpc_error_handle error = GRPC_ERROR_NONE; pollable* po_at_start = POLLABLE_REF(pollset->active_pollable, "pollset_add_fd"); switch (pollset->active_pollable->type) { @@ -1236,9 +1238,9 @@ static grpc_error* pollset_add_fd_locked(grpc_pollset* pollset, grpc_fd* fd) { return error; } -static grpc_error* pollset_as_multipollable_locked(grpc_pollset* pollset, - pollable** pollable_obj) { - grpc_error* error = GRPC_ERROR_NONE; +static grpc_error_handle pollset_as_multipollable_locked( + grpc_pollset* pollset, pollable** pollable_obj) { + grpc_error_handle error = GRPC_ERROR_NONE; pollable* po_at_start = POLLABLE_REF(pollset->active_pollable, "pollset_as_multipollable"); switch (pollset->active_pollable->type) { @@ -1297,7 +1299,7 @@ static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) { } grpc_core::MutexLockForGprMu lock(&pollset->mu); - grpc_error* error = pollset_add_fd_locked(pollset, fd); + grpc_error_handle error = pollset_add_fd_locked(pollset, fd); // If we are in PO_MULTI mode, we should update the pollsets of the FD. if (gpr_atm_no_barrier_load(&pollset->active_pollable_type) == PO_MULTI) { @@ -1354,7 +1356,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, "PSS:%p: add fd %p (%d)", pss, fd, fd->fd); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "pollset_set_add_fd"; pss = pss_lock_adam(pss); for (size_t i = 0; i < pss->pollset_count; i++) { @@ -1421,13 +1423,14 @@ static void pollset_set_del_pollset(grpc_pollset_set* pss, grpc_pollset* ps) { // add all fds to pollables, and output a new array of unorphaned out_fds // assumes pollsets are multipollable -static grpc_error* add_fds_to_pollsets(grpc_fd** fds, size_t fd_count, - grpc_pollset** pollsets, - size_t pollset_count, - const char* err_desc, grpc_fd** out_fds, - size_t* out_fd_count) { +static grpc_error_handle add_fds_to_pollsets(grpc_fd** fds, size_t fd_count, + grpc_pollset** pollsets, + size_t pollset_count, + const char* err_desc, + grpc_fd** out_fds, + size_t* out_fd_count) { GPR_TIMER_SCOPE("add_fds_to_pollsets", 0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; for (size_t i = 0; i < fd_count; i++) { gpr_mu_lock(&fds[i]->orphan_mu); if ((gpr_atm_no_barrier_load(&fds[i]->refst) & 1) == 0) { @@ -1451,7 +1454,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, "PSS:%p: add pollset %p", pss, ps); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "pollset_set_add_pollset"; pollable* pollable_obj = nullptr; gpr_mu_lock(&ps->mu); @@ -1488,7 +1491,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a, if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, "PSS: merge (%p, %p)", a, b); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; static const char* err_desc = "pollset_set_add_fd"; for (;;) { if (a == b) { @@ -1573,7 +1576,7 @@ static bool is_any_background_poller_thread(void) { return false; } static void shutdown_background_closure(void) {} static bool add_closure_to_background_poller(grpc_closure* /*closure*/, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { return false; } diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index e58d1d39c48..fa4242f3275 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -89,7 +89,7 @@ struct grpc_fd { int closed; int released; gpr_atm pollhup; - grpc_error* shutdown_error; + grpc_error_handle shutdown_error; /* The watcher list. @@ -230,9 +230,9 @@ static int poll_deadline_to_millis_timeout(grpc_millis deadline); #define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2 /* As per pollset_kick, with an extended set of flags (defined above) -- mostly for fd_posix's use. */ -static grpc_error* pollset_kick_ext(grpc_pollset* p, - grpc_pollset_worker* specific_worker, - uint32_t flags) GRPC_MUST_USE_RESULT; +static grpc_error_handle pollset_kick_ext(grpc_pollset* p, + grpc_pollset_worker* specific_worker, + uint32_t flags) GRPC_MUST_USE_RESULT; /* Return 1 if the pollset has active threads in pollset_work (pollset must * be locked) */ @@ -394,11 +394,12 @@ static bool fd_is_orphaned(grpc_fd* fd) { return (gpr_atm_acq_load(&fd->refst) & 1) == 0; } -static grpc_error* pollset_kick_locked(grpc_fd_watcher* watcher) { +static grpc_error_handle pollset_kick_locked(grpc_fd_watcher* watcher) { gpr_mu_lock(&watcher->pollset->mu); GPR_ASSERT(watcher->worker); - grpc_error* err = pollset_kick_ext(watcher->pollset, watcher->worker, - GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP); + grpc_error_handle err = + pollset_kick_ext(watcher->pollset, watcher->worker, + GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP); gpr_mu_unlock(&watcher->pollset->mu); return err; } @@ -484,7 +485,7 @@ static void fd_ref(grpc_fd* fd) { ref_by(fd, 2); } static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); } #endif -static grpc_error* fd_shutdown_error(grpc_fd* fd) { +static grpc_error_handle fd_shutdown_error(grpc_fd* fd) { if (!fd->shutdown) { return GRPC_ERROR_NONE; } else { @@ -537,7 +538,7 @@ static int set_ready_locked(grpc_fd* fd, grpc_closure** st) { } } -static void fd_shutdown(grpc_fd* fd, grpc_error* why) { +static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) { gpr_mu_lock(&fd->mu); /* only shutdown once */ if (!fd->shutdown) { @@ -747,7 +748,8 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) { worker->prev->next = worker->next->prev = worker; } -static void kick_append_error(grpc_error** composite, grpc_error* error) { +static void kick_append_error(grpc_error_handle* composite, + grpc_error_handle error) { if (error == GRPC_ERROR_NONE) return; if (*composite == GRPC_ERROR_NONE) { *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure"); @@ -755,11 +757,11 @@ static void kick_append_error(grpc_error** composite, grpc_error* error) { *composite = grpc_error_add_child(*composite, error); } -static grpc_error* pollset_kick_ext(grpc_pollset* p, - grpc_pollset_worker* specific_worker, - uint32_t flags) { +static grpc_error_handle pollset_kick_ext(grpc_pollset* p, + grpc_pollset_worker* specific_worker, + uint32_t flags) { GPR_TIMER_SCOPE("pollset_kick_ext", 0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; GRPC_STATS_INC_POLLSET_KICK(); /* pollset->mu already held */ @@ -826,14 +828,14 @@ static grpc_error* pollset_kick_ext(grpc_pollset* p, return error; } -static grpc_error* pollset_kick(grpc_pollset* p, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* p, + grpc_pollset_worker* specific_worker) { return pollset_kick_ext(p, specific_worker, 0); } /* global state management */ -static grpc_error* pollset_global_init(void) { +static grpc_error_handle pollset_global_init(void) { gpr_tls_init(&g_current_thread_poller); gpr_tls_init(&g_current_thread_worker); return GRPC_ERROR_NONE; @@ -904,7 +906,8 @@ static void finish_shutdown(grpc_pollset* pollset) { GRPC_ERROR_NONE); } -static void work_combine_error(grpc_error** composite, grpc_error* error) { +static void work_combine_error(grpc_error_handle* composite, + grpc_error_handle error) { if (error == GRPC_ERROR_NONE) return; if (*composite == GRPC_ERROR_NONE) { *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work"); @@ -912,13 +915,13 @@ static void work_combine_error(grpc_error** composite, grpc_error* error) { *composite = grpc_error_add_child(*composite, error); } -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker_hdl, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker_hdl, + grpc_millis deadline) { GPR_TIMER_SCOPE("pollset_work", 0); grpc_pollset_worker worker; if (worker_hdl) *worker_hdl = &worker; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* Avoid malloc for small number of elements. */ enum { inline_elements = 96 }; @@ -1336,7 +1339,7 @@ static bool is_any_background_poller_thread(void) { return false; } static void shutdown_background_closure(void) {} static bool add_closure_to_background_poller(grpc_closure* /*closure*/, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { return false; } diff --git a/src/core/lib/iomgr/ev_posix.cc b/src/core/lib/iomgr/ev_posix.cc index 07aeb7f2478..dfb250f4a6c 100644 --- a/src/core/lib/iomgr/ev_posix.cc +++ b/src/core/lib/iomgr/ev_posix.cc @@ -270,7 +270,7 @@ void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd, g_event_engine->fd_orphan(fd, on_done, release_fd, reason); } -void grpc_fd_shutdown(grpc_fd* fd, grpc_error* why) { +void grpc_fd_shutdown(grpc_fd* fd, grpc_error_handle why) { GRPC_POLLING_API_TRACE("fd_shutdown(%d)", grpc_fd_wrapped_fd(fd)); GRPC_FD_TRACE("fd_shutdown(%d)", grpc_fd_wrapped_fd(fd)); g_event_engine->fd_shutdown(fd, why); @@ -315,19 +315,20 @@ static void pollset_destroy(grpc_pollset* pollset) { g_event_engine->pollset_destroy(pollset); } -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline) { GRPC_POLLING_API_TRACE("pollset_work(%p, %" PRId64 ") begin", pollset, deadline); - grpc_error* err = g_event_engine->pollset_work(pollset, worker, deadline); + grpc_error_handle err = + g_event_engine->pollset_work(pollset, worker, deadline); GRPC_POLLING_API_TRACE("pollset_work(%p, %" PRId64 ") end", pollset, deadline); return err; } -static grpc_error* pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) { GRPC_POLLING_API_TRACE("pollset_kick(%p, %p)", pollset, specific_worker); return g_event_engine->pollset_kick(pollset, specific_worker); } @@ -406,7 +407,7 @@ bool grpc_is_any_background_poller_thread(void) { } bool grpc_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error) { + grpc_error_handle error) { return g_event_engine->add_closure_to_background_poller(closure, error); } diff --git a/src/core/lib/iomgr/ev_posix.h b/src/core/lib/iomgr/ev_posix.h index 84edabce71e..479921ae169 100644 --- a/src/core/lib/iomgr/ev_posix.h +++ b/src/core/lib/iomgr/ev_posix.h @@ -52,7 +52,7 @@ typedef struct grpc_event_engine_vtable { int (*fd_wrapped_fd)(grpc_fd* fd); void (*fd_orphan)(grpc_fd* fd, grpc_closure* on_done, int* release_fd, const char* reason); - void (*fd_shutdown)(grpc_fd* fd, grpc_error* why); + void (*fd_shutdown)(grpc_fd* fd, grpc_error_handle why); void (*fd_notify_on_read)(grpc_fd* fd, grpc_closure* closure); void (*fd_notify_on_write)(grpc_fd* fd, grpc_closure* closure); void (*fd_notify_on_error)(grpc_fd* fd, grpc_closure* closure); @@ -64,11 +64,11 @@ typedef struct grpc_event_engine_vtable { void (*pollset_init)(grpc_pollset* pollset, gpr_mu** mu); void (*pollset_shutdown)(grpc_pollset* pollset, grpc_closure* closure); void (*pollset_destroy)(grpc_pollset* pollset); - grpc_error* (*pollset_work)(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline); - grpc_error* (*pollset_kick)(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker); + grpc_error_handle (*pollset_work)(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline); + grpc_error_handle (*pollset_kick)(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker); void (*pollset_add_fd)(grpc_pollset* pollset, struct grpc_fd* fd); grpc_pollset_set* (*pollset_set_create)(void); @@ -88,7 +88,7 @@ typedef struct grpc_event_engine_vtable { void (*shutdown_background_closure)(void); void (*shutdown_engine)(void); bool (*add_closure_to_background_poller)(grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); } grpc_event_engine_vtable; /* register a new event engine factory */ @@ -139,7 +139,7 @@ void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd, bool grpc_fd_is_shutdown(grpc_fd* fd); /* Cause any current and future callbacks to fail. */ -void grpc_fd_shutdown(grpc_fd* fd, grpc_error* why); +void grpc_fd_shutdown(grpc_fd* fd, grpc_error_handle why); /* Register read interest, causing read_cb to be called once when fd becomes readable, on deadline specified by deadline, or on shutdown triggered by @@ -195,7 +195,7 @@ bool grpc_is_any_background_poller_thread(); * that the closure may or may not run yet when this function returns, and the * closure should not be blocking or long-running. */ bool grpc_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); /* Shut down all the closures registered in the background poller. */ void grpc_shutdown_background_closure(); diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index a2b6e7b38f2..54ab9fdad59 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -27,7 +27,7 @@ #include "src/core/lib/iomgr/combiner.h" #include "src/core/lib/profiling/timers.h" -static void exec_ctx_run(grpc_closure* closure, grpc_error* error) { +static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) { #ifndef NDEBUG closure->scheduled = false; if (grpc_trace_closure.enabled()) { @@ -46,7 +46,7 @@ static void exec_ctx_run(grpc_closure* closure, grpc_error* error) { GRPC_ERROR_UNREF(error); } -static void exec_ctx_sched(grpc_closure* closure, grpc_error* error) { +static void exec_ctx_sched(grpc_closure* closure, grpc_error_handle error) { grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure, error); } @@ -152,7 +152,7 @@ bool ExecCtx::Flush() { closure_list_.head = closure_list_.tail = nullptr; while (c != nullptr) { grpc_closure* next = c->next_data.next; - grpc_error* error = c->error_data.error; + grpc_error_handle error = c->error_data.error; did_something = true; exec_ctx_run(c, error); c = next; @@ -174,7 +174,7 @@ grpc_millis ExecCtx::Now() { } void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure, - grpc_error* error) { + grpc_error_handle error) { (void)location; if (closure == nullptr) { GRPC_ERROR_UNREF(error); diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index c993133ef1c..9cb525759e3 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -228,7 +228,7 @@ class ExecCtx { } static void Run(const DebugLocation& location, grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); static void RunList(const DebugLocation& location, grpc_closure_list* list); diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index b1d21bc91e6..3d8d757beb2 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -57,27 +57,27 @@ GPR_TLS_DECL(g_this_thread_state); Executor* executors[static_cast(ExecutorType::NUM_EXECUTORS)]; -void default_enqueue_short(grpc_closure* closure, grpc_error* error) { +void default_enqueue_short(grpc_closure* closure, grpc_error_handle error) { executors[static_cast(ExecutorType::DEFAULT)]->Enqueue( closure, error, true /* is_short */); } -void default_enqueue_long(grpc_closure* closure, grpc_error* error) { +void default_enqueue_long(grpc_closure* closure, grpc_error_handle error) { executors[static_cast(ExecutorType::DEFAULT)]->Enqueue( closure, error, false /* is_short */); } -void resolver_enqueue_short(grpc_closure* closure, grpc_error* error) { +void resolver_enqueue_short(grpc_closure* closure, grpc_error_handle error) { executors[static_cast(ExecutorType::RESOLVER)]->Enqueue( closure, error, true /* is_short */); } -void resolver_enqueue_long(grpc_closure* closure, grpc_error* error) { +void resolver_enqueue_long(grpc_closure* closure, grpc_error_handle error) { executors[static_cast(ExecutorType::RESOLVER)]->Enqueue( closure, error, false /* is_short */); } -using EnqueueFunc = void (*)(grpc_closure* closure, grpc_error* error); +using EnqueueFunc = void (*)(grpc_closure* closure, grpc_error_handle error); const EnqueueFunc executor_enqueue_fns_[static_cast(ExecutorType::NUM_EXECUTORS)] @@ -115,7 +115,7 @@ size_t Executor::RunClosures(const char* executor_name, grpc_closure* c = list.head; while (c != nullptr) { grpc_closure* next = c->next_data.next; - grpc_error* error = c->error_data.error; + grpc_error_handle error = c->error_data.error; #ifndef NDEBUG EXECUTOR_TRACE("(%s) run %p [created by %s:%d]", executor_name, c, c->file_created, c->line_created); @@ -251,7 +251,7 @@ void Executor::ThreadMain(void* arg) { gpr_tls_set(&g_this_thread_state, reinterpret_cast(nullptr)); } -void Executor::Enqueue(grpc_closure* closure, grpc_error* error, +void Executor::Enqueue(grpc_closure* closure, grpc_error_handle error, bool is_short) { bool retry_push; if (is_short) { @@ -404,7 +404,7 @@ void Executor::InitAll() { EXECUTOR_TRACE0("Executor::InitAll() done"); } -void Executor::Run(grpc_closure* closure, grpc_error* error, +void Executor::Run(grpc_closure* closure, grpc_error_handle error, ExecutorType executor_type, ExecutorJobType job_type) { executor_enqueue_fns_[static_cast(executor_type)] [static_cast(job_type)](closure, error); diff --git a/src/core/lib/iomgr/executor.h b/src/core/lib/iomgr/executor.h index 7a5d16b9fc5..37e5c1e57e1 100644 --- a/src/core/lib/iomgr/executor.h +++ b/src/core/lib/iomgr/executor.h @@ -70,7 +70,7 @@ class Executor { /** Enqueue the closure onto the executor. is_short is true if the closure is * a short job (i.e expected to not block and complete quickly) */ - void Enqueue(grpc_closure* closure, grpc_error* error, bool is_short); + void Enqueue(grpc_closure* closure, grpc_error_handle error, bool is_short); // TODO(sreek): Currently we have two executors (available globally): The // default executor and the resolver executor. @@ -83,7 +83,7 @@ class Executor { // Initialize ALL the executors static void InitAll(); - static void Run(grpc_closure* closure, grpc_error* error, + static void Run(grpc_closure* closure, grpc_error_handle error, ExecutorType executor_type = ExecutorType::DEFAULT, ExecutorJobType job_type = ExecutorJobType::SHORT); diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 02646db428d..1210bd70ff2 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -169,7 +169,7 @@ bool grpc_iomgr_is_any_background_poller_thread() { } bool grpc_iomgr_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error) { + grpc_error_handle error) { return grpc_iomgr_platform_add_closure_to_background_poller(closure, error); } diff --git a/src/core/lib/iomgr/iomgr.h b/src/core/lib/iomgr/iomgr.h index e02f15e551c..9af0557e8a9 100644 --- a/src/core/lib/iomgr/iomgr.h +++ b/src/core/lib/iomgr/iomgr.h @@ -52,7 +52,7 @@ bool grpc_iomgr_is_any_background_poller_thread(); * that the closure may or may not run yet when this function returns, and the * closure should not be blocking or long-running. */ bool grpc_iomgr_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); /* Exposed only for testing */ size_t grpc_iomgr_count_objects_for_testing(); diff --git a/src/core/lib/iomgr/iomgr_custom.cc b/src/core/lib/iomgr/iomgr_custom.cc index 684044a5bbf..9a9f06a5aa2 100644 --- a/src/core/lib/iomgr/iomgr_custom.cc +++ b/src/core/lib/iomgr/iomgr_custom.cc @@ -45,7 +45,7 @@ static bool iomgr_platform_is_any_background_poller_thread(void) { return false; } static bool iomgr_platform_add_closure_to_background_poller( - grpc_closure* /*closure*/, grpc_error* /*error*/) { + grpc_closure* /*closure*/, grpc_error_handle /*error*/) { return false; } diff --git a/src/core/lib/iomgr/iomgr_internal.cc b/src/core/lib/iomgr/iomgr_internal.cc index 896d9fce67c..e5ce8ab3f89 100644 --- a/src/core/lib/iomgr/iomgr_internal.cc +++ b/src/core/lib/iomgr/iomgr_internal.cc @@ -50,8 +50,8 @@ bool grpc_iomgr_platform_is_any_background_poller_thread() { return iomgr_platform_vtable->is_any_background_poller_thread(); } -bool grpc_iomgr_platform_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error) { +bool grpc_iomgr_platform_add_closure_to_background_poller( + grpc_closure* closure, grpc_error_handle error) { return iomgr_platform_vtable->add_closure_to_background_poller(closure, error); } diff --git a/src/core/lib/iomgr/iomgr_internal.h b/src/core/lib/iomgr/iomgr_internal.h index 17607f98f11..01cd2483ea2 100644 --- a/src/core/lib/iomgr/iomgr_internal.h +++ b/src/core/lib/iomgr/iomgr_internal.h @@ -38,7 +38,7 @@ typedef struct grpc_iomgr_platform_vtable { void (*shutdown_background_closure)(void); bool (*is_any_background_poller_thread)(void); bool (*add_closure_to_background_poller)(grpc_closure* closure, - grpc_error* error); + grpc_error_handle error); } grpc_iomgr_platform_vtable; void grpc_iomgr_register_object(grpc_iomgr_object* obj, const char* name); @@ -65,8 +65,8 @@ bool grpc_iomgr_platform_is_any_background_poller_thread(void); /** Return true if the closure is registered into the background poller. Note * that the closure may or may not run yet when this function returns, and the * closure should not be blocking or long-running. */ -bool grpc_iomgr_platform_add_closure_to_background_poller(grpc_closure* closure, - grpc_error* error); +bool grpc_iomgr_platform_add_closure_to_background_poller( + grpc_closure* closure, grpc_error_handle error); bool grpc_iomgr_abort_on_leaks(void); diff --git a/src/core/lib/iomgr/iomgr_posix.cc b/src/core/lib/iomgr/iomgr_posix.cc index 5e778814905..0407e305cd8 100644 --- a/src/core/lib/iomgr/iomgr_posix.cc +++ b/src/core/lib/iomgr/iomgr_posix.cc @@ -59,7 +59,7 @@ static bool iomgr_platform_is_any_background_poller_thread(void) { } static bool iomgr_platform_add_closure_to_background_poller( - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, grpc_error_handle error) { return grpc_add_closure_to_background_poller(closure, error); } diff --git a/src/core/lib/iomgr/iomgr_posix_cfstream.cc b/src/core/lib/iomgr/iomgr_posix_cfstream.cc index 9db5e2235f6..78b2985142a 100644 --- a/src/core/lib/iomgr/iomgr_posix_cfstream.cc +++ b/src/core/lib/iomgr/iomgr_posix_cfstream.cc @@ -72,7 +72,7 @@ static bool apple_iomgr_platform_is_any_background_poller_thread(void) { } static bool apple_iomgr_platform_add_closure_to_background_poller( - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, grpc_error_handle error) { return false; } @@ -105,7 +105,7 @@ static bool iomgr_platform_is_any_background_poller_thread(void) { } static bool iomgr_platform_add_closure_to_background_poller( - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, grpc_error_handle error) { return grpc_add_closure_to_background_poller(closure, error); } diff --git a/src/core/lib/iomgr/iomgr_windows.cc b/src/core/lib/iomgr/iomgr_windows.cc index 728d4040818..df1207ae7d5 100644 --- a/src/core/lib/iomgr/iomgr_windows.cc +++ b/src/core/lib/iomgr/iomgr_windows.cc @@ -79,7 +79,7 @@ static bool iomgr_platform_is_any_background_poller_thread(void) { } static bool iomgr_platform_add_closure_to_background_poller( - grpc_closure* closure, grpc_error* error) { + grpc_closure* closure, grpc_error_handle error) { return false; } diff --git a/src/core/lib/iomgr/load_file.cc b/src/core/lib/iomgr/load_file.cc index 4bed6275dca..a1878229e82 100644 --- a/src/core/lib/iomgr/load_file.cc +++ b/src/core/lib/iomgr/load_file.cc @@ -30,14 +30,14 @@ #include "src/core/lib/gpr/string.h" #include "src/core/lib/iomgr/block_annotate.h" -grpc_error* grpc_load_file(const char* filename, int add_null_terminator, - grpc_slice* output) { +grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator, + grpc_slice* output) { unsigned char* contents = nullptr; size_t contents_size = 0; grpc_slice result = grpc_empty_slice(); FILE* file; size_t bytes_read = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; GRPC_SCHEDULING_START_BLOCKING_REGION; file = fopen(filename, "rb"); @@ -67,7 +67,7 @@ end: *output = result; if (file != nullptr) fclose(file); if (error != GRPC_ERROR_NONE) { - grpc_error* error_out = + grpc_error_handle error_out = grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failed to load file", &error, 1), GRPC_ERROR_STR_FILENAME, diff --git a/src/core/lib/iomgr/load_file.h b/src/core/lib/iomgr/load_file.h index d7f8175aaea..a0206e21a35 100644 --- a/src/core/lib/iomgr/load_file.h +++ b/src/core/lib/iomgr/load_file.h @@ -29,7 +29,7 @@ /* Loads the content of a file into a slice. add_null_terminator will add a NULL terminator if non-zero. */ -grpc_error* grpc_load_file(const char* filename, int add_null_terminator, - grpc_slice* output); +grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator, + grpc_slice* output); #endif /* GRPC_CORE_LIB_IOMGR_LOAD_FILE_H */ diff --git a/src/core/lib/iomgr/lockfree_event.cc b/src/core/lib/iomgr/lockfree_event.cc index b3fd8e0b63f..81a0812721a 100644 --- a/src/core/lib/iomgr/lockfree_event.cc +++ b/src/core/lib/iomgr/lockfree_event.cc @@ -77,7 +77,7 @@ void LockfreeEvent::DestroyEvent() { do { curr = gpr_atm_no_barrier_load(&state_); if (curr & kShutdownBit) { - GRPC_ERROR_UNREF((grpc_error*)(curr & ~kShutdownBit)); + GRPC_ERROR_UNREF((grpc_error_handle)(curr & ~kShutdownBit)); } else { GPR_ASSERT(curr == kClosureNotReady || curr == kClosureReady); } @@ -139,8 +139,8 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) { contains a pointer to the shutdown-error). If the fd is shutdown, schedule the closure with the shutdown error */ if ((curr & kShutdownBit) > 0) { - grpc_error* shutdown_err = - reinterpret_cast(curr & ~kShutdownBit); + grpc_error_handle shutdown_err = + reinterpret_cast(curr & ~kShutdownBit); ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "FD Shutdown", &shutdown_err, 1)); @@ -159,7 +159,7 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) { GPR_UNREACHABLE_CODE(return ); } -bool LockfreeEvent::SetShutdown(grpc_error* shutdown_error) { +bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) { gpr_atm new_state = reinterpret_cast(shutdown_error) | kShutdownBit; while (true) { diff --git a/src/core/lib/iomgr/lockfree_event.h b/src/core/lib/iomgr/lockfree_event.h index f7e855409f6..944f364b422 100644 --- a/src/core/lib/iomgr/lockfree_event.h +++ b/src/core/lib/iomgr/lockfree_event.h @@ -56,7 +56,7 @@ class LockfreeEvent { // Sets the shutdown state. If a closure had been provided by NotifyOn and has // not yet been scheduled, it will be scheduled with \a shutdown_error. - bool SetShutdown(grpc_error* shutdown_error); + bool SetShutdown(grpc_error_handle shutdown_error); // Signals that the event has been received. void SetReady(); diff --git a/src/core/lib/iomgr/parse_address.cc b/src/core/lib/iomgr/parse_address.cc index 113a5e8d387..8531ed5d4c9 100644 --- a/src/core/lib/iomgr/parse_address.cc +++ b/src/core/lib/iomgr/parse_address.cc @@ -52,7 +52,7 @@ bool grpc_parse_unix(const grpc_core::URI& uri, uri.scheme().c_str()); return false; } - grpc_error* error = + grpc_error_handle error = grpc_core::UnixSockaddrPopulate(uri.path(), resolved_addr); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "%s", grpc_error_string(error)); @@ -69,7 +69,7 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri, uri.scheme().c_str()); return false; } - grpc_error* error = + grpc_error_handle error = grpc_core::UnixAbstractSockaddrPopulate(uri.path(), resolved_addr); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "%s", grpc_error_string(error)); @@ -81,8 +81,8 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri, namespace grpc_core { -grpc_error* UnixSockaddrPopulate(absl::string_view path, - grpc_resolved_address* resolved_addr) { +grpc_error_handle UnixSockaddrPopulate(absl::string_view path, + grpc_resolved_address* resolved_addr) { struct sockaddr_un* un = reinterpret_cast(resolved_addr->addr); const size_t maxlen = sizeof(un->sun_path) - 1; @@ -99,8 +99,8 @@ grpc_error* UnixSockaddrPopulate(absl::string_view path, return GRPC_ERROR_NONE; } -grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path, - grpc_resolved_address* resolved_addr) { +grpc_error_handle UnixAbstractSockaddrPopulate( + absl::string_view path, grpc_resolved_address* resolved_addr) { struct sockaddr_un* un = reinterpret_cast(resolved_addr->addr); const size_t maxlen = sizeof(un->sun_path) - 1; @@ -134,12 +134,12 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& /* uri */, namespace grpc_core { -grpc_error* UnixSockaddrPopulate(absl::string_view /* path */, - grpc_resolved_address* /* resolved_addr */) { +grpc_error_handle UnixSockaddrPopulate( + absl::string_view /* path */, grpc_resolved_address* /* resolved_addr */) { abort(); } -grpc_error* UnixAbstractSockaddrPopulate( +grpc_error_handle UnixAbstractSockaddrPopulate( absl::string_view /* path */, grpc_resolved_address* /* resolved_addr */) { abort(); } diff --git a/src/core/lib/iomgr/parse_address.h b/src/core/lib/iomgr/parse_address.h index 870afefa4eb..43e5cc0e927 100644 --- a/src/core/lib/iomgr/parse_address.h +++ b/src/core/lib/iomgr/parse_address.h @@ -64,13 +64,13 @@ uint16_t grpc_strhtons(const char* port); namespace grpc_core { /** Populate \a resolved_addr to be a unix socket at |path| */ -grpc_error* UnixSockaddrPopulate(absl::string_view path, - grpc_resolved_address* resolved_addr); +grpc_error_handle UnixSockaddrPopulate(absl::string_view path, + grpc_resolved_address* resolved_addr); /** Populate \a resolved_addr to be a unix socket in the abstract namespace * at |path| */ -grpc_error* UnixAbstractSockaddrPopulate(absl::string_view path, - grpc_resolved_address* resolved_addr); +grpc_error_handle UnixAbstractSockaddrPopulate( + absl::string_view path, grpc_resolved_address* resolved_addr); } // namespace grpc_core diff --git a/src/core/lib/iomgr/pollset.cc b/src/core/lib/iomgr/pollset.cc index ebfef1dbc76..ba2a58d85ae 100644 --- a/src/core/lib/iomgr/pollset.cc +++ b/src/core/lib/iomgr/pollset.cc @@ -42,14 +42,14 @@ void grpc_pollset_destroy(grpc_pollset* pollset) { grpc_pollset_impl->destroy(pollset); } -grpc_error* grpc_pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline) { +grpc_error_handle grpc_pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline) { return grpc_pollset_impl->work(pollset, worker, deadline); } -grpc_error* grpc_pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +grpc_error_handle grpc_pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) { return grpc_pollset_impl->kick(pollset, specific_worker); } diff --git a/src/core/lib/iomgr/pollset.h b/src/core/lib/iomgr/pollset.h index 28472b360d6..7c87a827cdf 100644 --- a/src/core/lib/iomgr/pollset.h +++ b/src/core/lib/iomgr/pollset.h @@ -44,10 +44,10 @@ typedef struct grpc_pollset_vtable { void (*init)(grpc_pollset* pollset, gpr_mu** mu); void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure); void (*destroy)(grpc_pollset* pollset); - grpc_error* (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker, - grpc_millis deadline); - grpc_error* (*kick)(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker); + grpc_error_handle (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker, + grpc_millis deadline); + grpc_error_handle (*kick)(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker); size_t (*pollset_size)(void); } grpc_pollset_vtable; @@ -86,14 +86,14 @@ void grpc_pollset_destroy(grpc_pollset* pollset); May call grpc_closure_list_run on grpc_closure_list, without holding the pollset lock */ -grpc_error* grpc_pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline) GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline) GRPC_MUST_USE_RESULT; /* Break one polling thread out of polling work for this pollset. If specific_worker is non-NULL, then kick that worker. */ -grpc_error* grpc_pollset_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) +grpc_error_handle grpc_pollset_kick(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker) GRPC_MUST_USE_RESULT; #endif /* GRPC_CORE_LIB_IOMGR_POLLSET_H */ diff --git a/src/core/lib/iomgr/pollset_custom.cc b/src/core/lib/iomgr/pollset_custom.cc index 98c8e64e2f0..62c4b397dd0 100644 --- a/src/core/lib/iomgr/pollset_custom.cc +++ b/src/core/lib/iomgr/pollset_custom.cc @@ -63,9 +63,9 @@ static void pollset_destroy(grpc_pollset* pollset) { gpr_mu_destroy(&pollset->mu); } -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** /*worker_hdl*/, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** /*worker_hdl*/, + grpc_millis deadline) { GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); gpr_mu_unlock(&pollset->mu); grpc_millis now = grpc_core::ExecCtx::Get()->Now(); @@ -87,8 +87,8 @@ static grpc_error* pollset_work(grpc_pollset* pollset, return GRPC_ERROR_NONE; } -static grpc_error* pollset_kick(grpc_pollset* /*pollset*/, - grpc_pollset_worker* /*specific_worker*/) { +static grpc_error_handle pollset_kick( + grpc_pollset* /*pollset*/, grpc_pollset_worker* /*specific_worker*/) { GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); poller_vtable->kick(); return GRPC_ERROR_NONE; diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index 184c330cf7c..f8758a3f73e 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -106,9 +106,9 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { static void pollset_destroy(grpc_pollset* pollset) {} -static grpc_error* pollset_work(grpc_pollset* pollset, - grpc_pollset_worker** worker_hdl, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* pollset, + grpc_pollset_worker** worker_hdl, + grpc_millis deadline) { grpc_pollset_worker worker; if (worker_hdl) *worker_hdl = &worker; @@ -183,8 +183,8 @@ done: return GRPC_ERROR_NONE; } -static grpc_error* pollset_kick(grpc_pollset* p, - grpc_pollset_worker* specific_worker) { +static grpc_error_handle pollset_kick(grpc_pollset* p, + grpc_pollset_worker* specific_worker) { bool should_kick_global = false; if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { diff --git a/src/core/lib/iomgr/python_util.h b/src/core/lib/iomgr/python_util.h index 05d72a58ad0..10c335b1741 100644 --- a/src/core/lib/iomgr/python_util.h +++ b/src/core/lib/iomgr/python_util.h @@ -29,7 +29,7 @@ // They are easier to define here (rather than in Cython) // because Cython doesn't handle #defines well. -inline grpc_error* grpc_socket_error(char* error) { +inline grpc_error_handle grpc_socket_error(char* error) { return grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); diff --git a/src/core/lib/iomgr/resolve_address.cc b/src/core/lib/iomgr/resolve_address.cc index 7479836df74..83c6aacff7f 100644 --- a/src/core/lib/iomgr/resolve_address.cc +++ b/src/core/lib/iomgr/resolve_address.cc @@ -42,9 +42,9 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses* addresses) { gpr_free(addresses); } -grpc_error* grpc_blocking_resolve_address(const char* name, - const char* default_port, - grpc_resolved_addresses** addresses) { +grpc_error_handle grpc_blocking_resolve_address( + const char* name, const char* default_port, + grpc_resolved_addresses** addresses) { return grpc_resolve_address_impl->blocking_resolve_address(name, default_port, addresses); } diff --git a/src/core/lib/iomgr/resolve_address.h b/src/core/lib/iomgr/resolve_address.h index 025a141b4a7..112d0ac5e27 100644 --- a/src/core/lib/iomgr/resolve_address.h +++ b/src/core/lib/iomgr/resolve_address.h @@ -54,9 +54,9 @@ typedef struct grpc_address_resolver_vtable { grpc_pollset_set* interested_parties, grpc_closure* on_done, grpc_resolved_addresses** addresses); - grpc_error* (*blocking_resolve_address)(const char* name, - const char* default_port, - grpc_resolved_addresses** addresses); + grpc_error_handle (*blocking_resolve_address)( + const char* name, const char* default_port, + grpc_resolved_addresses** addresses); } grpc_address_resolver_vtable; void grpc_set_resolver_impl(grpc_address_resolver_vtable* vtable); @@ -74,8 +74,8 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses* addresses); /* Resolve addr in a blocking fashion. On success, result must be freed with grpc_resolved_addresses_destroy. */ -grpc_error* grpc_blocking_resolve_address(const char* name, - const char* default_port, - grpc_resolved_addresses** addresses); +grpc_error_handle grpc_blocking_resolve_address( + const char* name, const char* default_port, + grpc_resolved_addresses** addresses); #endif /* GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_H */ diff --git a/src/core/lib/iomgr/resolve_address_custom.cc b/src/core/lib/iomgr/resolve_address_custom.cc index 5ddd4523ce7..ed08b2f6a03 100644 --- a/src/core/lib/iomgr/resolve_address_custom.cc +++ b/src/core/lib/iomgr/resolve_address_custom.cc @@ -53,7 +53,7 @@ static int retry_named_port_failure(grpc_custom_resolver* r, if (r->port == svc[i][0]) { r->port = svc[i][1]; if (res) { - grpc_error* error = resolve_address_vtable->resolve( + grpc_error_handle error = resolve_address_vtable->resolve( r->host.c_str(), r->port.c_str(), res); if (error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(error); @@ -71,7 +71,7 @@ static int retry_named_port_failure(grpc_custom_resolver* r, void grpc_custom_resolve_callback(grpc_custom_resolver* r, grpc_resolved_addresses* result, - grpc_error* error) { + grpc_error_handle error) { GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; @@ -86,9 +86,10 @@ void grpc_custom_resolve_callback(grpc_custom_resolver* r, delete r; } -static grpc_error* try_split_host_port(const char* name, - const char* default_port, - std::string* host, std::string* port) { +static grpc_error_handle try_split_host_port(const char* name, + const char* default_port, + std::string* host, + std::string* port) { /* parse name, splitting it into host and port parts */ grpc_core::SplitHostPort(name, host, port); if (host->empty()) { @@ -106,13 +107,13 @@ static grpc_error* try_split_host_port(const char* name, return GRPC_ERROR_NONE; } -static grpc_error* blocking_resolve_address_impl( +static grpc_error_handle blocking_resolve_address_impl( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); grpc_custom_resolver resolver; - grpc_error* err = + grpc_error_handle err = try_split_host_port(name, default_port, &resolver.host, &resolver.port); if (err != GRPC_ERROR_NONE) { return err; @@ -144,7 +145,7 @@ static void resolve_address_impl(const char* name, const char* default_port, GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); std::string host; std::string port; - grpc_error* err = try_split_host_port(name, default_port, &host, &port); + grpc_error_handle err = try_split_host_port(name, default_port, &host, &port); if (err != GRPC_ERROR_NONE) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, err); return; diff --git a/src/core/lib/iomgr/resolve_address_custom.h b/src/core/lib/iomgr/resolve_address_custom.h index f5f68ca32dd..5f674dd038e 100644 --- a/src/core/lib/iomgr/resolve_address_custom.h +++ b/src/core/lib/iomgr/resolve_address_custom.h @@ -29,15 +29,15 @@ typedef struct grpc_custom_resolver grpc_custom_resolver; typedef struct grpc_custom_resolver_vtable { - grpc_error* (*resolve)(const char* host, const char* port, - grpc_resolved_addresses** res); + grpc_error_handle (*resolve)(const char* host, const char* port, + grpc_resolved_addresses** res); void (*resolve_async)(grpc_custom_resolver* resolver, const char* host, const char* port); } grpc_custom_resolver_vtable; void grpc_custom_resolve_callback(grpc_custom_resolver* resolver, grpc_resolved_addresses* result, - grpc_error* error); + grpc_error_handle error); /* Internal APIs */ void grpc_custom_resolver_init(grpc_custom_resolver_vtable* impl); diff --git a/src/core/lib/iomgr/resolve_address_posix.cc b/src/core/lib/iomgr/resolve_address_posix.cc index 122dbe600f2..d0d1e0cd05d 100644 --- a/src/core/lib/iomgr/resolve_address_posix.cc +++ b/src/core/lib/iomgr/resolve_address_posix.cc @@ -42,7 +42,7 @@ #include "src/core/lib/iomgr/iomgr_internal.h" #include "src/core/lib/iomgr/unix_sockets_posix.h" -static grpc_error* posix_blocking_resolve_address( +static grpc_error_handle posix_blocking_resolve_address( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { grpc_core::ExecCtx exec_ctx; @@ -50,7 +50,7 @@ static grpc_error* posix_blocking_resolve_address( struct addrinfo *result = nullptr, *resp; int s; size_t i; - grpc_error* err; + grpc_error_handle err; std::string host; std::string port; @@ -145,7 +145,7 @@ struct request { }; /* Callback to be passed to grpc Executor to asynch-ify * grpc_blocking_resolve_address */ -static void do_request_thread(void* rp, grpc_error* /*error*/) { +static void do_request_thread(void* rp, grpc_error_handle /*error*/) { request* r = static_cast(rp); grpc_core::ExecCtx::Run( DEBUG_LOCATION, r->on_done, diff --git a/src/core/lib/iomgr/resolve_address_windows.cc b/src/core/lib/iomgr/resolve_address_windows.cc index 5d2d365d73a..7acefe59c47 100644 --- a/src/core/lib/iomgr/resolve_address_windows.cc +++ b/src/core/lib/iomgr/resolve_address_windows.cc @@ -54,7 +54,7 @@ struct request { grpc_closure* on_done; grpc_resolved_addresses** addresses; }; -static grpc_error* windows_blocking_resolve_address( +static grpc_error_handle windows_blocking_resolve_address( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { grpc_core::ExecCtx exec_ctx; @@ -62,7 +62,7 @@ static grpc_error* windows_blocking_resolve_address( struct addrinfo *result = NULL, *resp; int s; size_t i; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* parse name, splitting it into host and port parts */ std::string host; @@ -121,7 +121,7 @@ done: /* Callback to be passed to grpc_executor to asynch-ify * grpc_blocking_resolve_address */ -static void do_request_thread(void* rp, grpc_error* error) { +static void do_request_thread(void* rp, grpc_error_handle error) { request* r = (request*)rp; if (error == GRPC_ERROR_NONE) { error = diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc index dcbd5089bac..a4f4107d42f 100644 --- a/src/core/lib/iomgr/resource_quota.cc +++ b/src/core/lib/iomgr/resource_quota.cc @@ -276,7 +276,7 @@ static bool rq_reclaim_from_per_user_free_pool( grpc_resource_quota* resource_quota); static bool rq_reclaim(grpc_resource_quota* resource_quota, bool destructive); -static void rq_step(void* rq, grpc_error* /*error*/) { +static void rq_step(void* rq, grpc_error_handle /*error*/) { grpc_resource_quota* resource_quota = static_cast(rq); resource_quota->step_scheduled = false; do { @@ -484,7 +484,7 @@ static grpc_slice ru_slice_create(grpc_resource_user* resource_user, * the combiner */ -static void ru_allocate(void* ru, grpc_error* /*error*/) { +static void ru_allocate(void* ru, grpc_error_handle /*error*/) { grpc_resource_user* resource_user = static_cast(ru); if (rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION)) { @@ -493,7 +493,7 @@ static void ru_allocate(void* ru, grpc_error* /*error*/) { rulist_add_tail(resource_user, GRPC_RULIST_AWAITING_ALLOCATION); } -static void ru_add_to_free_pool(void* ru, grpc_error* /*error*/) { +static void ru_add_to_free_pool(void* ru, grpc_error_handle /*error*/) { grpc_resource_user* resource_user = static_cast(ru); if (!rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION) && @@ -518,7 +518,7 @@ static bool ru_post_reclaimer(grpc_resource_user* resource_user, return true; } -static void ru_post_benign_reclaimer(void* ru, grpc_error* /*error*/) { +static void ru_post_benign_reclaimer(void* ru, grpc_error_handle /*error*/) { grpc_resource_user* resource_user = static_cast(ru); if (!ru_post_reclaimer(resource_user, false)) return; if (!rulist_empty(resource_user->resource_quota, @@ -532,7 +532,8 @@ static void ru_post_benign_reclaimer(void* ru, grpc_error* /*error*/) { rulist_add_tail(resource_user, GRPC_RULIST_RECLAIMER_BENIGN); } -static void ru_post_destructive_reclaimer(void* ru, grpc_error* /*error*/) { +static void ru_post_destructive_reclaimer(void* ru, + grpc_error_handle /*error*/) { grpc_resource_user* resource_user = static_cast(ru); if (!ru_post_reclaimer(resource_user, true)) return; if (!rulist_empty(resource_user->resource_quota, @@ -548,7 +549,7 @@ static void ru_post_destructive_reclaimer(void* ru, grpc_error* /*error*/) { rulist_add_tail(resource_user, GRPC_RULIST_RECLAIMER_DESTRUCTIVE); } -static void ru_shutdown(void* ru, grpc_error* /*error*/) { +static void ru_shutdown(void* ru, grpc_error_handle /*error*/) { if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) { gpr_log(GPR_INFO, "RU shutdown %p", ru); } @@ -568,7 +569,7 @@ static void ru_shutdown(void* ru, grpc_error* /*error*/) { gpr_mu_unlock(&resource_user->mu); } -static void ru_destroy(void* ru, grpc_error* /*error*/) { +static void ru_destroy(void* ru, grpc_error_handle /*error*/) { grpc_resource_user* resource_user = static_cast(ru); GPR_ASSERT(gpr_atm_no_barrier_load(&resource_user->refs) == 0); // Free all the remaining thread quota @@ -601,7 +602,7 @@ static void ru_alloc_slices( } } -static void ru_allocated_slices(void* arg, grpc_error* error) { +static void ru_allocated_slices(void* arg, grpc_error_handle error) { grpc_resource_user_slice_allocator* slice_allocator = static_cast(arg); if (error == GRPC_ERROR_NONE) ru_alloc_slices(slice_allocator); @@ -619,7 +620,7 @@ struct rq_resize_args { grpc_resource_quota* resource_quota; grpc_closure closure; }; -static void rq_resize(void* args, grpc_error* /*error*/) { +static void rq_resize(void* args, grpc_error_handle /*error*/) { rq_resize_args* a = static_cast(args); int64_t delta = a->size - a->resource_quota->size; a->resource_quota->size += delta; @@ -630,7 +631,7 @@ static void rq_resize(void* args, grpc_error* /*error*/) { gpr_free(a); } -static void rq_reclamation_done(void* rq, grpc_error* /*error*/) { +static void rq_reclamation_done(void* rq, grpc_error_handle /*error*/) { grpc_resource_quota* resource_quota = static_cast(rq); resource_quota->reclaiming = false; rq_step_sched(resource_quota); diff --git a/src/core/lib/iomgr/sockaddr_utils.cc b/src/core/lib/iomgr/sockaddr_utils.cc index 7a99d5e6462..a4c11358df5 100644 --- a/src/core/lib/iomgr/sockaddr_utils.cc +++ b/src/core/lib/iomgr/sockaddr_utils.cc @@ -198,8 +198,8 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr, return out; } -grpc_error* grpc_string_to_sockaddr(grpc_resolved_address* out, - const char* addr, int port) { +grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out, + const char* addr, int port) { memset(out, 0, sizeof(grpc_resolved_address)); grpc_sockaddr_in6* addr6 = reinterpret_cast(out->addr); grpc_sockaddr_in* addr4 = reinterpret_cast(out->addr); diff --git a/src/core/lib/iomgr/sockaddr_utils.h b/src/core/lib/iomgr/sockaddr_utils.h index 6d5430389f4..871ea217ad8 100644 --- a/src/core/lib/iomgr/sockaddr_utils.h +++ b/src/core/lib/iomgr/sockaddr_utils.h @@ -68,8 +68,8 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* addr, // Newer form of grpc_string_to_sockaddr which returns an error instead of // crashing if \a addr is not IPv6/IPv6 -grpc_error* grpc_string_to_sockaddr(grpc_resolved_address* out, - const char* addr, int port); +grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out, + const char* addr, int port); /* Returns the URI string corresponding to \a addr */ std::string grpc_sockaddr_to_uri(const grpc_resolved_address* addr); diff --git a/src/core/lib/iomgr/socket_utils_common_posix.cc b/src/core/lib/iomgr/socket_utils_common_posix.cc index 45233bc3268..f290572c45d 100644 --- a/src/core/lib/iomgr/socket_utils_common_posix.cc +++ b/src/core/lib/iomgr/socket_utils_common_posix.cc @@ -53,7 +53,7 @@ #include "src/core/lib/iomgr/sockaddr_utils.h" /* set a socket to use zerocopy */ -grpc_error* grpc_set_socket_zerocopy(int fd) { +grpc_error_handle grpc_set_socket_zerocopy(int fd) { #ifdef GRPC_LINUX_ERRQUEUE const int enable = 1; auto err = setsockopt(fd, SOL_SOCKET, SO_ZEROCOPY, &enable, sizeof(enable)); @@ -68,7 +68,7 @@ grpc_error* grpc_set_socket_zerocopy(int fd) { } /* set a socket to non blocking mode */ -grpc_error* grpc_set_socket_nonblocking(int fd, int non_blocking) { +grpc_error_handle grpc_set_socket_nonblocking(int fd, int non_blocking) { int oldflags = fcntl(fd, F_GETFL, 0); if (oldflags < 0) { return GRPC_OS_ERROR(errno, "fcntl"); @@ -87,7 +87,7 @@ grpc_error* grpc_set_socket_nonblocking(int fd, int non_blocking) { return GRPC_ERROR_NONE; } -grpc_error* grpc_set_socket_no_sigpipe_if_possible(int fd) { +grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd) { #ifdef GRPC_HAVE_SO_NOSIGPIPE int val = 1; int newval; @@ -108,7 +108,7 @@ grpc_error* grpc_set_socket_no_sigpipe_if_possible(int fd) { return GRPC_ERROR_NONE; } -grpc_error* grpc_set_socket_ip_pktinfo_if_possible(int fd) { +grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd) { // Use conditionally-important parameter to avoid warning (void)fd; #ifdef GRPC_HAVE_IP_PKTINFO @@ -121,7 +121,7 @@ grpc_error* grpc_set_socket_ip_pktinfo_if_possible(int fd) { return GRPC_ERROR_NONE; } -grpc_error* grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) { +grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) { // Use conditionally-important parameter to avoid warning (void)fd; #ifdef GRPC_HAVE_IPV6_RECVPKTINFO @@ -134,14 +134,14 @@ grpc_error* grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) { return GRPC_ERROR_NONE; } -grpc_error* grpc_set_socket_sndbuf(int fd, int buffer_size_bytes) { +grpc_error_handle grpc_set_socket_sndbuf(int fd, int buffer_size_bytes) { return 0 == setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buffer_size_bytes, sizeof(buffer_size_bytes)) ? GRPC_ERROR_NONE : GRPC_OS_ERROR(errno, "setsockopt(SO_SNDBUF)"); } -grpc_error* grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes) { +grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes) { return 0 == setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buffer_size_bytes, sizeof(buffer_size_bytes)) ? GRPC_ERROR_NONE @@ -149,7 +149,7 @@ grpc_error* grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes) { } /* set a socket to close on exec */ -grpc_error* grpc_set_socket_cloexec(int fd, int close_on_exec) { +grpc_error_handle grpc_set_socket_cloexec(int fd, int close_on_exec) { int oldflags = fcntl(fd, F_GETFD, 0); if (oldflags < 0) { return GRPC_OS_ERROR(errno, "fcntl"); @@ -169,7 +169,7 @@ grpc_error* grpc_set_socket_cloexec(int fd, int close_on_exec) { } /* set a socket to reuse old addresses */ -grpc_error* grpc_set_socket_reuse_addr(int fd, int reuse) { +grpc_error_handle grpc_set_socket_reuse_addr(int fd, int reuse) { int val = (reuse != 0); int newval; socklen_t intlen = sizeof(newval); @@ -187,7 +187,7 @@ grpc_error* grpc_set_socket_reuse_addr(int fd, int reuse) { } /* set a socket to reuse old addresses */ -grpc_error* grpc_set_socket_reuse_port(int fd, int reuse) { +grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse) { #ifndef SO_REUSEPORT return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "SO_REUSEPORT unavailable on compiling system"); @@ -232,7 +232,7 @@ bool grpc_is_socket_reuse_port_supported() { } /* disable nagle */ -grpc_error* grpc_set_socket_low_latency(int fd, int low_latency) { +grpc_error_handle grpc_set_socket_low_latency(int fd, int low_latency) { int val = (low_latency != 0); int newval; socklen_t intlen = sizeof(newval); @@ -297,7 +297,7 @@ void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client) { } /* Set TCP_USER_TIMEOUT */ -grpc_error* grpc_set_socket_tcp_user_timeout( +grpc_error_handle grpc_set_socket_tcp_user_timeout( int fd, const grpc_channel_args* channel_args, bool is_client) { // Use conditionally-important parameter to avoid warning (void)fd; @@ -388,7 +388,8 @@ grpc_error* grpc_set_socket_tcp_user_timeout( } /* set a socket using a grpc_socket_mutator */ -grpc_error* grpc_set_socket_with_mutator(int fd, grpc_socket_mutator* mutator) { +grpc_error_handle grpc_set_socket_with_mutator(int fd, + grpc_socket_mutator* mutator) { GPR_ASSERT(mutator); if (!grpc_socket_mutator_mutate_fd(mutator, fd)) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("grpc_socket_mutator failed."); @@ -396,8 +397,8 @@ grpc_error* grpc_set_socket_with_mutator(int fd, grpc_socket_mutator* mutator) { return GRPC_ERROR_NONE; } -grpc_error* grpc_apply_socket_mutator_in_args(int fd, - const grpc_channel_args* args) { +grpc_error_handle grpc_apply_socket_mutator_in_args( + int fd, const grpc_channel_args* args) { const grpc_arg* socket_mutator_arg = grpc_channel_args_find(args, GRPC_ARG_SOCKET_MUTATOR); if (socket_mutator_arg == nullptr) { @@ -437,16 +438,17 @@ int grpc_ipv6_loopback_available(void) { return g_ipv6_loopback_available; } -static grpc_error* error_for_fd(int fd, const grpc_resolved_address* addr) { +static grpc_error_handle error_for_fd(int fd, + const grpc_resolved_address* addr) { if (fd >= 0) return GRPC_ERROR_NONE; std::string addr_str = grpc_sockaddr_to_string(addr, false); - grpc_error* err = grpc_error_set_str( + grpc_error_handle err = grpc_error_set_str( GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(addr_str.c_str())); return err; } -grpc_error* grpc_create_dualstack_socket( +grpc_error_handle grpc_create_dualstack_socket( const grpc_resolved_address* resolved_addr, int type, int protocol, grpc_dualstack_mode* dsmode, int* newfd) { return grpc_create_dualstack_socket_using_factory( @@ -460,7 +462,7 @@ static int create_socket(grpc_socket_factory* factory, int domain, int type, : socket(domain, type, protocol); } -grpc_error* grpc_create_dualstack_socket_using_factory( +grpc_error_handle grpc_create_dualstack_socket_using_factory( grpc_socket_factory* factory, const grpc_resolved_address* resolved_addr, int type, int protocol, grpc_dualstack_mode* dsmode, int* newfd) { const grpc_sockaddr* addr = diff --git a/src/core/lib/iomgr/socket_utils_posix.h b/src/core/lib/iomgr/socket_utils_posix.h index b4dc909d1e0..13c22bc0834 100644 --- a/src/core/lib/iomgr/socket_utils_posix.h +++ b/src/core/lib/iomgr/socket_utils_posix.h @@ -45,31 +45,31 @@ int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock, int cloexec); /* set a socket to use zerocopy */ -grpc_error* grpc_set_socket_zerocopy(int fd); +grpc_error_handle grpc_set_socket_zerocopy(int fd); /* set a socket to non blocking mode */ -grpc_error* grpc_set_socket_nonblocking(int fd, int non_blocking); +grpc_error_handle grpc_set_socket_nonblocking(int fd, int non_blocking); /* set a socket to close on exec */ -grpc_error* grpc_set_socket_cloexec(int fd, int close_on_exec); +grpc_error_handle grpc_set_socket_cloexec(int fd, int close_on_exec); /* set a socket to reuse old addresses */ -grpc_error* grpc_set_socket_reuse_addr(int fd, int reuse); +grpc_error_handle grpc_set_socket_reuse_addr(int fd, int reuse); /* return true if SO_REUSEPORT is supported */ bool grpc_is_socket_reuse_port_supported(); /* disable nagle */ -grpc_error* grpc_set_socket_low_latency(int fd, int low_latency); +grpc_error_handle grpc_set_socket_low_latency(int fd, int low_latency); /* set SO_REUSEPORT */ -grpc_error* grpc_set_socket_reuse_port(int fd, int reuse); +grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse); /* Configure the default values for TCP_USER_TIMEOUT */ void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client); /* Set TCP_USER_TIMEOUT */ -grpc_error* grpc_set_socket_tcp_user_timeout( +grpc_error_handle grpc_set_socket_tcp_user_timeout( int fd, const grpc_channel_args* channel_args, bool is_client); /* Returns true if this system can create AF_INET6 sockets bound to ::1. @@ -84,28 +84,29 @@ int grpc_ipv6_loopback_available(void); /* Tries to set SO_NOSIGPIPE if available on this platform. If SO_NO_SIGPIPE is not available, returns 1. */ -grpc_error* grpc_set_socket_no_sigpipe_if_possible(int fd); +grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd); /* Tries to set IP_PKTINFO if available on this platform. If IP_PKTINFO is not available, returns 1. */ -grpc_error* grpc_set_socket_ip_pktinfo_if_possible(int fd); +grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd); /* Tries to set IPV6_RECVPKTINFO if available on this platform. If IPV6_RECVPKTINFO is not available, returns 1. */ -grpc_error* grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd); +grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd); /* Tries to set the socket's send buffer to given size. */ -grpc_error* grpc_set_socket_sndbuf(int fd, int buffer_size_bytes); +grpc_error_handle grpc_set_socket_sndbuf(int fd, int buffer_size_bytes); /* Tries to set the socket's receive buffer to given size. */ -grpc_error* grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes); +grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes); /* Tries to set the socket using a grpc_socket_mutator */ -grpc_error* grpc_set_socket_with_mutator(int fd, grpc_socket_mutator* mutator); +grpc_error_handle grpc_set_socket_with_mutator(int fd, + grpc_socket_mutator* mutator); /* Extracts the first socket mutator from args if any and applies on the fd. */ -grpc_error* grpc_apply_socket_mutator_in_args(int fd, - const grpc_channel_args* args); +grpc_error_handle grpc_apply_socket_mutator_in_args( + int fd, const grpc_channel_args* args); /* An enum to keep track of IPv4/IPv6 socket modes. @@ -149,14 +150,13 @@ int grpc_set_socket_dualstack(int fd); IPv4, so that bind() or connect() see the correct family. Also, it's important to distinguish between DUALSTACK and IPV6 when listening on the [::] wildcard address. */ -grpc_error* grpc_create_dualstack_socket(const grpc_resolved_address* addr, - int type, int protocol, - grpc_dualstack_mode* dsmode, - int* newfd); +grpc_error_handle grpc_create_dualstack_socket( + const grpc_resolved_address* addr, int type, int protocol, + grpc_dualstack_mode* dsmode, int* newfd); /* Same as grpc_create_dualstack_socket(), but use the given socket factory (if non-null) to create the socket, rather than calling socket() directly. */ -grpc_error* grpc_create_dualstack_socket_using_factory( +grpc_error_handle grpc_create_dualstack_socket_using_factory( grpc_socket_factory* factory, const grpc_resolved_address* addr, int type, int protocol, grpc_dualstack_mode* dsmode, int* newfd); diff --git a/src/core/lib/iomgr/tcp_client_cfstream.cc b/src/core/lib/iomgr/tcp_client_cfstream.cc index d0be97ae1fb..12bada756ab 100644 --- a/src/core/lib/iomgr/tcp_client_cfstream.cc +++ b/src/core/lib/iomgr/tcp_client_cfstream.cc @@ -78,7 +78,7 @@ static void CFStreamConnectCleanup(CFStreamConnect* connect) { delete connect; } -static void OnAlarm(void* arg, grpc_error* error) { +static void OnAlarm(void* arg, grpc_error_handle error) { CFStreamConnect* connect = static_cast(arg); if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%p", connect, error); @@ -93,13 +93,13 @@ static void OnAlarm(void* arg, grpc_error* error) { if (done) { CFStreamConnectCleanup(connect); } else { - grpc_error* error = + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"); grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error); } } -static void OnOpen(void* arg, grpc_error* error) { +static void OnOpen(void* arg, grpc_error_handle error) { CFStreamConnect* connect = static_cast(arg); if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%p", connect, error); diff --git a/src/core/lib/iomgr/tcp_client_custom.cc b/src/core/lib/iomgr/tcp_client_custom.cc index 046380c3ab5..a54bfd0e3b3 100644 --- a/src/core/lib/iomgr/tcp_client_custom.cc +++ b/src/core/lib/iomgr/tcp_client_custom.cc @@ -59,7 +59,7 @@ static void custom_tcp_connect_cleanup(grpc_custom_tcp_connect* connect) { static void custom_close_callback(grpc_custom_socket* /*socket*/) {} -static void on_alarm(void* acp, grpc_error* error) { +static void on_alarm(void* acp, grpc_error_handle error) { int done; grpc_custom_socket* socket = static_cast(acp); grpc_custom_tcp_connect* connect = socket->connector; @@ -81,7 +81,7 @@ static void on_alarm(void* acp, grpc_error* error) { } static void custom_connect_callback_internal(grpc_custom_socket* socket, - grpc_error* error) { + grpc_error_handle error) { grpc_custom_tcp_connect* connect = socket->connector; int done; grpc_closure* closure = connect->closure; @@ -99,7 +99,7 @@ static void custom_connect_callback_internal(grpc_custom_socket* socket, } static void custom_connect_callback(grpc_custom_socket* socket, - grpc_error* error) { + grpc_error_handle error) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; if (grpc_core::ExecCtx::Get() == nullptr) { /* If we are being run on a thread which does not have an exec_ctx created diff --git a/src/core/lib/iomgr/tcp_client_posix.cc b/src/core/lib/iomgr/tcp_client_posix.cc index 49e8854819e..e78a5ad399f 100644 --- a/src/core/lib/iomgr/tcp_client_posix.cc +++ b/src/core/lib/iomgr/tcp_client_posix.cc @@ -64,9 +64,10 @@ struct async_connect { grpc_channel_args* channel_args; }; -static grpc_error* prepare_socket(const grpc_resolved_address* addr, int fd, - const grpc_channel_args* channel_args) { - grpc_error* err = GRPC_ERROR_NONE; +static grpc_error_handle prepare_socket(const grpc_resolved_address* addr, + int fd, + const grpc_channel_args* channel_args) { + grpc_error_handle err = GRPC_ERROR_NONE; GPR_ASSERT(fd >= 0); @@ -99,7 +100,7 @@ done: return err; } -static void tc_on_alarm(void* acp, grpc_error* error) { +static void tc_on_alarm(void* acp, grpc_error_handle error) { int done; async_connect* ac = static_cast(acp); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { @@ -126,7 +127,7 @@ grpc_endpoint* grpc_tcp_client_create_from_fd( return grpc_tcp_create(fd, channel_args, addr_str); } -static void on_writable(void* acp, grpc_error* error) { +static void on_writable(void* acp, grpc_error_handle error) { async_connect* ac = static_cast(acp); int so_error = 0; socklen_t so_error_size; @@ -242,12 +243,11 @@ finish: grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error); } -grpc_error* grpc_tcp_client_prepare_fd(const grpc_channel_args* channel_args, - const grpc_resolved_address* addr, - grpc_resolved_address* mapped_addr, - int* fd) { +grpc_error_handle grpc_tcp_client_prepare_fd( + const grpc_channel_args* channel_args, const grpc_resolved_address* addr, + grpc_resolved_address* mapped_addr, int* fd) { grpc_dualstack_mode dsmode; - grpc_error* error; + grpc_error_handle error; *fd = -1; /* Use dualstack sockets where available. Set mapped to v6 or v4 mapped to v6. */ @@ -293,7 +293,7 @@ void grpc_tcp_client_create_from_prepared_fd( return; } if (errno != EWOULDBLOCK && errno != EINPROGRESS) { - grpc_error* error = GRPC_OS_ERROR(errno, "connect"); + grpc_error_handle error = GRPC_OS_ERROR(errno, "connect"); error = grpc_error_set_str( error, GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr))); @@ -335,7 +335,7 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep, grpc_millis deadline) { grpc_resolved_address mapped_addr; int fd = -1; - grpc_error* error; + grpc_error_handle error; *ep = nullptr; if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr, &fd)) != GRPC_ERROR_NONE) { diff --git a/src/core/lib/iomgr/tcp_client_posix.h b/src/core/lib/iomgr/tcp_client_posix.h index 6f61866fc4f..2467f3745c0 100644 --- a/src/core/lib/iomgr/tcp_client_posix.h +++ b/src/core/lib/iomgr/tcp_client_posix.h @@ -45,10 +45,9 @@ grpc_endpoint* grpc_tcp_client_create_from_fd( fd: out parameter. The new FD Returns: error, if any. Out parameters are not set on error */ -grpc_error* grpc_tcp_client_prepare_fd(const grpc_channel_args* channel_args, - const grpc_resolved_address* addr, - grpc_resolved_address* mapped_addr, - int* fd); +grpc_error_handle grpc_tcp_client_prepare_fd( + const grpc_channel_args* channel_args, const grpc_resolved_address* addr, + grpc_resolved_address* mapped_addr, int* fd); /* Connect a configured TCP client fd. diff --git a/src/core/lib/iomgr/tcp_client_windows.cc b/src/core/lib/iomgr/tcp_client_windows.cc index 061e70393d6..735cffc9aaf 100644 --- a/src/core/lib/iomgr/tcp_client_windows.cc +++ b/src/core/lib/iomgr/tcp_client_windows.cc @@ -66,7 +66,7 @@ static void async_connect_unlock_and_cleanup(async_connect* ac, if (socket != NULL) grpc_winsocket_destroy(socket); } -static void on_alarm(void* acp, grpc_error* error) { +static void on_alarm(void* acp, grpc_error_handle error) { async_connect* ac = (async_connect*)acp; gpr_mu_lock(&ac->mu); grpc_winsocket* socket = ac->socket; @@ -77,7 +77,7 @@ static void on_alarm(void* acp, grpc_error* error) { async_connect_unlock_and_cleanup(ac, socket); } -static void on_connect(void* acp, grpc_error* error) { +static void on_connect(void* acp, grpc_error_handle error) { async_connect* ac = (async_connect*)acp; grpc_endpoint** ep = ac->endpoint; GPR_ASSERT(*ep == NULL); @@ -137,7 +137,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint, GUID guid = WSAID_CONNECTEX; DWORD ioctl_num_bytes; grpc_winsocket_callback_info* info; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; async_connect* ac = NULL; *endpoint = NULL; @@ -213,7 +213,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint, failure: GPR_ASSERT(error != GRPC_ERROR_NONE); std::string target_uri = grpc_sockaddr_to_uri(addr); - grpc_error* final_error = + grpc_error_handle final_error = grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failed to connect", &error, 1), GRPC_ERROR_STR_TARGET_ADDRESS, diff --git a/src/core/lib/iomgr/tcp_custom.cc b/src/core/lib/iomgr/tcp_custom.cc index 0f45c75c0d5..a2db8d3bd75 100644 --- a/src/core/lib/iomgr/tcp_custom.cc +++ b/src/core/lib/iomgr/tcp_custom.cc @@ -122,7 +122,7 @@ static void tcp_unref(custom_tcp_endpoint* tcp) { static void tcp_ref(custom_tcp_endpoint* tcp) { gpr_ref(&tcp->refcount); } #endif -static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) { +static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error_handle error) { grpc_closure* cb = tcp->read_cb; if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp->socket, cb, cb->cb, @@ -146,7 +146,7 @@ static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) { } static void custom_read_callback(grpc_custom_socket* socket, size_t nread, - grpc_error* error) { + grpc_error_handle error) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; grpc_slice_buffer garbage; @@ -171,7 +171,7 @@ static void custom_read_callback(grpc_custom_socket* socket, size_t nread, call_read_cb(tcp, error); } -static void tcp_read_allocation_done(void* tcpp, grpc_error* error) { +static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) { custom_tcp_endpoint* tcp = static_cast(tcpp); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp->socket, @@ -213,7 +213,7 @@ static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, } static void custom_write_callback(grpc_custom_socket* socket, - grpc_error* error) { + grpc_error_handle error) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; custom_tcp_endpoint* tcp = @@ -287,7 +287,7 @@ static void endpoint_delete_from_pollset_set(grpc_endpoint* ep, (void)pollset; } -static void endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) { custom_tcp_endpoint* tcp = reinterpret_cast(ep); if (!tcp->shutting_down) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { diff --git a/src/core/lib/iomgr/tcp_custom.h b/src/core/lib/iomgr/tcp_custom.h index d32ed2b4b61..b342efba85f 100644 --- a/src/core/lib/iomgr/tcp_custom.h +++ b/src/core/lib/iomgr/tcp_custom.h @@ -40,18 +40,19 @@ typedef struct grpc_custom_socket { } grpc_custom_socket; typedef void (*grpc_custom_connect_callback)(grpc_custom_socket* socket, - grpc_error* error); + grpc_error_handle error); typedef void (*grpc_custom_write_callback)(grpc_custom_socket* socket, - grpc_error* error); + grpc_error_handle error); typedef void (*grpc_custom_read_callback)(grpc_custom_socket* socket, - size_t nread, grpc_error* error); + size_t nread, + grpc_error_handle error); typedef void (*grpc_custom_accept_callback)(grpc_custom_socket* socket, grpc_custom_socket* client, - grpc_error* error); + grpc_error_handle error); typedef void (*grpc_custom_close_callback)(grpc_custom_socket* socket); typedef struct grpc_socket_vtable { - grpc_error* (*init)(grpc_custom_socket* socket, int domain); + grpc_error_handle (*init)(grpc_custom_socket* socket, int domain); void (*connect)(grpc_custom_socket* socket, const grpc_sockaddr* addr, size_t len, grpc_custom_connect_callback cb); void (*destroy)(grpc_custom_socket* socket); @@ -61,13 +62,13 @@ typedef struct grpc_socket_vtable { grpc_custom_write_callback cb); void (*read)(grpc_custom_socket* socket, char* buffer, size_t length, grpc_custom_read_callback cb); - grpc_error* (*getpeername)(grpc_custom_socket* socket, - const grpc_sockaddr* addr, int* len); - grpc_error* (*getsockname)(grpc_custom_socket* socket, - const grpc_sockaddr* addr, int* len); - grpc_error* (*bind)(grpc_custom_socket* socket, const grpc_sockaddr* addr, - size_t len, int flags); - grpc_error* (*listen)(grpc_custom_socket* socket); + grpc_error_handle (*getpeername)(grpc_custom_socket* socket, + const grpc_sockaddr* addr, int* len); + grpc_error_handle (*getsockname)(grpc_custom_socket* socket, + const grpc_sockaddr* addr, int* len); + grpc_error_handle (*bind)(grpc_custom_socket* socket, + const grpc_sockaddr* addr, size_t len, int flags); + grpc_error_handle (*listen)(grpc_custom_socket* socket); void (*accept)(grpc_custom_socket* socket, grpc_custom_socket* client, grpc_custom_accept_callback cb); } grpc_socket_vtable; diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index 13d544eccee..8ac7a20e187 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -435,12 +435,12 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp); static gpr_atm g_uncovered_notifications_pending; static gpr_atm g_backup_poller; /* backup_poller* */ -static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error); -static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error); +static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error); +static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error_handle error); static void tcp_drop_uncovered_then_handle_write(void* arg /* grpc_tcp */, - grpc_error* error); + grpc_error_handle error); -static void done_poller(void* bp, grpc_error* /*error_ignored*/) { +static void done_poller(void* bp, grpc_error_handle /*error_ignored*/) { backup_poller* p = static_cast(bp); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "BACKUP_POLLER:%p destroy", p); @@ -449,7 +449,7 @@ static void done_poller(void* bp, grpc_error* /*error_ignored*/) { gpr_free(p); } -static void run_poller(void* bp, grpc_error* /*error_ignored*/) { +static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) { backup_poller* p = static_cast(bp); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "BACKUP_POLLER:%p run", p); @@ -560,7 +560,8 @@ static void notify_on_write(grpc_tcp* tcp) { grpc_fd_notify_on_write(tcp->em_fd, &tcp->write_done_closure); } -static void tcp_drop_uncovered_then_handle_write(void* arg, grpc_error* error) { +static void tcp_drop_uncovered_then_handle_write(void* arg, + grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg, grpc_error_string(error)); } @@ -604,7 +605,8 @@ static size_t get_target_read_size(grpc_tcp* tcp) { return sz; } -static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) { +static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error, + grpc_tcp* tcp) { return grpc_error_set_str( grpc_error_set_int( grpc_error_set_int(src_error, GRPC_ERROR_INT_FD, tcp->fd), @@ -615,10 +617,10 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) { grpc_slice_from_copied_string(tcp->peer_string.c_str())); } -static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error); -static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error); +static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error); +static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error_handle error); -static void tcp_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void tcp_shutdown(grpc_endpoint* ep, grpc_error_handle why) { grpc_tcp* tcp = reinterpret_cast(ep); ZerocopyDisableAndWaitForRemaining(tcp); grpc_fd_shutdown(tcp->em_fd, why); @@ -678,7 +680,7 @@ static void tcp_destroy(grpc_endpoint* ep) { TCP_UNREF(tcp, "destroy"); } -static void call_read_cb(grpc_tcp* tcp, grpc_error* error) { +static void call_read_cb(grpc_tcp* tcp, grpc_error_handle error) { grpc_closure* cb = tcp->read_cb; if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { @@ -850,7 +852,7 @@ static void tcp_do_read(grpc_tcp* tcp) { TCP_UNREF(tcp, "read"); } -static void tcp_read_allocation_done(void* tcpp, grpc_error* error) { +static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) { grpc_tcp* tcp = static_cast(tcpp); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp, @@ -887,7 +889,7 @@ static void tcp_continue_read(grpc_tcp* tcp) { tcp_do_read(tcp); } -static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error) { +static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) { grpc_tcp* tcp = static_cast(arg); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp, grpc_error_string(error)); @@ -958,7 +960,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg, int additional_flags = 0); /** The callback function to be invoked when we get an error on the socket. */ -static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error* error); +static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error_handle error); static TcpZerocopySendRecord* tcp_get_send_zerocopy_record( grpc_tcp* tcp, grpc_slice_buffer* buf); @@ -1213,7 +1215,8 @@ static bool process_errors(grpc_tcp* tcp) { } } -static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error* error) { +static void tcp_handle_error(void* arg /* grpc_tcp */, + grpc_error_handle error) { grpc_tcp* tcp = static_cast(arg); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp, grpc_error_string(error)); @@ -1257,7 +1260,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/, } static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { gpr_log(GPR_ERROR, "Error handling is not supported for this platform"); GPR_ASSERT(0); } @@ -1323,7 +1326,7 @@ void TcpZerocopySendRecord::UpdateOffsetForBytesSent(size_t sending_length, // returns true if done, false if pending; if returning true, *error is set static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record, - grpc_error** error) { + grpc_error_handle* error) { struct msghdr msg; struct iovec iov[MAX_WRITE_IOVEC]; msg_iovlen_type iov_size; @@ -1399,7 +1402,7 @@ static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp, } static bool tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record, - grpc_error** error) { + grpc_error_handle* error) { bool done = do_tcp_flush_zerocopy(tcp, record, error); if (done) { // Either we encountered an error, or we successfully sent all the bytes. @@ -1409,7 +1412,7 @@ static bool tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record, return done; } -static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) { +static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) { struct msghdr msg; struct iovec iov[MAX_WRITE_IOVEC]; msg_iovlen_type iov_size; @@ -1516,7 +1519,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) { } } -static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error) { +static void tcp_handle_write(void* arg /* grpc_tcp */, + grpc_error_handle error) { grpc_tcp* tcp = static_cast(arg); grpc_closure* cb; @@ -1562,7 +1566,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf, grpc_closure* cb, void* arg) { GPR_TIMER_SCOPE("tcp_write", 0); grpc_tcp* tcp = reinterpret_cast(ep); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; TcpZerocopySendRecord* zerocopy_send_record = nullptr; if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { diff --git a/src/core/lib/iomgr/tcp_server.cc b/src/core/lib/iomgr/tcp_server.cc index 046fd4979bd..8d6fefbbb20 100644 --- a/src/core/lib/iomgr/tcp_server.cc +++ b/src/core/lib/iomgr/tcp_server.cc @@ -22,9 +22,9 @@ grpc_tcp_server_vtable* grpc_tcp_server_impl; -grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server) { +grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server) { return grpc_tcp_server_impl->create(shutdown_complete, args, server); } @@ -34,9 +34,9 @@ void grpc_tcp_server_start(grpc_tcp_server* server, grpc_tcp_server_impl->start(server, pollsets, on_accept_cb, cb_arg); } -grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s, - const grpc_resolved_address* addr, - int* out_port) { +grpc_error_handle grpc_tcp_server_add_port(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* out_port) { return grpc_tcp_server_impl->add_port(s, addr, out_port); } diff --git a/src/core/lib/iomgr/tcp_server.h b/src/core/lib/iomgr/tcp_server.h index 6ba3513da5b..50ac4e74a96 100644 --- a/src/core/lib/iomgr/tcp_server.h +++ b/src/core/lib/iomgr/tcp_server.h @@ -63,14 +63,15 @@ class TcpServerFdHandler { } // namespace grpc_core typedef struct grpc_tcp_server_vtable { - grpc_error* (*create)(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server); + grpc_error_handle (*create)(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server); void (*start)(grpc_tcp_server* server, const std::vector* pollsets, grpc_tcp_server_cb on_accept_cb, void* cb_arg); - grpc_error* (*add_port)(grpc_tcp_server* s, const grpc_resolved_address* addr, - int* out_port); + grpc_error_handle (*add_port)(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* out_port); grpc_core::TcpServerFdHandler* (*create_fd_handler)(grpc_tcp_server* s); unsigned (*port_fd_count)(grpc_tcp_server* s, unsigned port_index); int (*port_fd)(grpc_tcp_server* s, unsigned port_index, unsigned fd_index); @@ -84,9 +85,9 @@ typedef struct grpc_tcp_server_vtable { /* Create a server, initially not bound to any ports. The caller owns one ref. If shutdown_complete is not NULL, it will be used by grpc_tcp_server_unref() when the ref count reaches zero. */ -grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server); +grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server); /* Start listening to bound ports */ void grpc_tcp_server_start(grpc_tcp_server* server, @@ -102,9 +103,9 @@ void grpc_tcp_server_start(grpc_tcp_server* server, but not dualstack sockets. */ /* TODO(ctiller): deprecate this, and make grpc_tcp_server_add_ports to handle all of the multiple socket port matching logic in one place */ -grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s, - const grpc_resolved_address* addr, - int* out_port); +grpc_error_handle grpc_tcp_server_add_port(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* out_port); /* Create and return a TcpServerFdHandler so that it can be used by upper layer to hand over an externally connected fd to the grpc server. */ diff --git a/src/core/lib/iomgr/tcp_server_custom.cc b/src/core/lib/iomgr/tcp_server_custom.cc index 18d74945be5..15ea093a9ad 100644 --- a/src/core/lib/iomgr/tcp_server_custom.cc +++ b/src/core/lib/iomgr/tcp_server_custom.cc @@ -80,9 +80,9 @@ struct grpc_tcp_server { grpc_resource_quota* resource_quota; }; -static grpc_error* tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server) { +static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server) { grpc_tcp_server* s = static_cast(gpr_malloc(sizeof(grpc_tcp_server))); // Let the implementation decide if so_reuseport can be enabled or not. @@ -218,7 +218,7 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) { grpc_endpoint* ep = nullptr; grpc_resolved_address peer_name; std::string peer_name_string; - grpc_error* err; + grpc_error_handle err; memset(&peer_name, 0, sizeof(grpc_resolved_address)); peer_name.len = GRPC_MAX_SOCKADDR_SIZE; @@ -246,11 +246,11 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) { static void custom_accept_callback(grpc_custom_socket* socket, grpc_custom_socket* client, - grpc_error* error); + grpc_error_handle error); static void custom_accept_callback(grpc_custom_socket* socket, grpc_custom_socket* client, - grpc_error* error) { + grpc_error_handle error) { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; grpc_tcp_listener* sp = socket->listener; @@ -275,14 +275,14 @@ static void custom_accept_callback(grpc_custom_socket* socket, } } -static grpc_error* add_socket_to_server(grpc_tcp_server* s, - grpc_custom_socket* socket, - const grpc_resolved_address* addr, - unsigned port_index, - grpc_tcp_listener** listener) { +static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, + grpc_custom_socket* socket, + const grpc_resolved_address* addr, + unsigned port_index, + grpc_tcp_listener** listener) { grpc_tcp_listener* sp = nullptr; int port = -1; - grpc_error* error; + grpc_error_handle error; grpc_resolved_address sockname_temp; // NOTE(lidiz) The last argument is "flags" which is unused by other @@ -335,9 +335,9 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, return GRPC_ERROR_NONE; } -static grpc_error* tcp_server_add_port(grpc_tcp_server* s, - const grpc_resolved_address* addr, - int* port) { +static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* port) { // This function is mostly copied from tcp_server_windows.c grpc_tcp_listener* sp = nullptr; grpc_custom_socket* socket; @@ -346,7 +346,7 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s, grpc_resolved_address* allocated_addr = nullptr; grpc_resolved_address sockname_temp; unsigned port_index = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; int family; GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); @@ -410,8 +410,9 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s, gpr_free(allocated_addr); if (error != GRPC_ERROR_NONE) { - grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Failed to add port to server", &error, 1); + grpc_error_handle error_out = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Failed to add port to server", &error, 1); GRPC_ERROR_UNREF(error); error = error_out; *port = -1; diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc index d6e13e81d15..544d460250a 100644 --- a/src/core/lib/iomgr/tcp_server_posix.cc +++ b/src/core/lib/iomgr/tcp_server_posix.cc @@ -60,9 +60,9 @@ #include "src/core/lib/iomgr/tcp_server_utils_posix.h" #include "src/core/lib/iomgr/unix_sockets_posix.h" -static grpc_error* tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server) { +static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server) { grpc_tcp_server* s = static_cast(gpr_zalloc(sizeof(grpc_tcp_server))); s->so_reuseport = grpc_is_socket_reuse_port_supported(); @@ -129,7 +129,7 @@ static void finish_shutdown(grpc_tcp_server* s) { gpr_free(s); } -static void destroyed_port(void* server, grpc_error* /*error*/) { +static void destroyed_port(void* server, grpc_error_handle /*error*/) { grpc_tcp_server* s = static_cast(server); gpr_mu_lock(&s->mu); s->destroyed_ports++; @@ -188,7 +188,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) { } /* event manager callback when reads are ready */ -static void on_read(void* arg, grpc_error* err) { +static void on_read(void* arg, grpc_error_handle err) { grpc_tcp_listener* sp = static_cast(arg); grpc_pollset* read_notifier_pollset; if (err != GRPC_ERROR_NONE) { @@ -281,18 +281,18 @@ error: } /* Treat :: or 0.0.0.0 as a family-agnostic wildcard. */ -static grpc_error* add_wildcard_addrs_to_server(grpc_tcp_server* s, - unsigned port_index, - int requested_port, - int* out_port) { +static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s, + unsigned port_index, + int requested_port, + int* out_port) { grpc_resolved_address wild4; grpc_resolved_address wild6; unsigned fd_index = 0; grpc_dualstack_mode dsmode; grpc_tcp_listener* sp = nullptr; grpc_tcp_listener* sp2 = nullptr; - grpc_error* v6_err = GRPC_ERROR_NONE; - grpc_error* v4_err = GRPC_ERROR_NONE; + grpc_error_handle v6_err = GRPC_ERROR_NONE; + grpc_error_handle v4_err = GRPC_ERROR_NONE; *out_port = -1; if (grpc_tcp_server_have_ifaddrs() && s->expand_wildcard_addrs) { @@ -337,7 +337,7 @@ static grpc_error* add_wildcard_addrs_to_server(grpc_tcp_server* s, } return GRPC_ERROR_NONE; } else { - grpc_error* root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Failed to add any wildcard listeners"); GPR_ASSERT(v6_err != GRPC_ERROR_NONE && v4_err != GRPC_ERROR_NONE); root_err = grpc_error_add_child(root_err, v6_err); @@ -346,10 +346,11 @@ static grpc_error* add_wildcard_addrs_to_server(grpc_tcp_server* s, } } -static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) { +static grpc_error_handle clone_port(grpc_tcp_listener* listener, + unsigned count) { grpc_tcp_listener* sp = nullptr; std::string addr_str; - grpc_error* err; + grpc_error_handle err; for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) { l->fd_index += count; @@ -395,16 +396,16 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) { return GRPC_ERROR_NONE; } -static grpc_error* tcp_server_add_port(grpc_tcp_server* s, - const grpc_resolved_address* addr, - int* out_port) { +static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* out_port) { grpc_tcp_listener* sp; grpc_resolved_address sockname_temp; grpc_resolved_address addr6_v4mapped; int requested_port = grpc_sockaddr_get_port(addr); unsigned port_index = 0; grpc_dualstack_mode dsmode; - grpc_error* err; + grpc_error_handle err; *out_port = -1; if (s->tail != nullptr) { port_index = s->tail->port_index + 1; diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h index 6b8a5f9f207..ed4587a34ce 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix.h +++ b/src/core/lib/iomgr/tcp_server_utils_posix.h @@ -98,26 +98,27 @@ struct grpc_tcp_server { /* If successful, add a listener to \a s for \a addr, set \a dsmode for the socket, and return the \a listener. */ -grpc_error* grpc_tcp_server_add_addr(grpc_tcp_server* s, - const grpc_resolved_address* addr, - unsigned port_index, unsigned fd_index, - grpc_dualstack_mode* dsmode, - grpc_tcp_listener** listener); +grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s, + const grpc_resolved_address* addr, + unsigned port_index, + unsigned fd_index, + grpc_dualstack_mode* dsmode, + grpc_tcp_listener** listener); /* Get all addresses assigned to network interfaces on the machine and create a listener for each. requested_port is the port to use for every listener, or 0 to select one random port that will be used for every listener. Set *out_port to the port selected. Return GRPC_ERROR_NONE only if all listeners were added. */ -grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, - unsigned port_index, - int requested_port, - int* out_port); +grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, + unsigned port_index, + int requested_port, + int* out_port); /* Prepare a recently-created socket for listening. */ -grpc_error* grpc_tcp_server_prepare_socket(grpc_tcp_server*, int fd, - const grpc_resolved_address* addr, - bool so_reuseport, int* port); +grpc_error_handle grpc_tcp_server_prepare_socket( + grpc_tcp_server*, int fd, const grpc_resolved_address* addr, + bool so_reuseport, int* port); /* Ruturn true if the platform supports ifaddrs */ bool grpc_tcp_server_have_ifaddrs(void); diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc index bd7ff9b363e..0a458736239 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc @@ -80,14 +80,15 @@ static int get_max_accept_queue_size(void) { return s_max_accept_queue_size; } -static grpc_error* add_socket_to_server(grpc_tcp_server* s, int fd, - const grpc_resolved_address* addr, - unsigned port_index, unsigned fd_index, - grpc_tcp_listener** listener) { +static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd, + const grpc_resolved_address* addr, + unsigned port_index, + unsigned fd_index, + grpc_tcp_listener** listener) { grpc_tcp_listener* sp = nullptr; int port = -1; - grpc_error* err = + grpc_error_handle err = grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port); if (err == GRPC_ERROR_NONE) { GPR_ASSERT(port > 0); @@ -123,14 +124,15 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, int fd, /* If successful, add a listener to s for addr, set *dsmode for the socket, and return the *listener. */ -grpc_error* grpc_tcp_server_add_addr(grpc_tcp_server* s, - const grpc_resolved_address* addr, - unsigned port_index, unsigned fd_index, - grpc_dualstack_mode* dsmode, - grpc_tcp_listener** listener) { +grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s, + const grpc_resolved_address* addr, + unsigned port_index, + unsigned fd_index, + grpc_dualstack_mode* dsmode, + grpc_tcp_listener** listener) { grpc_resolved_address addr4_copy; int fd; - grpc_error* err = + grpc_error_handle err = grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd); if (err != GRPC_ERROR_NONE) { return err; @@ -143,11 +145,11 @@ grpc_error* grpc_tcp_server_add_addr(grpc_tcp_server* s, } /* Prepare a recently-created socket for listening. */ -grpc_error* grpc_tcp_server_prepare_socket(grpc_tcp_server* s, int fd, - const grpc_resolved_address* addr, - bool so_reuseport, int* port) { +grpc_error_handle grpc_tcp_server_prepare_socket( + grpc_tcp_server* s, int fd, const grpc_resolved_address* addr, + bool so_reuseport, int* port) { grpc_resolved_address sockname_temp; - grpc_error* err = GRPC_ERROR_NONE; + grpc_error_handle err = GRPC_ERROR_NONE; GPR_ASSERT(fd >= 0); @@ -210,7 +212,7 @@ error: if (fd >= 0) { close(fd); } - grpc_error* ret = + grpc_error_handle ret = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Unable to configure socket", &err, 1), GRPC_ERROR_INT_FD, fd); diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc index d591f789691..ca82798be0f 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc @@ -58,12 +58,12 @@ static grpc_tcp_listener* find_listener_with_addr(grpc_tcp_server* s, } /* Bind to "::" to get a port number not used by any address. */ -static grpc_error* get_unused_port(int* port) { +static grpc_error_handle get_unused_port(int* port) { grpc_resolved_address wild; grpc_sockaddr_make_wildcard6(0, &wild); grpc_dualstack_mode dsmode; int fd; - grpc_error* err = + grpc_error_handle err = grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd); if (err != GRPC_ERROR_NONE) { return err; @@ -89,15 +89,15 @@ static grpc_error* get_unused_port(int* port) { : GRPC_ERROR_NONE; } -grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, - unsigned port_index, - int requested_port, - int* out_port) { +grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, + unsigned port_index, + int requested_port, + int* out_port) { struct ifaddrs* ifa = nullptr; struct ifaddrs* ifa_it; unsigned fd_index = 0; grpc_tcp_listener* sp = nullptr; - grpc_error* err = GRPC_ERROR_NONE; + grpc_error_handle err = GRPC_ERROR_NONE; if (requested_port == 0) { /* Note: There could be a race where some local addrs can listen on the selected port and some can't. The sane way to handle this would be to @@ -146,7 +146,7 @@ grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, } if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode, &new_sp)) != GRPC_ERROR_NONE) { - grpc_error* root_err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("Failed to add listener: ", addr_str).c_str()); err = grpc_error_add_child(root_err, err); break; diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc b/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc index 86ee14f2856..a9354b00146 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc @@ -24,10 +24,10 @@ #include "src/core/lib/iomgr/tcp_server_utils_posix.h" -grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, - unsigned port_index, - int requested_port, - int* out_port) { +grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, + unsigned port_index, + int requested_port, + int* out_port) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ifaddrs available"); } diff --git a/src/core/lib/iomgr/tcp_server_windows.cc b/src/core/lib/iomgr/tcp_server_windows.cc index c44c3a5cd77..1957f2ac074 100644 --- a/src/core/lib/iomgr/tcp_server_windows.cc +++ b/src/core/lib/iomgr/tcp_server_windows.cc @@ -101,9 +101,9 @@ struct grpc_tcp_server { /* Public function. Allocates the proper data structures to hold a grpc_tcp_server. */ -static grpc_error* tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, - grpc_tcp_server** server) { +static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, + const grpc_channel_args* args, + grpc_tcp_server** server) { grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server)); s->channel_args = grpc_channel_args_copy(args); gpr_ref_init(&s->refs, 1); @@ -120,7 +120,7 @@ static grpc_error* tcp_server_create(grpc_closure* shutdown_complete, return GRPC_ERROR_NONE; } -static void destroy_server(void* arg, grpc_error* error) { +static void destroy_server(void* arg, grpc_error_handle error) { grpc_tcp_server* s = (grpc_tcp_server*)arg; /* Now that the accepts have been aborted, we can destroy the sockets. @@ -191,11 +191,11 @@ static void tcp_server_unref(grpc_tcp_server* s) { } /* Prepare (bind) a recently-created socket for listening. */ -static grpc_error* prepare_socket(SOCKET sock, - const grpc_resolved_address* addr, - int* port) { +static grpc_error_handle prepare_socket(SOCKET sock, + const grpc_resolved_address* addr, + int* port) { grpc_resolved_address sockname_temp; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; int sockname_temp_len; error = grpc_tcp_prepare_socket(sock); @@ -249,12 +249,12 @@ static void decrement_active_ports_and_notify_locked(grpc_tcp_listener* sp) { /* In order to do an async accept, we need to create a socket first which will be the one assigned to the new incoming connection. */ -static grpc_error* start_accept_locked(grpc_tcp_listener* port) { +static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) { SOCKET sock = INVALID_SOCKET; BOOL success; DWORD addrlen = sizeof(grpc_sockaddr_in6) + 16; DWORD bytes_received = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (port->shutting_down) { return GRPC_ERROR_NONE; @@ -299,7 +299,7 @@ failure: } /* Event manager callback when reads are ready. */ -static void on_accept(void* arg, grpc_error* error) { +static void on_accept(void* arg, grpc_error_handle error) { grpc_tcp_listener* sp = (grpc_tcp_listener*)arg; SOCKET sock = sp->new_socket; grpc_winsocket_callback_info* info = &sp->socket->read_info; @@ -388,17 +388,17 @@ static void on_accept(void* arg, grpc_error* error) { gpr_mu_unlock(&sp->server->mu); } -static grpc_error* add_socket_to_server(grpc_tcp_server* s, SOCKET sock, - const grpc_resolved_address* addr, - unsigned port_index, - grpc_tcp_listener** listener) { +static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock, + const grpc_resolved_address* addr, + unsigned port_index, + grpc_tcp_listener** listener) { grpc_tcp_listener* sp = NULL; int port = -1; int status; GUID guid = WSAID_ACCEPTEX; DWORD ioctl_num_bytes; LPFN_ACCEPTEX AcceptEx; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* We need to grab the AcceptEx pointer for that port, as it may be interface-dependent. We'll cache it to avoid doing that again. */ @@ -446,9 +446,9 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, SOCKET sock, return GRPC_ERROR_NONE; } -static grpc_error* tcp_server_add_port(grpc_tcp_server* s, - const grpc_resolved_address* addr, - int* port) { +static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, + const grpc_resolved_address* addr, + int* port) { grpc_tcp_listener* sp = NULL; SOCKET sock; grpc_resolved_address addr6_v4mapped; @@ -456,7 +456,7 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s, grpc_resolved_address* allocated_addr = NULL; grpc_resolved_address sockname_temp; unsigned port_index = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (s->tail != NULL) { port_index = s->tail->port_index + 1; @@ -508,8 +508,9 @@ done: gpr_free(allocated_addr); if (error != GRPC_ERROR_NONE) { - grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Failed to add port to server", &error, 1); + grpc_error_handle error_out = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Failed to add port to server", &error, 1); GRPC_ERROR_UNREF(error); error = error_out; *port = -1; diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index e395b149265..8f64d22b1fe 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -55,7 +55,7 @@ typedef struct uv_socket_t { int pending_connections; grpc_custom_socket* accept_socket; - grpc_error* accept_error; + grpc_error_handle accept_error; grpc_custom_connect_callback connect_cb; grpc_custom_write_callback write_cb; @@ -65,11 +65,11 @@ typedef struct uv_socket_t { } uv_socket_t; -static grpc_error* tcp_error_create(const char* desc, int status) { +static grpc_error_handle tcp_error_create(const char* desc, int status) { if (status == 0) { return GRPC_ERROR_NONE; } - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc); /* All tcp errors are marked with UNAVAILABLE so that application may * choose to retry. */ error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, @@ -95,7 +95,7 @@ static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size, static void uv_read_callback(uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (nread == 0) { // Nothing happened. Wait for the next callback return; @@ -126,7 +126,7 @@ static void uv_socket_read(grpc_custom_socket* socket, char* buffer, size_t length, grpc_custom_read_callback read_cb) { uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; int status; - grpc_error* error; + grpc_error_handle error; uv_socket->read_cb = read_cb; uv_socket->read_buf = buffer; uv_socket->read_len = length; @@ -184,7 +184,8 @@ static void uv_socket_close(grpc_custom_socket* socket, uv_close((uv_handle_t*)uv_socket->handle, uv_close_callback); } -static grpc_error* uv_socket_init_helper(uv_socket_t* uv_socket, int domain) { +static grpc_error_handle uv_socket_init_helper(uv_socket_t* uv_socket, + int domain) { uv_tcp_t* tcp = (uv_tcp_t*)gpr_malloc(sizeof(uv_tcp_t)); uv_socket->handle = tcp; int status = uv_tcp_init_ex(uv_default_loop(), tcp, (unsigned int)domain); @@ -212,9 +213,10 @@ static grpc_error* uv_socket_init_helper(uv_socket_t* uv_socket, int domain) { return GRPC_ERROR_NONE; } -static grpc_error* uv_socket_init(grpc_custom_socket* socket, int domain) { +static grpc_error_handle uv_socket_init(grpc_custom_socket* socket, + int domain) { uv_socket_t* uv_socket = (uv_socket_t*)gpr_malloc(sizeof(uv_socket_t)); - grpc_error* error = uv_socket_init_helper(uv_socket, domain); + grpc_error_handle error = uv_socket_init_helper(uv_socket, domain); if (error != GRPC_ERROR_NONE) { return error; } @@ -223,18 +225,18 @@ static grpc_error* uv_socket_init(grpc_custom_socket* socket, int domain) { return GRPC_ERROR_NONE; } -static grpc_error* uv_socket_getpeername(grpc_custom_socket* socket, - const grpc_sockaddr* addr, - int* addr_len) { +static grpc_error_handle uv_socket_getpeername(grpc_custom_socket* socket, + const grpc_sockaddr* addr, + int* addr_len) { uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; int err = uv_tcp_getpeername(uv_socket->handle, (struct sockaddr*)IGNORE_CONST(addr), addr_len); return tcp_error_create("getpeername failed", err); } -static grpc_error* uv_socket_getsockname(grpc_custom_socket* socket, - const grpc_sockaddr* addr, - int* addr_len) { +static grpc_error_handle uv_socket_getsockname(grpc_custom_socket* socket, + const grpc_sockaddr* addr, + int* addr_len) { uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; int err = uv_tcp_getsockname(uv_socket->handle, (struct sockaddr*)IGNORE_CONST(addr), addr_len); @@ -247,7 +249,7 @@ static void accept_new_connection(grpc_custom_socket* socket) { return; } grpc_custom_socket* new_socket = uv_socket->accept_socket; - grpc_error* error = uv_socket->accept_error; + grpc_error_handle error = uv_socket->accept_error; uv_socket->accept_socket = nullptr; uv_socket->accept_error = GRPC_ERROR_NONE; uv_socket->pending_connections -= 1; @@ -293,16 +295,16 @@ void uv_socket_accept(grpc_custom_socket* socket, accept_new_connection(socket); } -static grpc_error* uv_socket_bind(grpc_custom_socket* socket, - const grpc_sockaddr* addr, size_t len, - int flags) { +static grpc_error_handle uv_socket_bind(grpc_custom_socket* socket, + const grpc_sockaddr* addr, size_t len, + int flags) { uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; int status = uv_tcp_bind((uv_tcp_t*)uv_socket->handle, (struct sockaddr*)addr, 0); return tcp_error_create("Failed to bind to port", status); } -static grpc_error* uv_socket_listen(grpc_custom_socket* socket) { +static grpc_error_handle uv_socket_listen(grpc_custom_socket* socket) { uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; int status = uv_listen((uv_stream_t*)uv_socket->handle, SOMAXCONN, uv_on_connect); @@ -312,7 +314,7 @@ static grpc_error* uv_socket_listen(grpc_custom_socket* socket) { static void uv_tc_on_connect(uv_connect_t* req, int status) { grpc_custom_socket* socket = (grpc_custom_socket*)req->data; uv_socket_t* uv_socket = (uv_socket_t*)socket->impl; - grpc_error* error; + grpc_error_handle error; if (status == UV_ECANCELED) { // This should only happen if the handle is already closed error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timeout occurred"); @@ -370,8 +372,8 @@ static void uv_resolve_callback(uv_getaddrinfo_t* req, int status, tcp_error_create("getaddrinfo failed", status)); } -static grpc_error* uv_resolve(const char* host, const char* port, - grpc_resolved_addresses** result) { +static grpc_error_handle uv_resolve(const char* host, const char* port, + grpc_resolved_addresses** result) { int status; uv_getaddrinfo_t req; struct addrinfo hints; @@ -403,7 +405,7 @@ static void uv_resolve_async(grpc_custom_resolver* r, const char* host, port, &hints); if (status != 0) { gpr_free(req); - grpc_error* error = tcp_error_create("getaddrinfo failed", status); + grpc_error_handle error = tcp_error_create("getaddrinfo failed", status); grpc_custom_resolve_callback(r, NULL, error); } } diff --git a/src/core/lib/iomgr/tcp_windows.cc b/src/core/lib/iomgr/tcp_windows.cc index d28a54ccf43..ef9e0ec7e14 100644 --- a/src/core/lib/iomgr/tcp_windows.cc +++ b/src/core/lib/iomgr/tcp_windows.cc @@ -53,7 +53,7 @@ extern grpc_core::TraceFlag grpc_tcp_trace; -grpc_error* grpc_tcp_set_non_block(SOCKET sock) { +grpc_error_handle grpc_tcp_set_non_block(SOCKET sock) { int status; uint32_t param = 1; DWORD ret; @@ -64,7 +64,7 @@ grpc_error* grpc_tcp_set_non_block(SOCKET sock) { : GRPC_WSA_ERROR(WSAGetLastError(), "WSAIoctl(GRPC_FIONBIO)"); } -static grpc_error* set_dualstack(SOCKET sock) { +static grpc_error_handle set_dualstack(SOCKET sock) { int status; unsigned long param = 0; status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)¶m, @@ -74,7 +74,7 @@ static grpc_error* set_dualstack(SOCKET sock) { : GRPC_WSA_ERROR(WSAGetLastError(), "setsockopt(IPV6_V6ONLY)"); } -static grpc_error* enable_socket_low_latency(SOCKET sock) { +static grpc_error_handle enable_socket_low_latency(SOCKET sock) { int status; BOOL param = TRUE; status = ::setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, @@ -86,8 +86,8 @@ static grpc_error* enable_socket_low_latency(SOCKET sock) { : GRPC_WSA_ERROR(status, "setsockopt(TCP_NODELAY)"); } -grpc_error* grpc_tcp_prepare_socket(SOCKET sock) { - grpc_error* err; +grpc_error_handle grpc_tcp_prepare_socket(SOCKET sock) { + grpc_error_handle err; err = grpc_tcp_set_non_block(sock); if (err != GRPC_ERROR_NONE) return err; err = set_dualstack(sock); @@ -123,7 +123,7 @@ typedef struct grpc_tcp { to protect ourselves when requesting a shutdown. */ gpr_mu mu; int shutting_down; - grpc_error* shutdown_error; + grpc_error_handle shutdown_error; std::string peer_string; std::string local_address; @@ -177,7 +177,7 @@ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); } #endif /* Asynchronous callback from the IOCP, or the background thread. */ -static void on_read(void* tcpp, grpc_error* error) { +static void on_read(void* tcpp, grpc_error_handle error) { grpc_tcp* tcp = (grpc_tcp*)tcpp; grpc_closure* cb = tcp->read_cb; grpc_winsocket* socket = tcp->socket; @@ -313,7 +313,7 @@ static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, } /* Asynchronous callback from the IOCP, or the background thread. */ -static void on_write(void* tcpp, grpc_error* error) { +static void on_write(void* tcpp, grpc_error_handle error) { grpc_tcp* tcp = (grpc_tcp*)tcpp; grpc_winsocket* handle = tcp->socket; grpc_winsocket_callback_info* info = &handle->write_info; @@ -399,9 +399,9 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices, connection that has its send queue filled up. But if we don't, then we can avoid doing an async write operation at all. */ if (info->wsa_error != WSAEWOULDBLOCK) { - grpc_error* error = status == 0 - ? GRPC_ERROR_NONE - : GRPC_WSA_ERROR(info->wsa_error, "WSASend"); + grpc_error_handle error = status == 0 + ? GRPC_ERROR_NONE + : GRPC_WSA_ERROR(info->wsa_error, "WSASend"); grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error); if (allocated) gpr_free(allocated); return; @@ -454,7 +454,7 @@ static void win_delete_from_pollset_set(grpc_endpoint* ep, we're not going to protect against these. However the IO Completion Port callback will happen from another thread, so we need to protect against concurrent access of the data structure in that regard. */ -static void win_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void win_shutdown(grpc_endpoint* ep, grpc_error_handle why) { grpc_tcp* tcp = (grpc_tcp*)ep; gpr_mu_lock(&tcp->mu); /* At that point, what may happen is that we're already inside the IOCP diff --git a/src/core/lib/iomgr/tcp_windows.h b/src/core/lib/iomgr/tcp_windows.h index 04ef8102b65..de3dc550f4e 100644 --- a/src/core/lib/iomgr/tcp_windows.h +++ b/src/core/lib/iomgr/tcp_windows.h @@ -44,9 +44,9 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket, grpc_channel_args* channel_args, const char* peer_string); -grpc_error* grpc_tcp_prepare_socket(SOCKET sock); +grpc_error_handle grpc_tcp_prepare_socket(SOCKET sock); -grpc_error* grpc_tcp_set_non_block(SOCKET sock); +grpc_error_handle grpc_tcp_set_non_block(SOCKET sock); #endif diff --git a/src/core/lib/iomgr/timer_custom.cc b/src/core/lib/iomgr/timer_custom.cc index 867359a28db..cb01b7ce799 100644 --- a/src/core/lib/iomgr/timer_custom.cc +++ b/src/core/lib/iomgr/timer_custom.cc @@ -30,7 +30,8 @@ static grpc_custom_timer_vtable* custom_timer_impl; -void grpc_custom_timer_callback(grpc_custom_timer* t, grpc_error* /*error*/) { +void grpc_custom_timer_callback(grpc_custom_timer* t, + grpc_error_handle /*error*/) { GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD(); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; diff --git a/src/core/lib/iomgr/timer_custom.h b/src/core/lib/iomgr/timer_custom.h index bfea8bafa69..83c3e8ddab9 100644 --- a/src/core/lib/iomgr/timer_custom.h +++ b/src/core/lib/iomgr/timer_custom.h @@ -38,6 +38,6 @@ typedef struct grpc_custom_timer_vtable { void grpc_custom_timer_init(grpc_custom_timer_vtable* impl); -void grpc_custom_timer_callback(grpc_custom_timer* t, grpc_error* error); +void grpc_custom_timer_callback(grpc_custom_timer* t, grpc_error_handle error); #endif /* GRPC_CORE_LIB_IOMGR_TIMER_CUSTOM_H */ diff --git a/src/core/lib/iomgr/timer_generic.cc b/src/core/lib/iomgr/timer_generic.cc index c4e961af995..3d2fc0061e4 100644 --- a/src/core/lib/iomgr/timer_generic.cc +++ b/src/core/lib/iomgr/timer_generic.cc @@ -247,7 +247,7 @@ static grpc_millis saturating_add(grpc_millis a, grpc_millis b) { static grpc_timer_check_result run_some_expired_timers(grpc_millis now, grpc_millis* next, - grpc_error* error); + grpc_error_handle error); static grpc_millis compute_min_deadline(timer_shard* shard) { return grpc_timer_heap_is_empty(&shard->heap) @@ -561,7 +561,8 @@ static grpc_timer* pop_one(timer_shard* shard, grpc_millis now) { /* REQUIRES: shard->mu unlocked */ static size_t pop_timers(timer_shard* shard, grpc_millis now, - grpc_millis* new_min_deadline, grpc_error* error) { + grpc_millis* new_min_deadline, + grpc_error_handle error) { size_t n = 0; grpc_timer* timer; gpr_mu_lock(&shard->mu); @@ -580,9 +581,8 @@ static size_t pop_timers(timer_shard* shard, grpc_millis now, return n; } -static grpc_timer_check_result run_some_expired_timers(grpc_millis now, - grpc_millis* next, - grpc_error* error) { +static grpc_timer_check_result run_some_expired_timers( + grpc_millis now, grpc_millis* next, grpc_error_handle error) { grpc_timer_check_result result = GRPC_TIMERS_NOT_CHECKED; #if GPR_ARCH_64 @@ -702,7 +702,7 @@ static grpc_timer_check_result timer_check(grpc_millis* next) { return GRPC_TIMERS_CHECKED_AND_EMPTY; } - grpc_error* shutdown_error = + grpc_error_handle shutdown_error = now != GRPC_MILLIS_INF_FUTURE ? GRPC_ERROR_NONE : GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutting down timer system"); diff --git a/src/core/lib/iomgr/udp_server.cc b/src/core/lib/iomgr/udp_server.cc index c2eacc5053d..493813debfa 100644 --- a/src/core/lib/iomgr/udp_server.cc +++ b/src/core/lib/iomgr/udp_server.cc @@ -83,11 +83,11 @@ class GrpcUdpListener { /* Called when data is available to read from the socket. * Return true if there is more data to read from fd. */ - void OnRead(grpc_error* error, void* do_read_arg); + void OnRead(grpc_error_handle error, void* do_read_arg); /* Called when the socket is writeable. The given closure should be scheduled * when the socket becomes blocked next time. */ - void OnCanWrite(grpc_error* error, void* do_write_arg); + void OnCanWrite(grpc_error_handle error, void* do_write_arg); /* Called when the grpc_fd is about to be orphaned (and the FD closed). */ void OnFdAboutToOrphan(); @@ -107,16 +107,16 @@ class GrpcUdpListener { private: /* event manager callback when reads are ready */ - static void on_read(void* arg, grpc_error* error); - static void on_write(void* arg, grpc_error* error); + static void on_read(void* arg, grpc_error_handle error); + static void on_write(void* arg, grpc_error_handle error); - static void do_read(void* arg, grpc_error* error); - static void do_write(void* arg, grpc_error* error); + static void do_read(void* arg, grpc_error_handle error); + static void do_write(void* arg, grpc_error_handle error); // Wrapper of grpc_fd_notify_on_write() with a grpc_closure callback // interface. - static void fd_notify_on_write_wrapper(void* arg, grpc_error* error); + static void fd_notify_on_write_wrapper(void* arg, grpc_error_handle error); - static void shutdown_fd(void* args, grpc_error* error); + static void shutdown_fd(void* args, grpc_error_handle error); int fd_; grpc_fd* emfd_; @@ -222,7 +222,7 @@ grpc_udp_server* grpc_udp_server_create(const grpc_channel_args* args) { } // static -void GrpcUdpListener::shutdown_fd(void* args, grpc_error* error) { +void GrpcUdpListener::shutdown_fd(void* args, grpc_error_handle error) { if (args == nullptr) { // No-op if shutdown args are null. return; @@ -261,7 +261,7 @@ static void finish_shutdown(grpc_udp_server* s) { delete s; } -static void destroyed_port(void* server, grpc_error* /*error*/) { +static void destroyed_port(void* server, grpc_error_handle /*error*/) { grpc_udp_server* s = static_cast(server); gpr_mu_lock(&s->mu); s->destroyed_ports++; @@ -436,7 +436,7 @@ error: } // static -void GrpcUdpListener::do_read(void* arg, grpc_error* error) { +void GrpcUdpListener::do_read(void* arg, grpc_error_handle error) { GrpcUdpListener* sp = static_cast(arg); GPR_ASSERT(error == GRPC_ERROR_NONE); /* TODO: the reason we hold server->mu here is merely to prevent fd @@ -460,12 +460,12 @@ void GrpcUdpListener::do_read(void* arg, grpc_error* error) { } // static -void GrpcUdpListener::on_read(void* arg, grpc_error* error) { +void GrpcUdpListener::on_read(void* arg, grpc_error_handle error) { GrpcUdpListener* sp = static_cast(arg); sp->OnRead(error, arg); } -void GrpcUdpListener::OnRead(grpc_error* error, void* do_read_arg) { +void GrpcUdpListener::OnRead(grpc_error_handle error, void* do_read_arg) { if (error != GRPC_ERROR_NONE) { gpr_mu_lock(&server_->mu); if (0 == --server_->active_ports && server_->shutdown) { @@ -497,7 +497,7 @@ void GrpcUdpListener::OnRead(grpc_error* error, void* do_read_arg) { // static // Wrapper of grpc_fd_notify_on_write() with a grpc_closure callback interface. void GrpcUdpListener::fd_notify_on_write_wrapper(void* arg, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { GrpcUdpListener* sp = static_cast(arg); gpr_mu_lock(sp->mutex()); if (!sp->notify_on_write_armed_) { @@ -508,7 +508,7 @@ void GrpcUdpListener::fd_notify_on_write_wrapper(void* arg, } // static -void GrpcUdpListener::do_write(void* arg, grpc_error* error) { +void GrpcUdpListener::do_write(void* arg, grpc_error_handle error) { GrpcUdpListener* sp = static_cast(arg); gpr_mu_lock(sp->mutex()); if (sp->already_shutdown_) { @@ -527,12 +527,12 @@ void GrpcUdpListener::do_write(void* arg, grpc_error* error) { } // static -void GrpcUdpListener::on_write(void* arg, grpc_error* error) { +void GrpcUdpListener::on_write(void* arg, grpc_error_handle error) { GrpcUdpListener* sp = static_cast(arg); sp->OnCanWrite(error, arg); } -void GrpcUdpListener::OnCanWrite(grpc_error* error, void* do_write_arg) { +void GrpcUdpListener::OnCanWrite(grpc_error_handle error, void* do_write_arg) { if (error != GRPC_ERROR_NONE) { gpr_mu_lock(&server_->mu); if (0 == --server_->active_ports && server_->shutdown) { @@ -630,7 +630,7 @@ int grpc_udp_server_add_port(grpc_udp_server* s, grpc_resolved_address* addr, /* Try listening on IPv6 first. */ addr = &wild6; - // TODO(rjshade): Test and propagate the returned grpc_error*: + // TODO(rjshade): Test and propagate the returned grpc_error_handle: GRPC_ERROR_UNREF(grpc_create_dualstack_socket_using_factory( s->socket_factory, addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode, &fd)); allocated_port1 = @@ -666,7 +666,7 @@ int grpc_udp_server_add_port(grpc_udp_server* s, grpc_resolved_address* addr, addr = &wild4; } - // TODO(rjshade): Test and propagate the returned grpc_error*: + // TODO(rjshade): Test and propagate the returned grpc_error_handle: GRPC_ERROR_UNREF(grpc_create_dualstack_socket_using_factory( s->socket_factory, addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode, &fd)); if (fd < 0) { diff --git a/src/core/lib/iomgr/unix_sockets_posix.cc b/src/core/lib/iomgr/unix_sockets_posix.cc index 034aa91005e..b0fa27f1a1c 100644 --- a/src/core/lib/iomgr/unix_sockets_posix.cc +++ b/src/core/lib/iomgr/unix_sockets_posix.cc @@ -42,7 +42,7 @@ void grpc_create_socketpair_if_unix(int sv[2]) { GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0); } -grpc_error* grpc_resolve_unix_domain_address( +grpc_error_handle grpc_resolve_unix_domain_address( const char* name, grpc_resolved_addresses** addresses) { *addresses = static_cast( gpr_malloc(sizeof(grpc_resolved_addresses))); @@ -52,7 +52,7 @@ grpc_error* grpc_resolve_unix_domain_address( return grpc_core::UnixSockaddrPopulate(name, (*addresses)->addrs); } -grpc_error* grpc_resolve_unix_abstract_domain_address( +grpc_error_handle grpc_resolve_unix_abstract_domain_address( const absl::string_view name, grpc_resolved_addresses** addresses) { *addresses = static_cast( gpr_malloc(sizeof(grpc_resolved_addresses))); diff --git a/src/core/lib/iomgr/unix_sockets_posix.h b/src/core/lib/iomgr/unix_sockets_posix.h index 302ac176eb2..c35423bc040 100644 --- a/src/core/lib/iomgr/unix_sockets_posix.h +++ b/src/core/lib/iomgr/unix_sockets_posix.h @@ -33,10 +33,10 @@ void grpc_create_socketpair_if_unix(int sv[2]); -grpc_error* grpc_resolve_unix_domain_address( +grpc_error_handle grpc_resolve_unix_domain_address( const char* name, grpc_resolved_addresses** addresses); -grpc_error* grpc_resolve_unix_abstract_domain_address( +grpc_error_handle grpc_resolve_unix_abstract_domain_address( absl::string_view name, grpc_resolved_addresses** addresses); int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr); diff --git a/src/core/lib/iomgr/unix_sockets_posix_noop.cc b/src/core/lib/iomgr/unix_sockets_posix_noop.cc index a1ff9170d59..c2659221f9d 100644 --- a/src/core/lib/iomgr/unix_sockets_posix_noop.cc +++ b/src/core/lib/iomgr/unix_sockets_posix_noop.cc @@ -33,14 +33,14 @@ void grpc_create_socketpair_if_unix(int /* sv */[2]) { GPR_ASSERT(0); } -grpc_error* grpc_resolve_unix_domain_address( +grpc_error_handle grpc_resolve_unix_domain_address( const char* /* name */, grpc_resolved_addresses** addresses) { *addresses = NULL; return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Unix domain sockets are not supported on Windows"); } -grpc_error* grpc_resolve_unix_abstract_domain_address( +grpc_error_handle grpc_resolve_unix_abstract_domain_address( absl::string_view, grpc_resolved_addresses** addresses) { *addresses = NULL; return GRPC_ERROR_CREATE_FROM_STATIC_STRING( diff --git a/src/core/lib/iomgr/wakeup_fd_eventfd.cc b/src/core/lib/iomgr/wakeup_fd_eventfd.cc index d68c9ada1f2..3951fe6f570 100644 --- a/src/core/lib/iomgr/wakeup_fd_eventfd.cc +++ b/src/core/lib/iomgr/wakeup_fd_eventfd.cc @@ -31,7 +31,7 @@ #include "src/core/lib/iomgr/wakeup_fd_posix.h" #include "src/core/lib/profiling/timers.h" -static grpc_error* eventfd_create(grpc_wakeup_fd* fd_info) { +static grpc_error_handle eventfd_create(grpc_wakeup_fd* fd_info) { fd_info->read_fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); fd_info->write_fd = -1; if (fd_info->read_fd < 0) { @@ -40,7 +40,7 @@ static grpc_error* eventfd_create(grpc_wakeup_fd* fd_info) { return GRPC_ERROR_NONE; } -static grpc_error* eventfd_consume(grpc_wakeup_fd* fd_info) { +static grpc_error_handle eventfd_consume(grpc_wakeup_fd* fd_info) { eventfd_t value; int err; do { @@ -52,7 +52,7 @@ static grpc_error* eventfd_consume(grpc_wakeup_fd* fd_info) { return GRPC_ERROR_NONE; } -static grpc_error* eventfd_wakeup(grpc_wakeup_fd* fd_info) { +static grpc_error_handle eventfd_wakeup(grpc_wakeup_fd* fd_info) { GPR_TIMER_SCOPE("eventfd_wakeup", 0); int err; do { diff --git a/src/core/lib/iomgr/wakeup_fd_pipe.cc b/src/core/lib/iomgr/wakeup_fd_pipe.cc index 797cd44cd1a..943d9d54e77 100644 --- a/src/core/lib/iomgr/wakeup_fd_pipe.cc +++ b/src/core/lib/iomgr/wakeup_fd_pipe.cc @@ -33,14 +33,14 @@ #include "src/core/lib/iomgr/socket_utils_posix.h" -static grpc_error* pipe_init(grpc_wakeup_fd* fd_info) { +static grpc_error_handle pipe_init(grpc_wakeup_fd* fd_info) { int pipefd[2]; int r = pipe(pipefd); if (0 != r) { gpr_log(GPR_ERROR, "pipe creation failed (%d): %s", errno, strerror(errno)); return GRPC_OS_ERROR(errno, "pipe"); } - grpc_error* err; + grpc_error_handle err; err = grpc_set_socket_nonblocking(pipefd[0], 1); if (err != GRPC_ERROR_NONE) return err; err = grpc_set_socket_nonblocking(pipefd[1], 1); @@ -50,7 +50,7 @@ static grpc_error* pipe_init(grpc_wakeup_fd* fd_info) { return GRPC_ERROR_NONE; } -static grpc_error* pipe_consume(grpc_wakeup_fd* fd_info) { +static grpc_error_handle pipe_consume(grpc_wakeup_fd* fd_info) { char buf[128]; ssize_t r; @@ -69,7 +69,7 @@ static grpc_error* pipe_consume(grpc_wakeup_fd* fd_info) { } } -static grpc_error* pipe_wakeup(grpc_wakeup_fd* fd_info) { +static grpc_error_handle pipe_wakeup(grpc_wakeup_fd* fd_info) { char c = 0; while (write(fd_info->write_fd, &c, 1) != 1 && errno == EINTR) { } diff --git a/src/core/lib/iomgr/wakeup_fd_posix.cc b/src/core/lib/iomgr/wakeup_fd_posix.cc index 3b66d6f34de..36b497b8670 100644 --- a/src/core/lib/iomgr/wakeup_fd_posix.cc +++ b/src/core/lib/iomgr/wakeup_fd_posix.cc @@ -50,15 +50,15 @@ void grpc_wakeup_fd_global_destroy(void) { wakeup_fd_vtable = nullptr; } int grpc_has_wakeup_fd(void) { return has_real_wakeup_fd; } -grpc_error* grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) { +grpc_error_handle grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) { return wakeup_fd_vtable->init(fd_info); } -grpc_error* grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) { +grpc_error_handle grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) { return wakeup_fd_vtable->consume(fd_info); } -grpc_error* grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) { +grpc_error_handle grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) { return wakeup_fd_vtable->wakeup(fd_info); } diff --git a/src/core/lib/iomgr/wakeup_fd_posix.h b/src/core/lib/iomgr/wakeup_fd_posix.h index 670c319593b..1079ce6899e 100644 --- a/src/core/lib/iomgr/wakeup_fd_posix.h +++ b/src/core/lib/iomgr/wakeup_fd_posix.h @@ -65,9 +65,9 @@ void grpc_enable_cv_wakeup_fds(int enable); typedef struct grpc_wakeup_fd grpc_wakeup_fd; typedef struct grpc_wakeup_fd_vtable { - grpc_error* (*init)(grpc_wakeup_fd* fd_info); - grpc_error* (*consume)(grpc_wakeup_fd* fd_info); - grpc_error* (*wakeup)(grpc_wakeup_fd* fd_info); + grpc_error_handle (*init)(grpc_wakeup_fd* fd_info); + grpc_error_handle (*consume)(grpc_wakeup_fd* fd_info); + grpc_error_handle (*wakeup)(grpc_wakeup_fd* fd_info); void (*destroy)(grpc_wakeup_fd* fd_info); /* Must be called before calling any other functions */ int (*check_availability)(void); @@ -83,10 +83,12 @@ extern int grpc_allow_pipe_wakeup_fd; #define GRPC_WAKEUP_FD_GET_READ_FD(fd_info) ((fd_info)->read_fd) -grpc_error* grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) GRPC_MUST_USE_RESULT; -grpc_error* grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) +grpc_error_handle grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) + GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) + GRPC_MUST_USE_RESULT; +grpc_error_handle grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) GRPC_MUST_USE_RESULT; -grpc_error* grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) GRPC_MUST_USE_RESULT; void grpc_wakeup_fd_destroy(grpc_wakeup_fd* fd_info); /* Defined in some specialized implementation's .c file, or by diff --git a/src/core/lib/json/json.h b/src/core/lib/json/json.h index 9b3e0be7bfd..fc09d3a7255 100644 --- a/src/core/lib/json/json.h +++ b/src/core/lib/json/json.h @@ -56,7 +56,7 @@ class Json { using Array = std::vector; // Parses JSON string from json_str. On error, sets *error. - static Json Parse(absl::string_view json_str, grpc_error** error); + static Json Parse(absl::string_view json_str, grpc_error_handle* error); Json() = default; diff --git a/src/core/lib/json/json_reader.cc b/src/core/lib/json/json_reader.cc index d23112e48c0..2daeadf4613 100644 --- a/src/core/lib/json/json_reader.cc +++ b/src/core/lib/json/json_reader.cc @@ -38,7 +38,7 @@ namespace { class JsonReader { public: - static grpc_error* Parse(absl::string_view input, Json* output); + static grpc_error_handle Parse(absl::string_view input, Json* output); private: enum class Status { @@ -117,7 +117,7 @@ class JsonReader { bool container_just_begun_ = false; uint16_t unicode_char_ = 0; uint16_t unicode_high_surrogate_ = 0; - std::vector errors_; + std::vector errors_; bool truncated_errors_ = false; Json root_value_; @@ -821,7 +821,7 @@ JsonReader::Status JsonReader::Run() { GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR); } -grpc_error* JsonReader::Parse(absl::string_view input, Json* output) { +grpc_error_handle JsonReader::Parse(absl::string_view input, Json* output) { JsonReader reader(input); Status status = reader.Run(); if (reader.truncated_errors_) { @@ -849,7 +849,7 @@ grpc_error* JsonReader::Parse(absl::string_view input, Json* output) { } // namespace -Json Json::Parse(absl::string_view json_str, grpc_error** error) { +Json Json::Parse(absl::string_view json_str, grpc_error_handle* error) { Json value; *error = JsonReader::Parse(json_str, &value); return value; diff --git a/src/core/lib/security/authorization/rbac_translator.cc b/src/core/lib/security/authorization/rbac_translator.cc index c9f5ac9c820..8bb5b53cad7 100644 --- a/src/core/lib/security/authorization/rbac_translator.cc +++ b/src/core/lib/security/authorization/rbac_translator.cc @@ -297,7 +297,7 @@ absl::StatusOr ParseAllowRulesArray(const Json& json, absl::StatusOr GenerateRbacPolicies( absl::string_view authz_policy) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(authz_policy, &error); if (error != GRPC_ERROR_NONE) { absl::Status status = absl::InvalidArgumentError( diff --git a/src/core/lib/security/credentials/composite/composite_credentials.cc b/src/core/lib/security/credentials/composite/composite_credentials.cc index bccc03472e3..5543ad1a244 100644 --- a/src/core/lib/security/credentials/composite/composite_credentials.cc +++ b/src/core/lib/security/credentials/composite/composite_credentials.cc @@ -36,7 +36,7 @@ /* -- Composite call credentials. -- */ -static void composite_call_metadata_cb(void* arg, grpc_error* error); +static void composite_call_metadata_cb(void* arg, grpc_error_handle error); namespace { struct grpc_composite_call_credentials_metadata_context { @@ -64,7 +64,7 @@ struct grpc_composite_call_credentials_metadata_context { }; } // namespace -static void composite_call_metadata_cb(void* arg, grpc_error* error) { +static void composite_call_metadata_cb(void* arg, grpc_error_handle error) { grpc_composite_call_credentials_metadata_context* ctx = static_cast(arg); if (error == GRPC_ERROR_NONE) { @@ -91,7 +91,7 @@ static void composite_call_metadata_cb(void* arg, grpc_error* error) { bool grpc_composite_call_credentials::get_request_metadata( grpc_polling_entity* pollent, grpc_auth_metadata_context auth_md_context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) { + grpc_error_handle* error) { grpc_composite_call_credentials_metadata_context* ctx; ctx = new grpc_composite_call_credentials_metadata_context( this, pollent, auth_md_context, md_array, on_request_metadata); @@ -112,7 +112,7 @@ bool grpc_composite_call_credentials::get_request_metadata( } void grpc_composite_call_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* md_array, grpc_error* error) { + grpc_credentials_mdelem_array* md_array, grpc_error_handle error) { for (size_t i = 0; i < inner_.size(); ++i) { inner_[i]->cancel_get_request_metadata(md_array, GRPC_ERROR_REF(error)); } diff --git a/src/core/lib/security/credentials/composite/composite_credentials.h b/src/core/lib/security/credentials/composite/composite_credentials.h index 6b9e9d114d8..86346275e75 100644 --- a/src/core/lib/security/credentials/composite/composite_credentials.h +++ b/src/core/lib/security/credentials/composite/composite_credentials.h @@ -83,10 +83,10 @@ class grpc_composite_call_credentials : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; grpc_security_level min_security_level() const override { return min_security_level_; diff --git a/src/core/lib/security/credentials/credentials.h b/src/core/lib/security/credentials/credentials.h index cf9f402be8c..b8609c58d7d 100644 --- a/src/core/lib/security/credentials/credentials.h +++ b/src/core/lib/security/credentials/credentials.h @@ -187,13 +187,13 @@ struct grpc_call_credentials grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) = 0; + grpc_error_handle* error) = 0; // Cancels a pending asynchronous operation started by // grpc_call_credentials_get_request_metadata() with the corresponding // value of \a md_array. virtual void cancel_get_request_metadata( - grpc_credentials_mdelem_array* md_array, grpc_error* error) = 0; + grpc_credentials_mdelem_array* md_array, grpc_error_handle error) = 0; virtual grpc_security_level min_security_level() const { return min_security_level_; diff --git a/src/core/lib/security/credentials/external/aws_external_account_credentials.cc b/src/core/lib/security/credentials/external/aws_external_account_credentials.cc index f8e53cb2912..c479bf067fc 100644 --- a/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/aws_external_account_credentials.cc @@ -58,7 +58,7 @@ std::string UrlEncode(const absl::string_view& s) { RefCountedPtr AwsExternalAccountCredentials::Create(Options options, std::vector scopes, - grpc_error** error) { + grpc_error_handle* error) { auto creds = MakeRefCounted( std::move(options), std::move(scopes), error); if (*error == GRPC_ERROR_NONE) { @@ -69,7 +69,7 @@ AwsExternalAccountCredentials::Create(Options options, } AwsExternalAccountCredentials::AwsExternalAccountCredentials( - Options options, std::vector scopes, grpc_error** error) + Options options, std::vector scopes, grpc_error_handle* error) : ExternalAccountCredentials(options, std::move(scopes)) { audience_ = options.audience; auto it = options.credential_source.object_value().find("environment_id"); @@ -122,7 +122,7 @@ AwsExternalAccountCredentials::AwsExternalAccountCredentials( void AwsExternalAccountCredentials::RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& /*options*/, - std::function cb) { + std::function cb) { if (ctx == nullptr) { FinishRetrieveSubjectToken( "", @@ -179,14 +179,14 @@ void AwsExternalAccountCredentials::RetrieveRegion() { } void AwsExternalAccountCredentials::OnRetrieveRegion(void* arg, - grpc_error* error) { + grpc_error_handle error) { AwsExternalAccountCredentials* self = static_cast(arg); self->OnRetrieveRegionInternal(GRPC_ERROR_REF(error)); } void AwsExternalAccountCredentials::OnRetrieveRegionInternal( - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishRetrieveSubjectToken("", error); return; @@ -228,15 +228,15 @@ void AwsExternalAccountCredentials::RetrieveRoleName() { grpc_http_request_destroy(&request.http); } -void AwsExternalAccountCredentials::OnRetrieveRoleName(void* arg, - grpc_error* error) { +void AwsExternalAccountCredentials::OnRetrieveRoleName( + void* arg, grpc_error_handle error) { AwsExternalAccountCredentials* self = static_cast(arg); self->OnRetrieveRoleNameInternal(GRPC_ERROR_REF(error)); } void AwsExternalAccountCredentials::OnRetrieveRoleNameInternal( - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishRetrieveSubjectToken("", error); return; @@ -291,15 +291,15 @@ void AwsExternalAccountCredentials::RetrieveSigningKeys() { grpc_http_request_destroy(&request.http); } -void AwsExternalAccountCredentials::OnRetrieveSigningKeys(void* arg, - grpc_error* error) { +void AwsExternalAccountCredentials::OnRetrieveSigningKeys( + void* arg, grpc_error_handle error) { AwsExternalAccountCredentials* self = static_cast(arg); self->OnRetrieveSigningKeysInternal(GRPC_ERROR_REF(error)); } void AwsExternalAccountCredentials::OnRetrieveSigningKeysInternal( - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishRetrieveSubjectToken("", error); return; @@ -354,7 +354,7 @@ void AwsExternalAccountCredentials::OnRetrieveSigningKeysInternal( } void AwsExternalAccountCredentials::BuildSubjectToken() { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (signer_ == nullptr) { cred_verification_url_ = absl::StrReplaceAll( regional_cred_verification_url_, {{"{region}", region_}}); @@ -400,7 +400,7 @@ void AwsExternalAccountCredentials::BuildSubjectToken() { } void AwsExternalAccountCredentials::FinishRetrieveSubjectToken( - std::string subject_token, grpc_error* error) { + std::string subject_token, grpc_error_handle error) { // Reset context ctx_ = nullptr; // Move object state into local variables. diff --git a/src/core/lib/security/credentials/external/aws_external_account_credentials.h b/src/core/lib/security/credentials/external/aws_external_account_credentials.h index edb7e825868..50ccf1943d3 100644 --- a/src/core/lib/security/credentials/external/aws_external_account_credentials.h +++ b/src/core/lib/security/credentials/external/aws_external_account_credentials.h @@ -28,31 +28,33 @@ namespace grpc_core { class AwsExternalAccountCredentials final : public ExternalAccountCredentials { public: static RefCountedPtr Create( - Options options, std::vector scopes, grpc_error** error); + Options options, std::vector scopes, + grpc_error_handle* error); AwsExternalAccountCredentials(Options options, std::vector scopes, - grpc_error** error); + grpc_error_handle* error); private: void RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& options, - std::function cb) override; + std::function cb) override; void RetrieveRegion(); - static void OnRetrieveRegion(void* arg, grpc_error* error); - void OnRetrieveRegionInternal(grpc_error* error); + static void OnRetrieveRegion(void* arg, grpc_error_handle error); + void OnRetrieveRegionInternal(grpc_error_handle error); void RetrieveRoleName(); - static void OnRetrieveRoleName(void* arg, grpc_error* error); - void OnRetrieveRoleNameInternal(grpc_error* error); + static void OnRetrieveRoleName(void* arg, grpc_error_handle error); + void OnRetrieveRoleNameInternal(grpc_error_handle error); void RetrieveSigningKeys(); - static void OnRetrieveSigningKeys(void* arg, grpc_error* error); - void OnRetrieveSigningKeysInternal(grpc_error* error); + static void OnRetrieveSigningKeys(void* arg, grpc_error_handle error); + void OnRetrieveSigningKeysInternal(grpc_error_handle error); void BuildSubjectToken(); - void FinishRetrieveSubjectToken(std::string subject_token, grpc_error* error); + void FinishRetrieveSubjectToken(std::string subject_token, + grpc_error_handle error); std::string audience_; @@ -72,7 +74,7 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials { std::string cred_verification_url_; HTTPRequestContext* ctx_ = nullptr; - std::function cb_ = nullptr; + std::function cb_ = nullptr; }; } // namespace grpc_core diff --git a/src/core/lib/security/credentials/external/aws_request_signer.cc b/src/core/lib/security/credentials/external/aws_request_signer.cc index af8531ee02a..b665701b023 100644 --- a/src/core/lib/security/credentials/external/aws_request_signer.cc +++ b/src/core/lib/security/credentials/external/aws_request_signer.cc @@ -66,7 +66,8 @@ AwsRequestSigner::AwsRequestSigner( std::string access_key_id, std::string secret_access_key, std::string token, std::string method, std::string url, std::string region, std::string request_payload, - std::map additional_headers, grpc_error** error) + std::map additional_headers, + grpc_error_handle* error) : access_key_id_(std::move(access_key_id)), secret_access_key_(std::move(secret_access_key)), token_(std::move(token)), diff --git a/src/core/lib/security/credentials/external/aws_request_signer.h b/src/core/lib/security/credentials/external/aws_request_signer.h index 62e112cf0f4..22c4ad67503 100644 --- a/src/core/lib/security/credentials/external/aws_request_signer.h +++ b/src/core/lib/security/credentials/external/aws_request_signer.h @@ -45,7 +45,7 @@ class AwsRequestSigner { std::string token, std::string method, std::string url, std::string region, std::string request_payload, std::map additional_headers, - grpc_error** error); + grpc_error_handle* error); // This method triggers the signing process then returns the headers of the // signed request as a map. In case there is an error, the input `error` diff --git a/src/core/lib/security/credentials/external/external_account_credentials.cc b/src/core/lib/security/credentials/external/external_account_credentials.cc index 0b9fc198829..67e46cc89ff 100644 --- a/src/core/lib/security/credentials/external/external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/external_account_credentials.cc @@ -63,7 +63,8 @@ std::string UrlEncode(const absl::string_view& s) { } // namespace RefCountedPtr ExternalAccountCredentials::Create( - const Json& json, std::vector scopes, grpc_error** error) { + const Json& json, std::vector scopes, + grpc_error_handle* error) { GPR_ASSERT(*error == GRPC_ERROR_NONE); Options options; options.type = GRPC_AUTH_JSON_TYPE_INVALID; @@ -213,14 +214,14 @@ void ExternalAccountCredentials::fetch_oauth2( ctx_ = new HTTPRequestContext(httpcli_context, pollent, deadline); metadata_req_ = metadata_req; response_cb_ = response_cb; - auto cb = [this](std::string token, grpc_error* error) { + auto cb = [this](std::string token, grpc_error_handle error) { OnRetrieveSubjectTokenInternal(token, error); }; RetrieveSubjectToken(ctx_, options_, cb); } void ExternalAccountCredentials::OnRetrieveSubjectTokenInternal( - absl::string_view subject_token, grpc_error* error) { + absl::string_view subject_token, grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishTokenFetch(error); } else { @@ -300,13 +301,15 @@ void ExternalAccountCredentials::ExchangeToken( grpc_http_request_destroy(&request.http); } -void ExternalAccountCredentials::OnExchangeToken(void* arg, grpc_error* error) { +void ExternalAccountCredentials::OnExchangeToken(void* arg, + grpc_error_handle error) { ExternalAccountCredentials* self = static_cast(arg); self->OnExchangeTokenInternal(GRPC_ERROR_REF(error)); } -void ExternalAccountCredentials::OnExchangeTokenInternal(grpc_error* error) { +void ExternalAccountCredentials::OnExchangeTokenInternal( + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishTokenFetch(error); } else { @@ -330,7 +333,7 @@ void ExternalAccountCredentials::OnExchangeTokenInternal(grpc_error* error) { } void ExternalAccountCredentials::ImpersenateServiceAccount() { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; absl::string_view response_body(ctx_->response.body, ctx_->response.body_length); Json json = Json::Parse(response_body, &error); @@ -389,14 +392,14 @@ void ExternalAccountCredentials::ImpersenateServiceAccount() { } void ExternalAccountCredentials::OnImpersenateServiceAccount( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { ExternalAccountCredentials* self = static_cast(arg); self->OnImpersenateServiceAccountInternal(GRPC_ERROR_REF(error)); } void ExternalAccountCredentials::OnImpersenateServiceAccountInternal( - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishTokenFetch(error); return; @@ -452,7 +455,7 @@ void ExternalAccountCredentials::OnImpersenateServiceAccountInternal( FinishTokenFetch(GRPC_ERROR_NONE); } -void ExternalAccountCredentials::FinishTokenFetch(grpc_error* error) { +void ExternalAccountCredentials::FinishTokenFetch(grpc_error_handle error) { GRPC_LOG_IF_ERROR("Fetch external account credentials access token", GRPC_ERROR_REF(error)); // Move object state into local variables. @@ -473,7 +476,7 @@ void ExternalAccountCredentials::FinishTokenFetch(grpc_error* error) { grpc_call_credentials* grpc_external_account_credentials_create( const char* json_string, const char* scopes_string) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json json = grpc_core::Json::Parse(json_string, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, diff --git a/src/core/lib/security/credentials/external/external_account_credentials.h b/src/core/lib/security/credentials/external/external_account_credentials.h index 0da778601ad..3c000968d69 100644 --- a/src/core/lib/security/credentials/external/external_account_credentials.h +++ b/src/core/lib/security/credentials/external/external_account_credentials.h @@ -49,7 +49,8 @@ class ExternalAccountCredentials }; static RefCountedPtr Create( - const Json& json, std::vector scopes, grpc_error** error); + const Json& json, std::vector scopes, + grpc_error_handle* error); ExternalAccountCredentials(Options options, std::vector scopes); ~ExternalAccountCredentials() override; @@ -84,7 +85,7 @@ class ExternalAccountCredentials // back. virtual void RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& options, - std::function cb) = 0; + std::function cb) = 0; private: // This method implements the common token fetch logic and it will be called @@ -95,17 +96,17 @@ class ExternalAccountCredentials grpc_millis deadline) override; void OnRetrieveSubjectTokenInternal(absl::string_view subject_token, - grpc_error* error); + grpc_error_handle error); void ExchangeToken(absl::string_view subject_token); - static void OnExchangeToken(void* arg, grpc_error* error); - void OnExchangeTokenInternal(grpc_error* error); + static void OnExchangeToken(void* arg, grpc_error_handle error); + void OnExchangeTokenInternal(grpc_error_handle error); void ImpersenateServiceAccount(); - static void OnImpersenateServiceAccount(void* arg, grpc_error* error); - void OnImpersenateServiceAccountInternal(grpc_error* error); + static void OnImpersenateServiceAccount(void* arg, grpc_error_handle error); + void OnImpersenateServiceAccountInternal(grpc_error_handle error); - void FinishTokenFetch(grpc_error* error); + void FinishTokenFetch(grpc_error_handle error); Options options_; std::vector scopes_; diff --git a/src/core/lib/security/credentials/external/file_external_account_credentials.cc b/src/core/lib/security/credentials/external/file_external_account_credentials.cc index ec2cd6087d6..d596d29414c 100644 --- a/src/core/lib/security/credentials/external/file_external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/file_external_account_credentials.cc @@ -28,7 +28,7 @@ namespace grpc_core { RefCountedPtr FileExternalAccountCredentials::Create(Options options, std::vector scopes, - grpc_error** error) { + grpc_error_handle* error) { auto creds = MakeRefCounted( std::move(options), std::move(scopes), error); if (*error == GRPC_ERROR_NONE) { @@ -39,7 +39,7 @@ FileExternalAccountCredentials::Create(Options options, } FileExternalAccountCredentials::FileExternalAccountCredentials( - Options options, std::vector scopes, grpc_error** error) + Options options, std::vector scopes, grpc_error_handle* error) : ExternalAccountCredentials(options, std::move(scopes)) { auto it = options.credential_source.object_value().find("file"); if (it == options.credential_source.object_value().end()) { @@ -92,7 +92,7 @@ FileExternalAccountCredentials::FileExternalAccountCredentials( void FileExternalAccountCredentials::RetrieveSubjectToken( HTTPRequestContext* /*ctx*/, const Options& /*options*/, - std::function cb) { + std::function cb) { struct SliceWrapper { ~SliceWrapper() { grpc_slice_unref_internal(slice); } grpc_slice slice = grpc_empty_slice(); @@ -100,7 +100,8 @@ void FileExternalAccountCredentials::RetrieveSubjectToken( SliceWrapper content_slice; // To retrieve the subject token, we read the file every time we make a // request because it may have changed since the last request. - grpc_error* error = grpc_load_file(file_.c_str(), 0, &content_slice.slice); + grpc_error_handle error = + grpc_load_file(file_.c_str(), 0, &content_slice.slice); if (error != GRPC_ERROR_NONE) { cb("", error); return; diff --git a/src/core/lib/security/credentials/external/file_external_account_credentials.h b/src/core/lib/security/credentials/external/file_external_account_credentials.h index 7df5b6b8c2c..23a6b6d6f98 100644 --- a/src/core/lib/security/credentials/external/file_external_account_credentials.h +++ b/src/core/lib/security/credentials/external/file_external_account_credentials.h @@ -26,16 +26,17 @@ namespace grpc_core { class FileExternalAccountCredentials final : public ExternalAccountCredentials { public: static RefCountedPtr Create( - Options options, std::vector scopes, grpc_error** error); + Options options, std::vector scopes, + grpc_error_handle* error); FileExternalAccountCredentials(Options options, std::vector scopes, - grpc_error** error); + grpc_error_handle* error); private: void RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& options, - std::function cb) override; + std::function cb) override; // Fields of credential source std::string file_; diff --git a/src/core/lib/security/credentials/external/url_external_account_credentials.cc b/src/core/lib/security/credentials/external/url_external_account_credentials.cc index 2fa42cb465d..55151b96958 100644 --- a/src/core/lib/security/credentials/external/url_external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/url_external_account_credentials.cc @@ -26,7 +26,7 @@ namespace grpc_core { RefCountedPtr UrlExternalAccountCredentials::Create(Options options, std::vector scopes, - grpc_error** error) { + grpc_error_handle* error) { auto creds = MakeRefCounted( std::move(options), std::move(scopes), error); if (*error == GRPC_ERROR_NONE) { @@ -37,7 +37,7 @@ UrlExternalAccountCredentials::Create(Options options, } UrlExternalAccountCredentials::UrlExternalAccountCredentials( - Options options, std::vector scopes, grpc_error** error) + Options options, std::vector scopes, grpc_error_handle* error) : ExternalAccountCredentials(options, std::move(scopes)) { auto it = options.credential_source.object_value().find("url"); if (it == options.credential_source.object_value().end()) { @@ -113,7 +113,7 @@ UrlExternalAccountCredentials::UrlExternalAccountCredentials( void UrlExternalAccountCredentials::RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& /*options*/, - std::function cb) { + std::function cb) { if (ctx == nullptr) { FinishRetrieveSubjectToken( "", @@ -151,15 +151,15 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken( grpc_http_request_destroy(&request.http); } -void UrlExternalAccountCredentials::OnRetrieveSubjectToken(void* arg, - grpc_error* error) { +void UrlExternalAccountCredentials::OnRetrieveSubjectToken( + void* arg, grpc_error_handle error) { UrlExternalAccountCredentials* self = static_cast(arg); self->OnRetrieveSubjectTokenInternal(GRPC_ERROR_REF(error)); } void UrlExternalAccountCredentials::OnRetrieveSubjectTokenInternal( - grpc_error* error) { + grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { FinishRetrieveSubjectToken("", error); return; @@ -167,7 +167,7 @@ void UrlExternalAccountCredentials::OnRetrieveSubjectTokenInternal( absl::string_view response_body(ctx_->response.body, ctx_->response.body_length); if (format_type_ == "json") { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json response_json = Json::Parse(response_body, &error); if (error != GRPC_ERROR_NONE || response_json.type() != Json::Type::OBJECT) { @@ -196,7 +196,7 @@ void UrlExternalAccountCredentials::OnRetrieveSubjectTokenInternal( } void UrlExternalAccountCredentials::FinishRetrieveSubjectToken( - std::string subject_token, grpc_error* error) { + std::string subject_token, grpc_error_handle error) { // Reset context ctx_ = nullptr; // Move object state into local variables. diff --git a/src/core/lib/security/credentials/external/url_external_account_credentials.h b/src/core/lib/security/credentials/external/url_external_account_credentials.h index 4e37c5735fb..eaf984c745f 100644 --- a/src/core/lib/security/credentials/external/url_external_account_credentials.h +++ b/src/core/lib/security/credentials/external/url_external_account_credentials.h @@ -26,21 +26,23 @@ namespace grpc_core { class UrlExternalAccountCredentials final : public ExternalAccountCredentials { public: static RefCountedPtr Create( - Options options, std::vector scopes, grpc_error** error); + Options options, std::vector scopes, + grpc_error_handle* error); UrlExternalAccountCredentials(Options options, std::vector scopes, - grpc_error** error); + grpc_error_handle* error); private: void RetrieveSubjectToken( HTTPRequestContext* ctx, const Options& options, - std::function cb) override; + std::function cb) override; - static void OnRetrieveSubjectToken(void* arg, grpc_error* error); - void OnRetrieveSubjectTokenInternal(grpc_error* error); + static void OnRetrieveSubjectToken(void* arg, grpc_error_handle error); + void OnRetrieveSubjectTokenInternal(grpc_error_handle error); - void FinishRetrieveSubjectToken(std::string subject_token, grpc_error* error); + void FinishRetrieveSubjectToken(std::string subject_token, + grpc_error_handle error); // Fields of credential source URI url_; @@ -50,7 +52,7 @@ class UrlExternalAccountCredentials final : public ExternalAccountCredentials { std::string format_subject_token_field_name_; HTTPRequestContext* ctx_ = nullptr; - std::function cb_ = nullptr; + std::function cb_ = nullptr; }; } // namespace grpc_core diff --git a/src/core/lib/security/credentials/fake/fake_credentials.cc b/src/core/lib/security/credentials/fake/fake_credentials.cc index c439282ffb1..57a897f0689 100644 --- a/src/core/lib/security/credentials/fake/fake_credentials.cc +++ b/src/core/lib/security/credentials/fake/fake_credentials.cc @@ -92,7 +92,7 @@ const char* grpc_fake_transport_get_expected_targets( bool grpc_md_only_test_credentials::get_request_metadata( grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** /*error*/) { + grpc_error_handle* /*error*/) { grpc_credentials_mdelem_array_add(md_array, md_); if (is_async_) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_request_metadata, @@ -103,7 +103,7 @@ bool grpc_md_only_test_credentials::get_request_metadata( } void grpc_md_only_test_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* /*md_array*/, grpc_error* error) { + grpc_credentials_mdelem_array* /*md_array*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/credentials/fake/fake_credentials.h b/src/core/lib/security/credentials/fake/fake_credentials.h index 3c2449fac3e..ea8c8136d13 100644 --- a/src/core/lib/security/credentials/fake/fake_credentials.h +++ b/src/core/lib/security/credentials/fake/fake_credentials.h @@ -72,10 +72,10 @@ class grpc_md_only_test_credentials : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; std::string debug_string() override { return "MD only Test Credentials"; }; diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 19099343c16..0dbf44f724a 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -134,8 +134,8 @@ grpc_channel_args* grpc_google_default_channel_credentials::update_arguments( return updated; } -static void on_metadata_server_detection_http_response(void* user_data, - grpc_error* error) { +static void on_metadata_server_detection_http_response( + void* user_data, grpc_error_handle error) { metadata_server_detector* detector = static_cast(user_data); if (error == GRPC_ERROR_NONE && detector->response.status == 200 && @@ -161,7 +161,7 @@ static void on_metadata_server_detection_http_response(void* user_data, gpr_mu_unlock(g_polling_mu); } -static void destroy_pollset(void* p, grpc_error* /*e*/) { +static void destroy_pollset(void* p, grpc_error_handle /*e*/) { grpc_pollset_destroy(static_cast(p)); } @@ -221,14 +221,14 @@ static int is_metadata_server_reachable() { } /* Takes ownership of creds_path if not NULL. */ -static grpc_error* create_default_creds_from_path( +static grpc_error_handle create_default_creds_from_path( const std::string& creds_path, grpc_core::RefCountedPtr* creds) { grpc_auth_json_key key; grpc_auth_refresh_token token; grpc_core::RefCountedPtr result; grpc_slice creds_data = grpc_empty_slice(); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json; if (creds_path.empty()) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("creds_path unset"); @@ -304,9 +304,9 @@ static bool metadata_server_available() { } static grpc_core::RefCountedPtr make_default_call_creds( - grpc_error** error) { + grpc_error_handle* error) { grpc_core::RefCountedPtr call_creds; - grpc_error* err; + grpc_error_handle err; /* First, try the environment variable. */ char* path_from_env = gpr_getenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR); @@ -344,7 +344,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create( grpc_call_credentials* call_credentials) { grpc_channel_credentials* result = nullptr; grpc_core::RefCountedPtr call_creds(call_credentials); - grpc_error* error = nullptr; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_google_default_credentials_create(%p)", 1, diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index 1aeaa888010..c9dc223544d 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -36,13 +36,13 @@ grpc_google_iam_credentials::~grpc_google_iam_credentials() { bool grpc_google_iam_credentials::get_request_metadata( grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/, grpc_credentials_mdelem_array* md_array, - grpc_closure* /*on_request_metadata*/, grpc_error** /*error*/) { + grpc_closure* /*on_request_metadata*/, grpc_error_handle* /*error*/) { grpc_credentials_mdelem_array_append(md_array, &md_array_); return true; } void grpc_google_iam_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* /*md_array*/, grpc_error* error) { + grpc_credentials_mdelem_array* /*md_array*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/credentials/iam/iam_credentials.h b/src/core/lib/security/credentials/iam/iam_credentials.h index 9d4a1e2e474..881ba26866f 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.h +++ b/src/core/lib/security/credentials/iam/iam_credentials.h @@ -35,10 +35,10 @@ class grpc_google_iam_credentials : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; std::string debug_string() override { return debug_string_; } private: diff --git a/src/core/lib/security/credentials/jwt/json_token.cc b/src/core/lib/security/credentials/jwt/json_token.cc index 520d60f7afa..5e317c490a5 100644 --- a/src/core/lib/security/credentials/jwt/json_token.cc +++ b/src/core/lib/security/credentials/jwt/json_token.cc @@ -72,7 +72,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) { BIO* bio = nullptr; const char* prop_value; int success = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; memset(&result, 0, sizeof(grpc_auth_json_key)); result.type = GRPC_AUTH_JSON_TYPE_INVALID; @@ -124,7 +124,7 @@ end: grpc_auth_json_key grpc_auth_json_key_create_from_string( const char* json_string) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_string, &error); GRPC_LOG_IF_ERROR("JSON key parsing", error); return grpc_auth_json_key_create_from_json(json); diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index e5edc052e3b..27590f4baf5 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -59,7 +59,7 @@ grpc_service_account_jwt_access_credentials:: bool grpc_service_account_jwt_access_credentials::get_request_metadata( grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, - grpc_closure* /*on_request_metadata*/, grpc_error** error) { + grpc_closure* /*on_request_metadata*/, grpc_error_handle* error) { gpr_timespec refresh_threshold = gpr_time_from_seconds( GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS, GPR_TIMESPAN); @@ -109,7 +109,7 @@ bool grpc_service_account_jwt_access_credentials::get_request_metadata( } void grpc_service_account_jwt_access_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* /*md_array*/, grpc_error* error) { + grpc_credentials_mdelem_array* /*md_array*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } @@ -141,7 +141,7 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key( } static char* redact_private_key(const char* json_key) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_key, &error); if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) { GRPC_ERROR_UNREF(error); diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.h b/src/core/lib/security/credentials/jwt/jwt_credentials.h index d42fc25fd38..5ae4c1f41fd 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.h +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.h @@ -41,10 +41,10 @@ class grpc_service_account_jwt_access_credentials grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; const gpr_timespec& jwt_lifetime() const { return jwt_lifetime_; } const grpc_auth_json_key& key() const { return key_; } diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index 84205434748..96fb16d30c3 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -87,7 +87,7 @@ static Json parse_json_part_from_jwt(const char* str, size_t len) { return Json(); // JSON null } absl::string_view string = grpc_core::StringViewFromSlice(slice); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(string, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); @@ -412,7 +412,7 @@ static Json json_from_http(const grpc_httpcli_response* response) { response->status); return Json(); // JSON null } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse( absl::string_view(response->body, response->body_length), &error); if (error != GRPC_ERROR_NONE) { @@ -627,7 +627,7 @@ end: return result; } -static void on_keys_retrieved(void* user_data, grpc_error* /*error*/) { +static void on_keys_retrieved(void* user_data, grpc_error_handle /*error*/) { verifier_cb_ctx* ctx = static_cast(user_data); Json json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]); EVP_PKEY* verification_key = nullptr; @@ -666,7 +666,8 @@ end: verifier_cb_ctx_destroy(ctx); } -static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) { +static void on_openid_config_retrieved(void* user_data, + grpc_error_handle /*error*/) { verifier_cb_ctx* ctx = static_cast(user_data); const grpc_http_response* response = &ctx->responses[HTTP_RESPONSE_OPENID]; Json json = json_from_http(response); diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index bbd2cb5bae3..34bb71cfdf2 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -61,7 +61,7 @@ grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json( grpc_auth_refresh_token result; const char* prop_value; int success = 0; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; memset(&result, 0, sizeof(grpc_auth_refresh_token)); result.type = GRPC_AUTH_JSON_TYPE_INVALID; @@ -94,7 +94,7 @@ end: grpc_auth_refresh_token grpc_auth_refresh_token_create_from_string( const char* json_string) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_string, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parsing failed: %s", grpc_error_string(error)); @@ -164,7 +164,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( const char* token_type = nullptr; const char* expires_in = nullptr; Json::Object::const_iterator it; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; json = Json::Parse(null_terminated_body, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Could not parse JSON from %s: %s", @@ -221,7 +221,7 @@ end: } static void on_oauth2_token_fetcher_http_response(void* user_data, - grpc_error* error) { + grpc_error_handle error) { GRPC_LOG_IF_ERROR("oauth_fetch", GRPC_ERROR_REF(error)); grpc_credentials_metadata_request* r = static_cast(user_data); @@ -231,7 +231,7 @@ static void on_oauth2_token_fetcher_http_response(void* user_data, } void grpc_oauth2_token_fetcher_credentials::on_http_response( - grpc_credentials_metadata_request* r, grpc_error* error) { + grpc_credentials_metadata_request* r, grpc_error_handle error) { grpc_mdelem access_token_md = GRPC_MDNULL; grpc_millis token_lifetime = 0; grpc_credentials_status status = @@ -253,7 +253,7 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response( gpr_mu_unlock(&mu_); // Invoke callbacks for all pending requests. while (pending_request != nullptr) { - grpc_error* new_error = GRPC_ERROR_NONE; + grpc_error_handle new_error = GRPC_ERROR_NONE; if (status == GRPC_CREDENTIALS_OK) { grpc_credentials_mdelem_array_add(pending_request->md_array, access_token_md); @@ -277,7 +277,7 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response( bool grpc_oauth2_token_fetcher_credentials::get_request_metadata( grpc_polling_entity* pollent, grpc_auth_metadata_context /*context*/, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** /*error*/) { + grpc_error_handle* /*error*/) { // Check if we can use the cached token. grpc_millis refresh_threshold = GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS * GPR_MS_PER_SEC; @@ -325,7 +325,7 @@ bool grpc_oauth2_token_fetcher_credentials::get_request_metadata( } void grpc_oauth2_token_fetcher_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* md_array, grpc_error* error) { + grpc_credentials_mdelem_array* md_array, grpc_error_handle error) { gpr_mu_lock(&mu_); grpc_oauth2_pending_get_request_metadata* prev = nullptr; grpc_oauth2_pending_get_request_metadata* pending_request = pending_requests_; @@ -525,8 +525,8 @@ void MaybeAddToBody(const char* field_name, const char* field, body->push_back(absl::StrFormat("&%s=%s", field_name, field)); } -grpc_error* LoadTokenFile(const char* path, gpr_slice* token) { - grpc_error* err = grpc_load_file(path, 1, token); +grpc_error_handle LoadTokenFile(const char* path, gpr_slice* token) { + grpc_error_handle err = grpc_load_file(path, 1, token); if (err != GRPC_ERROR_NONE) return err; if (GRPC_SLICE_LENGTH(*token) == 0) { gpr_log(GPR_ERROR, "Token file %s is empty", path); @@ -565,7 +565,7 @@ class StsTokenFetcherCredentials grpc_millis deadline) override { char* body = nullptr; size_t body_length = 0; - grpc_error* err = FillBody(&body, &body_length); + grpc_error_handle err = FillBody(&body, &body_length); if (err != GRPC_ERROR_NONE) { response_cb(metadata_req, err); GRPC_ERROR_UNREF(err); @@ -598,12 +598,12 @@ class StsTokenFetcherCredentials gpr_free(body); } - grpc_error* FillBody(char** body, size_t* body_length) { + grpc_error_handle FillBody(char** body, size_t* body_length) { *body = nullptr; std::vector body_parts; grpc_slice subject_token = grpc_empty_slice(); grpc_slice actor_token = grpc_empty_slice(); - grpc_error* err = GRPC_ERROR_NONE; + grpc_error_handle err = GRPC_ERROR_NONE; auto cleanup = [&body, &body_length, &body_parts, &subject_token, &actor_token, &err]() { @@ -656,7 +656,7 @@ class StsTokenFetcherCredentials absl::StatusOr ValidateStsCredentialsOptions( const grpc_sts_credentials_options* options) { - absl::InlinedVector error_list; + absl::InlinedVector error_list; absl::StatusOr sts_url = URI::Parse(options->token_exchange_service_uri == nullptr ? "" @@ -718,13 +718,13 @@ grpc_access_token_credentials::~grpc_access_token_credentials() { bool grpc_access_token_credentials::get_request_metadata( grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/, grpc_credentials_mdelem_array* md_array, - grpc_closure* /*on_request_metadata*/, grpc_error** /*error*/) { + grpc_closure* /*on_request_metadata*/, grpc_error_handle* /*error*/) { grpc_credentials_mdelem_array_add(md_array, access_token_md_); return true; } void grpc_access_token_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* /*md_array*/, grpc_error* error) { + grpc_credentials_mdelem_array* /*md_array*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h index 264291965eb..f174112b0de 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h @@ -78,13 +78,13 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; void on_http_response(grpc_credentials_metadata_request* r, - grpc_error* error); + grpc_error_handle error); std::string debug_string() override; protected: @@ -138,10 +138,10 @@ class grpc_access_token_credentials final : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; std::string debug_string() override; diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index a5b01cd84e8..4c583ad363e 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -82,10 +82,10 @@ void grpc_plugin_credentials::pending_request_complete(pending_request* r) { Unref(); } -static grpc_error* process_plugin_result( +static grpc_error_handle process_plugin_result( grpc_plugin_credentials::pending_request* r, const grpc_metadata* md, size_t num_md, grpc_status_code status, const char* error_details) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (status != GRPC_STATUS_OK) { error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("Getting metadata from plugin failed with error: ", @@ -142,7 +142,7 @@ static void plugin_md_request_metadata_ready(void* request, r->creds->pending_request_complete(r); // If it has not been cancelled, process it. if (!r->cancelled) { - grpc_error* error = + grpc_error_handle error = process_plugin_result(r, md, num_md, status, error_details); grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_request_metadata, error); } else if (GRPC_TRACE_FLAG_ENABLED(grpc_plugin_credentials_trace)) { @@ -157,7 +157,7 @@ static void plugin_md_request_metadata_ready(void* request, bool grpc_plugin_credentials::get_request_metadata( grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) { + grpc_error_handle* error) { bool retval = true; // Synchronous return. if (plugin_.get_metadata != nullptr) { // Create pending_request object. @@ -231,7 +231,7 @@ bool grpc_plugin_credentials::get_request_metadata( } void grpc_plugin_credentials::cancel_get_request_metadata( - grpc_credentials_mdelem_array* md_array, grpc_error* error) { + grpc_credentials_mdelem_array* md_array, grpc_error_handle error) { gpr_mu_lock(&mu_); for (pending_request* pending_request = pending_requests_; pending_request != nullptr; pending_request = pending_request->next) { diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.h b/src/core/lib/security/credentials/plugin/plugin_credentials.h index 881eded7643..68351868390 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.h +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.h @@ -47,10 +47,10 @@ struct grpc_plugin_credentials final : public grpc_call_credentials { grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array, - grpc_error* error) override; + grpc_error_handle error) override; // Checks if the request has been cancelled. // If not, removes it from the pending list, so that it cannot be diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc index 179df8da114..e831aa5c0a2 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc @@ -100,8 +100,9 @@ bool grpc_tls_certificate_distributor::HasKeyCertPairs( }; void grpc_tls_certificate_distributor::SetErrorForCert( - const std::string& cert_name, absl::optional root_cert_error, - absl::optional identity_cert_error) { + const std::string& cert_name, + absl::optional root_cert_error, + absl::optional identity_cert_error) { GPR_ASSERT(root_cert_error.has_value() || identity_cert_error.has_value()); grpc_core::MutexLock lock(&mu_); CertificateInfo& cert_info = certificate_info_map_[cert_name]; @@ -112,7 +113,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert( GPR_ASSERT(watcher_it != watchers_.end()); // identity_cert_error_to_report is the error of the identity cert this // watcher is watching, if there is any. - grpc_error* identity_cert_error_to_report = GRPC_ERROR_NONE; + grpc_error_handle identity_cert_error_to_report = GRPC_ERROR_NONE; if (identity_cert_error.has_value() && watcher_it->second.identity_cert_name == cert_name) { identity_cert_error_to_report = *identity_cert_error; @@ -133,7 +134,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert( GPR_ASSERT(watcher_it != watchers_.end()); // root_cert_error_to_report is the error of the root cert this watcher is // watching, if there is any. - grpc_error* root_cert_error_to_report = GRPC_ERROR_NONE; + grpc_error_handle root_cert_error_to_report = GRPC_ERROR_NONE; if (root_cert_error.has_value() && watcher_it->second.root_cert_name == cert_name) { // In this case, We've already sent the error updates at the time when @@ -151,7 +152,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert( } }; -void grpc_tls_certificate_distributor::SetError(grpc_error* error) { +void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) { GPR_ASSERT(error != GRPC_ERROR_NONE); grpc_core::MutexLock lock(&mu_); for (const auto& watcher : watchers_) { @@ -194,8 +195,8 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates( identity_cert_name}; absl::optional updated_root_certs; absl::optional updated_identity_pairs; - grpc_error* root_error = GRPC_ERROR_NONE; - grpc_error* identity_error = GRPC_ERROR_NONE; + grpc_error_handle root_error = GRPC_ERROR_NONE; + grpc_error_handle identity_error = GRPC_ERROR_NONE; if (root_cert_name.has_value()) { CertificateInfo& cert_info = certificate_info_map_[*root_cert_name]; start_watching_root_cert = cert_info.root_cert_watchers.empty(); diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h index 9ce94433c29..36c46beff9b 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h @@ -68,8 +68,8 @@ struct grpc_tls_certificate_distributor // certificates. // @param identity_cert_error the error occurred while reloading identity // certificates. - virtual void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) = 0; + virtual void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) = 0; }; // Sets the key materials based on their certificate name. @@ -95,14 +95,14 @@ struct grpc_tls_certificate_distributor // @param identity_cert_error The error that the caller encounters when // reloading identity certs. void SetErrorForCert(const std::string& cert_name, - absl::optional root_cert_error, - absl::optional identity_cert_error); + absl::optional root_cert_error, + absl::optional identity_cert_error); // Propagates the error that the caller (e.g. Producer) encounters to all // watchers. // // @param error The error that the caller encounters. - void SetError(grpc_error* error); + void SetError(grpc_error_handle error); // Sets the TLS certificate watch status callback function. The // grpc_tls_certificate_distributor will invoke this callback when a new @@ -169,9 +169,9 @@ struct grpc_tls_certificate_distributor // The contents of the identity key-certificate pairs. grpc_core::PemKeyCertPairList pem_key_cert_pairs; // The root cert reloading error propagated by the caller. - grpc_error* root_cert_error = GRPC_ERROR_NONE; + grpc_error_handle root_cert_error = GRPC_ERROR_NONE; // The identity cert reloading error propagated by the caller. - grpc_error* identity_cert_error = GRPC_ERROR_NONE; + grpc_error_handle identity_cert_error = GRPC_ERROR_NONE; // The set of watchers watching root certificates. // This is mainly used for quickly looking up the affected watchers while // performing a credential reloading. @@ -185,11 +185,11 @@ struct grpc_tls_certificate_distributor GRPC_ERROR_UNREF(root_cert_error); GRPC_ERROR_UNREF(identity_cert_error); } - void SetRootError(grpc_error* error) { + void SetRootError(grpc_error_handle error) { GRPC_ERROR_UNREF(root_cert_error); root_cert_error = error; } - void SetIdentityError(grpc_error* error) { + void SetIdentityError(grpc_error_handle error) { GRPC_ERROR_UNREF(identity_cert_error); identity_cert_error = error; } diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc index 2dae03c99fb..932d39c232e 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc @@ -60,8 +60,8 @@ StaticDataCertificateProvider::StaticDataCertificateProvider( distributor_->SetKeyMaterials(cert_name, std::move(root_certificate), std::move(pem_key_cert_pairs)); } - grpc_error* root_cert_error = GRPC_ERROR_NONE; - grpc_error* identity_cert_error = GRPC_ERROR_NONE; + grpc_error_handle root_cert_error = GRPC_ERROR_NONE; + grpc_error_handle identity_cert_error = GRPC_ERROR_NONE; if (root_being_watched && !root_has_update) { root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Unable to get latest root certificates."); @@ -150,8 +150,8 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider( distributor_->SetKeyMaterials(cert_name, root_certificate, pem_key_cert_pairs); } - grpc_error* root_cert_error = GRPC_ERROR_NONE; - grpc_error* identity_cert_error = GRPC_ERROR_NONE; + grpc_error_handle root_cert_error = GRPC_ERROR_NONE; + grpc_error_handle identity_cert_error = GRPC_ERROR_NONE; if (root_being_watched && !root_certificate.has_value()) { root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Unable to get latest root certificates."); @@ -210,10 +210,11 @@ void FileWatcherCertificateProvider::ForceUpdate() { } if (root_cert_changed || identity_cert_changed) { ExecCtx exec_ctx; - grpc_error* root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Unable to get latest root certificates."); - grpc_error* identity_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Unable to get latest identity certificates."); + grpc_error_handle identity_cert_error = + GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Unable to get latest identity certificates."); for (const auto& p : watcher_info_) { const std::string& cert_name = p.first; const WatcherInfo& info = p.second; @@ -256,7 +257,7 @@ FileWatcherCertificateProvider::ReadRootCertificatesFromFile( const std::string& root_cert_full_path) { // Read the root file. grpc_slice root_slice = grpc_empty_slice(); - grpc_error* root_error = + grpc_error_handle root_error = grpc_load_file(root_cert_full_path.c_str(), 0, &root_slice); if (root_error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Reading file %s failed: %s", @@ -314,7 +315,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles( } // Read the identity files. SliceWrapper key_slice, cert_slice; - grpc_error* key_error = + grpc_error_handle key_error = grpc_load_file(private_key_path.c_str(), 0, &key_slice.slice); if (key_error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...", @@ -322,7 +323,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles( GRPC_ERROR_UNREF(key_error); continue; } - grpc_error* cert_error = + grpc_error_handle cert_error = grpc_load_file(identity_certificate_path.c_str(), 0, &cert_slice.slice); if (cert_error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...", diff --git a/src/core/lib/security/security_connector/alts/alts_security_connector.cc b/src/core/lib/security/security_connector/alts/alts_security_connector.cc index 7558ab976bc..131436dfe9d 100644 --- a/src/core/lib/security/security_connector/alts/alts_security_connector.cc +++ b/src/core/lib/security/security_connector/alts/alts_security_connector.cc @@ -54,7 +54,7 @@ void alts_check_peer(tsi_peer peer, *auth_context = grpc_core::internal::grpc_alts_auth_context_from_tsi_peer(&peer); tsi_peer_destruct(&peer); - grpc_error* error = + grpc_error_handle error = *auth_context != nullptr ? GRPC_ERROR_NONE : GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -104,7 +104,7 @@ class grpc_alts_channel_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -119,7 +119,7 @@ class grpc_alts_channel_security_connector final bool check_call_host(absl::string_view host, grpc_auth_context* /*auth_context*/, grpc_closure* /*on_call_host_checked*/, - grpc_error** error) override { + grpc_error_handle* error) override { if (host.empty() || host != target_name_) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "ALTS call host does not match target name"); @@ -128,7 +128,7 @@ class grpc_alts_channel_security_connector final } void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -174,7 +174,7 @@ class grpc_alts_server_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/fake/fake_security_connector.cc b/src/core/lib/security/security_connector/fake/fake_security_connector.cc index e07685ade43..0e25fb026e6 100644 --- a/src/core/lib/security/security_connector/fake/fake_security_connector.cc +++ b/src/core/lib/security/security_connector/fake/fake_security_connector.cc @@ -80,7 +80,7 @@ class grpc_fake_channel_security_connector final grpc_closure* on_peer_checked) override; void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -110,7 +110,7 @@ class grpc_fake_channel_security_connector final bool check_call_host(absl::string_view host, grpc_auth_context* /*auth_context*/, grpc_closure* /*on_call_host_checked*/, - grpc_error** /*error*/) override { + grpc_error_handle* /*error*/) override { absl::string_view authority_hostname; absl::string_view authority_ignored_port; absl::string_view target_hostname; @@ -140,7 +140,7 @@ class grpc_fake_channel_security_connector final } void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -219,7 +219,7 @@ static void fake_check_peer( grpc_core::RefCountedPtr* auth_context, grpc_closure* on_peer_checked) { const char* prop_name; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; *auth_context = nullptr; if (peer.property_count != 2) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -293,7 +293,7 @@ class grpc_fake_server_security_connector } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc b/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc index ba0b89a94ec..360764e136a 100644 --- a/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +++ b/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc @@ -52,13 +52,13 @@ RefCountedPtr TestOnlyMakeInsecureAuthContext() { // provide an insecure channel. bool InsecureChannelSecurityConnector::check_call_host( absl::string_view /*host*/, grpc_auth_context* /*auth_context*/, - grpc_closure* /*on_call_host_checked*/, grpc_error** error) { + grpc_closure* /*on_call_host_checked*/, grpc_error_handle* error) { *error = GRPC_ERROR_NONE; return true; } void InsecureChannelSecurityConnector::cancel_check_call_host( - grpc_closure* /*on_call_host_checked*/, grpc_error* error) { + grpc_closure* /*on_call_host_checked*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/insecure/insecure_security_connector.h b/src/core/lib/security/security_connector/insecure/insecure_security_connector.h index 933ee3406c3..352e346c1aa 100644 --- a/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +++ b/src/core/lib/security/security_connector/insecure/insecure_security_connector.h @@ -47,10 +47,10 @@ class InsecureChannelSecurityConnector bool check_call_host(absl::string_view host, grpc_auth_context* auth_context, grpc_closure* on_call_host_checked, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_check_call_host(grpc_closure* on_call_host_checked, - grpc_error* error) override; + grpc_error_handle error) override; void add_handshakers(const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */, @@ -61,7 +61,7 @@ class InsecureChannelSecurityConnector grpc_closure* on_peer_checked) override; void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -84,7 +84,7 @@ class InsecureServerSecurityConnector : public grpc_server_security_connector { grpc_closure* on_peer_checked) override; void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/load_system_roots_linux.cc b/src/core/lib/security/security_connector/load_system_roots_linux.cc index f7c6c2cec35..4cd709f77f6 100644 --- a/src/core/lib/security/security_connector/load_system_roots_linux.cc +++ b/src/core/lib/security/security_connector/load_system_roots_linux.cc @@ -63,7 +63,7 @@ grpc_slice GetSystemRootCerts() { grpc_slice valid_bundle_slice = grpc_empty_slice(); size_t num_cert_files_ = GPR_ARRAY_SIZE(kLinuxCertFiles); for (size_t i = 0; i < num_cert_files_; i++) { - grpc_error* error = + grpc_error_handle error = grpc_load_file(kLinuxCertFiles[i], 1, &valid_bundle_slice); if (error == GRPC_ERROR_NONE) { return valid_bundle_slice; diff --git a/src/core/lib/security/security_connector/local/local_security_connector.cc b/src/core/lib/security/security_connector/local/local_security_connector.cc index 2b4f591740e..a13092522f4 100644 --- a/src/core/lib/security/security_connector/local/local_security_connector.cc +++ b/src/core/lib/security/security_connector/local/local_security_connector.cc @@ -103,7 +103,7 @@ void local_check_peer(tsi_peer peer, grpc_endpoint* ep, } } } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (!is_endpoint_local) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Endpoint is neither UDS or TCP loopback address."); @@ -182,14 +182,14 @@ class grpc_local_channel_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } bool check_call_host(absl::string_view host, grpc_auth_context* /*auth_context*/, grpc_closure* /*on_call_host_checked*/, - grpc_error** error) override { + grpc_error_handle* error) override { if (host.empty() || host != target_name_) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "local call host does not match target name"); @@ -198,7 +198,7 @@ class grpc_local_channel_security_connector final } void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -236,7 +236,7 @@ class grpc_local_server_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/security_connector.h b/src/core/lib/security/security_connector/security_connector.h index 0ce97fe7295..50d9af376b7 100644 --- a/src/core/lib/security/security_connector/security_connector.h +++ b/src/core/lib/security/security_connector/security_connector.h @@ -65,7 +65,7 @@ class grpc_security_connector // Cancels the pending check_peer() request associated with on_peer_checked. // If there is no such request pending, this is a no-op. virtual void cancel_check_peer(grpc_closure* on_peer_checked, - grpc_error* error) = 0; + grpc_error_handle error) = 0; /* Compares two security connectors. */ virtual int cmp(const grpc_security_connector* other) const = 0; @@ -108,12 +108,12 @@ class grpc_channel_security_connector : public grpc_security_connector { virtual bool check_call_host(absl::string_view host, grpc_auth_context* auth_context, grpc_closure* on_call_host_checked, - grpc_error** error) = 0; + grpc_error_handle* error) = 0; /// Cancels a pending asynchronous call to /// grpc_channel_security_connector_check_call_host() with /// \a on_call_host_checked as its callback. virtual void cancel_check_call_host(grpc_closure* on_call_host_checked, - grpc_error* error) = 0; + grpc_error_handle error) = 0; /// Registers handshakers with \a handshake_mgr. virtual void add_handshakers(const grpc_channel_args* args, grpc_pollset_set* interested_parties, diff --git a/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc b/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc index ba018af4d5a..3e424e35f8b 100644 --- a/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +++ b/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc @@ -45,10 +45,10 @@ #include "src/core/tsi/transport_security.h" namespace { -grpc_error* ssl_check_peer( +grpc_error_handle ssl_check_peer( const char* peer_name, const tsi_peer* peer, grpc_core::RefCountedPtr* auth_context) { - grpc_error* error = grpc_ssl_check_alpn(peer); + grpc_error_handle error = grpc_ssl_check_alpn(peer); if (error != GRPC_ERROR_NONE) { return error; } @@ -145,7 +145,7 @@ class grpc_ssl_channel_security_connector final const char* target_name = overridden_target_name_.empty() ? target_name_.c_str() : overridden_target_name_.c_str(); - grpc_error* error = ssl_check_peer(target_name, &peer, auth_context); + grpc_error_handle error = ssl_check_peer(target_name, &peer, auth_context); if (error == GRPC_ERROR_NONE && verify_options_->verify_peer_callback != nullptr) { const tsi_peer_property* p = @@ -174,7 +174,7 @@ class grpc_ssl_channel_security_connector final } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -190,14 +190,14 @@ class grpc_ssl_channel_security_connector final bool check_call_host(absl::string_view host, grpc_auth_context* auth_context, grpc_closure* /*on_call_host_checked*/, - grpc_error** error) override { + grpc_error_handle* error) override { return grpc_ssl_check_call_host(host, target_name_.c_str(), overridden_target_name_.c_str(), auth_context, error); } void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } @@ -293,13 +293,13 @@ class grpc_ssl_server_security_connector void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/, grpc_core::RefCountedPtr* auth_context, grpc_closure* on_peer_checked) override { - grpc_error* error = ssl_check_peer(nullptr, &peer, auth_context); + grpc_error_handle error = ssl_check_peer(nullptr, &peer, auth_context); tsi_peer_destruct(&peer); grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error); } void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { GRPC_ERROR_UNREF(error); } diff --git a/src/core/lib/security/security_connector/ssl_utils.cc b/src/core/lib/security/security_connector/ssl_utils.cc index fb5cc27218b..f445be9c77b 100644 --- a/src/core/lib/security/security_connector/ssl_utils.cc +++ b/src/core/lib/security/security_connector/ssl_utils.cc @@ -152,7 +152,7 @@ tsi_tls_version grpc_get_tsi_tls_version(grpc_tls_version tls_version) { } } -grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer) { +grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer) { #if TSI_OPENSSL_ALPN_SUPPORT /* Check the ALPN if ALPN is supported. */ const tsi_peer_property* p = @@ -169,8 +169,8 @@ grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer) { return GRPC_ERROR_NONE; } -grpc_error* grpc_ssl_check_peer_name(absl::string_view peer_name, - const tsi_peer* peer) { +grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name, + const tsi_peer* peer) { /* Check the peer name if specified. */ if (!peer_name.empty() && !grpc_ssl_host_matches_name(peer, peer_name)) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -184,7 +184,7 @@ bool grpc_ssl_check_call_host(absl::string_view host, absl::string_view target_name, absl::string_view overridden_target_name, grpc_auth_context* auth_context, - grpc_error** error) { + grpc_error_handle* error) { grpc_security_status status = GRPC_SECURITY_ERROR; tsi_peer peer = grpc_shallow_peer_from_ssl_auth_context(auth_context); if (grpc_ssl_host_matches_name(&peer, host)) status = GRPC_SECURITY_OK; diff --git a/src/core/lib/security/security_connector/ssl_utils.h b/src/core/lib/security/security_connector/ssl_utils.h index 562a08c9697..1c41a5434cb 100644 --- a/src/core/lib/security/security_connector/ssl_utils.h +++ b/src/core/lib/security/security_connector/ssl_utils.h @@ -44,11 +44,11 @@ #define GRPC_SSL_URL_SCHEME "https" /* Check ALPN information returned from SSL handshakes. */ -grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer); +grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer); /* Check peer name information returned from SSL handshakes. */ -grpc_error* grpc_ssl_check_peer_name(absl::string_view peer_name, - const tsi_peer* peer); +grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name, + const tsi_peer* peer); /* Compare targer_name information extracted from SSL security connectors. */ int grpc_ssl_cmp_target_name(absl::string_view target_name, absl::string_view other_target_name, @@ -59,7 +59,7 @@ bool grpc_ssl_check_call_host(absl::string_view host, absl::string_view target_name, absl::string_view overridden_target_name, grpc_auth_context* auth_context, - grpc_error** error); + grpc_error_handle* error); /* Return HTTP2-compliant cipher suites that gRPC accepts by default. */ const char* grpc_get_ssl_cipher_suites(void); diff --git a/src/core/lib/security/security_connector/tls/tls_security_connector.cc b/src/core/lib/security/security_connector/tls/tls_security_connector.cc index ed5703e6971..1625aa78bc7 100644 --- a/src/core/lib/security/security_connector/tls/tls_security_connector.cc +++ b/src/core/lib/security/security_connector/tls/tls_security_connector.cc @@ -202,7 +202,7 @@ void TlsChannelSecurityConnector::check_peer( const char* target_name = overridden_target_name_.empty() ? target_name_.c_str() : overridden_target_name_.c_str(); - grpc_error* error = grpc_ssl_check_alpn(&peer); + grpc_error_handle error = grpc_ssl_check_alpn(&peer); if (error != GRPC_ERROR_NONE) { ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error); tsi_peer_destruct(&peer); @@ -315,7 +315,7 @@ int TlsChannelSecurityConnector::cmp( bool TlsChannelSecurityConnector::check_call_host( absl::string_view host, grpc_auth_context* auth_context, - grpc_closure* /*on_call_host_checked*/, grpc_error** error) { + grpc_closure* /*on_call_host_checked*/, grpc_error_handle* error) { if (options_->server_verification_option() == GRPC_TLS_SKIP_HOSTNAME_VERIFICATION || options_->server_verification_option() == @@ -328,7 +328,7 @@ bool TlsChannelSecurityConnector::check_call_host( } void TlsChannelSecurityConnector::cancel_check_call_host( - grpc_closure* /*on_call_host_checked*/, grpc_error* error) { + grpc_closure* /*on_call_host_checked*/, grpc_error_handle error) { GRPC_ERROR_UNREF(error); } @@ -359,7 +359,7 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher:: // TODO(ZhenLian): implement the logic to signal waiting handshakers once // BlockOnInitialCredentialHandshaker is implemented. void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError( - grpc_error* root_cert_error, grpc_error* identity_cert_error) { + grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) { if (root_cert_error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "TlsChannelCertificateWatcher getting root_cert_error: %s", @@ -415,15 +415,16 @@ void TlsChannelSecurityConnector::ServerAuthorizationCheckDone( grpc_tls_server_authorization_check_arg* arg) { GPR_ASSERT(arg != nullptr); ExecCtx exec_ctx; - grpc_error* error = ProcessServerAuthorizationCheckResult(arg); + grpc_error_handle error = ProcessServerAuthorizationCheckResult(arg); TlsChannelSecurityConnector* connector = static_cast(arg->cb_user_data); ExecCtx::Run(DEBUG_LOCATION, connector->on_peer_checked_, error); } -grpc_error* TlsChannelSecurityConnector::ProcessServerAuthorizationCheckResult( +grpc_error_handle +TlsChannelSecurityConnector::ProcessServerAuthorizationCheckResult( grpc_tls_server_authorization_check_arg* arg) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* Server authorization check is cancelled by caller. */ if (arg->status == GRPC_STATUS_CANCELLED) { error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -572,7 +573,7 @@ void TlsServerSecurityConnector::check_peer( tsi_peer peer, grpc_endpoint* /*ep*/, RefCountedPtr* auth_context, grpc_closure* on_peer_checked) { - grpc_error* error = grpc_ssl_check_alpn(&peer); + grpc_error_handle error = grpc_ssl_check_alpn(&peer); *auth_context = grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE); tsi_peer_destruct(&peer); @@ -616,7 +617,7 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher:: // TODO(ZhenLian): implement the logic to signal waiting handshakers once // BlockOnInitialCredentialHandshaker is implemented. void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError( - grpc_error* root_cert_error, grpc_error* identity_cert_error) { + grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) { if (root_cert_error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "TlsServerCertificateWatcher getting root_cert_error: %s", @@ -666,7 +667,8 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() { namespace internal { -grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) { +grpc_error_handle TlsCheckHostName(const char* peer_name, + const tsi_peer* peer) { /* Check the peer name if specified. */ if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) { return GRPC_ERROR_CREATE_FROM_COPIED_STRING( diff --git a/src/core/lib/security/security_connector/tls/tls_security_connector.h b/src/core/lib/security/security_connector/tls/tls_security_connector.h index 70d13d6d036..80c26954ac8 100644 --- a/src/core/lib/security/security_connector/tls/tls_security_connector.h +++ b/src/core/lib/security/security_connector/tls/tls_security_connector.h @@ -61,7 +61,7 @@ class TlsChannelSecurityConnector final grpc_closure* on_peer_checked) override; void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { // TODO(ZhenLian): call verifier->cancel() once the verifier is ready. GRPC_ERROR_UNREF(error); } @@ -70,10 +70,10 @@ class TlsChannelSecurityConnector final bool check_call_host(absl::string_view host, grpc_auth_context* auth_context, grpc_closure* on_call_host_checked, - grpc_error** error) override; + grpc_error_handle* error) override; void cancel_check_call_host(grpc_closure* on_call_host_checked, - grpc_error* error) override; + grpc_error_handle error) override; tsi_ssl_client_handshaker_factory* ClientHandshakerFactoryForTesting() { MutexLock lock(&mu_); @@ -103,8 +103,8 @@ class TlsChannelSecurityConnector final void OnCertificatesChanged( absl::optional root_certs, absl::optional key_cert_pairs) override; - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override; + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override; private: TlsChannelSecurityConnector* security_connector_ = nullptr; @@ -121,7 +121,7 @@ class TlsChannelSecurityConnector final grpc_tls_server_authorization_check_arg* arg); // A util function to process server authorization check result. - static grpc_error* ProcessServerAuthorizationCheckResult( + static grpc_error_handle ProcessServerAuthorizationCheckResult( grpc_tls_server_authorization_check_arg* arg); // A util function to create a server authorization check arg instance. @@ -172,7 +172,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector { grpc_closure* on_peer_checked) override; void cancel_check_peer(grpc_closure* /*on_peer_checked*/, - grpc_error* error) override { + grpc_error_handle error) override { // TODO(ZhenLian): call verifier->cancel() once the verifier is ready. GRPC_ERROR_UNREF(error); } @@ -207,8 +207,8 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector { void OnCertificatesChanged( absl::optional root_certs, absl::optional key_cert_pairs) override; - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override; + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override; private: TlsServerSecurityConnector* security_connector_ = nullptr; @@ -236,7 +236,7 @@ namespace internal { // TlsCheckHostName checks if |peer_name| matches the identity information // contained in |peer|. This is AKA hostname check. -grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer); +grpc_error_handle TlsCheckHostName(const char* peer_name, const tsi_peer* peer); } // namespace internal diff --git a/src/core/lib/security/transport/client_auth_filter.cc b/src/core/lib/security/transport/client_auth_filter.cc index 1e6b89e8804..babc90fb8cd 100644 --- a/src/core/lib/security/transport/client_auth_filter.cc +++ b/src/core/lib/security/transport/client_auth_filter.cc @@ -146,7 +146,7 @@ void grpc_auth_metadata_context_reset( } } -static void add_error(grpc_error** combined, grpc_error* error) { +static void add_error(grpc_error_handle* combined, grpc_error_handle error) { if (error == GRPC_ERROR_NONE) return; if (*combined == GRPC_ERROR_NONE) { *combined = GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -155,14 +155,14 @@ static void add_error(grpc_error** combined, grpc_error* error) { *combined = grpc_error_add_child(*combined, error); } -static void on_credentials_metadata(void* arg, grpc_error* input_error) { +static void on_credentials_metadata(void* arg, grpc_error_handle input_error) { grpc_transport_stream_op_batch* batch = static_cast(arg); grpc_call_element* elem = static_cast(batch->handler_private.extra_arg); call_data* calld = static_cast(elem->call_data); grpc_auth_metadata_context_reset(&calld->auth_md_context); - grpc_error* error = GRPC_ERROR_REF(input_error); + grpc_error_handle error = GRPC_ERROR_REF(input_error); if (error == GRPC_ERROR_NONE) { GPR_ASSERT(calld->md_array.size <= MAX_CREDENTIALS_METADATA_COUNT); GPR_ASSERT(batch->send_initial_metadata); @@ -225,7 +225,7 @@ void grpc_auth_metadata_context_build( gpr_free(host_and_port); } -static void cancel_get_request_metadata(void* arg, grpc_error* error) { +static void cancel_get_request_metadata(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); if (error != GRPC_ERROR_NONE) { @@ -312,7 +312,7 @@ static void send_security_metadata(grpc_call_element* elem, GRPC_CALL_STACK_REF(calld->owning_call, "get_request_metadata"); GRPC_CLOSURE_INIT(&calld->async_result_closure, on_credentials_metadata, batch, grpc_schedule_on_exec_ctx); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (calld->creds->get_request_metadata( calld->pollent, calld->auth_md_context, &calld->md_array, &calld->async_result_closure, &error)) { @@ -330,7 +330,7 @@ static void send_security_metadata(grpc_call_element* elem, } } -static void on_host_checked(void* arg, grpc_error* error) { +static void on_host_checked(void* arg, grpc_error_handle error) { grpc_transport_stream_op_batch* batch = static_cast(arg); grpc_call_element* elem = @@ -352,7 +352,7 @@ static void on_host_checked(void* arg, grpc_error* error) { GRPC_CALL_STACK_UNREF(calld->owning_call, "check_call_host"); } -static void cancel_check_call_host(void* arg, grpc_error* error) { +static void cancel_check_call_host(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); channel_data* chand = static_cast(elem->channel_data); @@ -386,7 +386,7 @@ static void client_auth_start_transport_stream_op_batch( GRPC_CLOSURE_INIT(&calld->async_result_closure, on_host_checked, batch, grpc_schedule_on_exec_ctx); absl::string_view call_host(grpc_core::StringViewFromSlice(calld->host)); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (chand->security_connector->check_call_host( call_host, chand->auth_context.get(), &calld->async_result_closure, &error)) { @@ -411,7 +411,7 @@ static void client_auth_start_transport_stream_op_batch( } /* Constructor for call_data */ -static grpc_error* client_auth_init_call_elem( +static grpc_error_handle client_auth_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { new (elem->call_data) call_data(elem, *args); return GRPC_ERROR_NONE; @@ -432,7 +432,7 @@ static void client_auth_destroy_call_elem( } /* Constructor for channel_data */ -static grpc_error* client_auth_init_channel_elem( +static grpc_error_handle client_auth_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { /* The first and the last filters tend to be implemented differently to handle the case that there's no 'next' filter to call on the up or down diff --git a/src/core/lib/security/transport/secure_endpoint.cc b/src/core/lib/security/transport/secure_endpoint.cc index 7ab4d7b779c..fc1fb7e846f 100644 --- a/src/core/lib/security/transport/secure_endpoint.cc +++ b/src/core/lib/security/transport/secure_endpoint.cc @@ -43,7 +43,7 @@ #define STAGING_BUFFER_SIZE 8192 -static void on_read(void* user_data, grpc_error* error); +static void on_read(void* user_data, grpc_error_handle error); namespace { struct secure_endpoint { @@ -154,7 +154,7 @@ static void flush_read_staging_buffer(secure_endpoint* ep, uint8_t** cur, *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer); } -static void call_read_cb(secure_endpoint* ep, grpc_error* error) { +static void call_read_cb(secure_endpoint* ep, grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) { size_t i; for (i = 0; i < ep->read_buffer->count; i++) { @@ -169,7 +169,7 @@ static void call_read_cb(secure_endpoint* ep, grpc_error* error) { SECURE_ENDPOINT_UNREF(ep, "read"); } -static void on_read(void* user_data, grpc_error* error) { +static void on_read(void* user_data, grpc_error_handle error) { unsigned i; uint8_t keep_looping = 0; tsi_result result = TSI_OK; @@ -373,7 +373,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices, grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg); } -static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error* why) { +static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) { secure_endpoint* ep = reinterpret_cast(secure_ep); grpc_endpoint_shutdown(ep->wrapped_ep, why); } diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc index 58359b23f15..7918c2842ef 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/lib/security/transport/security_handshaker.cc @@ -51,35 +51,36 @@ class SecurityHandshaker : public Handshaker { grpc_security_connector* connector, const grpc_channel_args* args); ~SecurityHandshaker() override; - void Shutdown(grpc_error* why) override; + void Shutdown(grpc_error_handle why) override; void DoHandshake(grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, HandshakerArgs* args) override; const char* name() const override { return "security"; } private: - grpc_error* DoHandshakerNextLocked(const unsigned char* bytes_received, - size_t bytes_received_size); + grpc_error_handle DoHandshakerNextLocked(const unsigned char* bytes_received, + size_t bytes_received_size); - grpc_error* OnHandshakeNextDoneLocked( + grpc_error_handle OnHandshakeNextDoneLocked( tsi_result result, const unsigned char* bytes_to_send, size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result); - void HandshakeFailedLocked(grpc_error* error); + void HandshakeFailedLocked(grpc_error_handle error); void CleanupArgsForFailureLocked(); - static void OnHandshakeDataReceivedFromPeerFn(void* arg, grpc_error* error); - static void OnHandshakeDataSentToPeerFn(void* arg, grpc_error* error); - static void OnHandshakeDataReceivedFromPeerFnScheduler(void* arg, - grpc_error* error); + static void OnHandshakeDataReceivedFromPeerFn(void* arg, + grpc_error_handle error); + static void OnHandshakeDataSentToPeerFn(void* arg, grpc_error_handle error); + static void OnHandshakeDataReceivedFromPeerFnScheduler( + void* arg, grpc_error_handle error); static void OnHandshakeDataSentToPeerFnScheduler(void* arg, - grpc_error* error); + grpc_error_handle error); static void OnHandshakeNextDoneGrpcWrapper( tsi_result result, void* user_data, const unsigned char* bytes_to_send, size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result); - static void OnPeerCheckedFn(void* arg, grpc_error* error); - void OnPeerCheckedInner(grpc_error* error); + static void OnPeerCheckedFn(void* arg, grpc_error_handle error); + void OnPeerCheckedInner(grpc_error_handle error); size_t MoveReadBufferIntoHandshakeBuffer(); - grpc_error* CheckPeerLocked(); + grpc_error_handle CheckPeerLocked(); // State set at creation time. tsi_handshaker* handshaker_; @@ -173,7 +174,7 @@ void SecurityHandshaker::CleanupArgsForFailureLocked() { // If the handshake failed or we're shutting down, clean up and invoke the // callback with the error. -void SecurityHandshaker::HandshakeFailedLocked(grpc_error* error) { +void SecurityHandshaker::HandshakeFailedLocked(grpc_error_handle error) { if (error == GRPC_ERROR_NONE) { // If we were shut down after the handshake succeeded but before an // endpoint callback was invoked, we need to generate our own error. @@ -225,7 +226,7 @@ MakeChannelzSecurityFromAuthContext(grpc_auth_context* auth_context) { } // namespace -void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) { +void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) { MutexLock lock(&mu_); if (error != GRPC_ERROR_NONE || is_shutdown_) { HandshakeFailedLocked(error); @@ -292,12 +293,12 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) { is_shutdown_ = true; } -void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error* error) { +void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error_handle error) { RefCountedPtr(static_cast(arg)) ->OnPeerCheckedInner(GRPC_ERROR_REF(error)); } -grpc_error* SecurityHandshaker::CheckPeerLocked() { +grpc_error_handle SecurityHandshaker::CheckPeerLocked() { tsi_peer peer; tsi_result result = tsi_handshaker_result_extract_peer(handshaker_result_, &peer); @@ -310,10 +311,10 @@ grpc_error* SecurityHandshaker::CheckPeerLocked() { return GRPC_ERROR_NONE; } -grpc_error* SecurityHandshaker::OnHandshakeNextDoneLocked( +grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked( tsi_result result, const unsigned char* bytes_to_send, size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; // Handshaker was shutdown. if (is_shutdown_) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown"); @@ -374,7 +375,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper( RefCountedPtr h( static_cast(user_data)); MutexLock lock(&h->mu_); - grpc_error* error = h->OnHandshakeNextDoneLocked( + grpc_error_handle error = h->OnHandshakeNextDoneLocked( result, bytes_to_send, bytes_to_send_size, handshaker_result); if (error != GRPC_ERROR_NONE) { h->HandshakeFailedLocked(error); @@ -383,7 +384,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper( } } -grpc_error* SecurityHandshaker::DoHandshakerNextLocked( +grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked( const unsigned char* bytes_received, size_t bytes_received_size) { // Invoke TSI handshaker. const unsigned char* bytes_to_send = nullptr; @@ -406,7 +407,7 @@ grpc_error* SecurityHandshaker::DoHandshakerNextLocked( // This callback might be run inline while we are still holding on to the mutex, // so schedule OnHandshakeDataReceivedFromPeerFn on ExecCtx to avoid a deadlock. void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { SecurityHandshaker* h = static_cast(arg); grpc_core::ExecCtx::Run( DEBUG_LOCATION, @@ -416,8 +417,8 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler( GRPC_ERROR_REF(error)); } -void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(void* arg, - grpc_error* error) { +void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn( + void* arg, grpc_error_handle error) { RefCountedPtr h(static_cast(arg)); MutexLock lock(&h->mu_); if (error != GRPC_ERROR_NONE || h->is_shutdown_) { @@ -440,7 +441,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(void* arg, // This callback might be run inline while we are still holding on to the mutex, // so schedule OnHandshakeDataSentToPeerFn on ExecCtx to avoid a deadlock. void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler( - void* arg, grpc_error* error) { + void* arg, grpc_error_handle error) { SecurityHandshaker* h = static_cast(arg); grpc_core::ExecCtx::Run( DEBUG_LOCATION, @@ -451,7 +452,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler( } void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg, - grpc_error* error) { + grpc_error_handle error) { RefCountedPtr h(static_cast(arg)); MutexLock lock(&h->mu_); if (error != GRPC_ERROR_NONE || h->is_shutdown_) { @@ -482,7 +483,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg, // public handshaker API // -void SecurityHandshaker::Shutdown(grpc_error* why) { +void SecurityHandshaker::Shutdown(grpc_error_handle why) { MutexLock lock(&mu_); if (!is_shutdown_) { is_shutdown_ = true; @@ -502,7 +503,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/, args_ = args; on_handshake_done_ = on_handshake_done; size_t bytes_received_size = MoveReadBufferIntoHandshakeBuffer(); - grpc_error* error = + grpc_error_handle error = DoHandshakerNextLocked(handshake_buffer_, bytes_received_size); if (error != GRPC_ERROR_NONE) { HandshakeFailedLocked(error); @@ -518,7 +519,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/, class FailHandshaker : public Handshaker { public: const char* name() const override { return "security_fail"; } - void Shutdown(grpc_error* why) override { GRPC_ERROR_UNREF(why); } + void Shutdown(grpc_error_handle why) override { GRPC_ERROR_UNREF(why); } void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/, grpc_closure* on_handshake_done, HandshakerArgs* /*args*/) override { diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index d4ec09a0c10..7f644de8161 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -28,8 +28,9 @@ #include "src/core/lib/security/transport/auth_filters.h" #include "src/core/lib/slice/slice_internal.h" -static void recv_initial_metadata_ready(void* arg, grpc_error* error); -static void recv_trailing_metadata_ready(void* user_data, grpc_error* error); +static void recv_initial_metadata_ready(void* arg, grpc_error_handle error); +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle error); namespace { enum async_state { @@ -79,10 +80,10 @@ struct call_data { grpc_transport_stream_op_batch* recv_initial_metadata_batch; grpc_closure* original_recv_initial_metadata_ready; grpc_closure recv_initial_metadata_ready; - grpc_error* recv_initial_metadata_error = GRPC_ERROR_NONE; + grpc_error_handle recv_initial_metadata_error = GRPC_ERROR_NONE; grpc_closure recv_trailing_metadata_ready; grpc_closure* original_recv_trailing_metadata_ready; - grpc_error* recv_trailing_metadata_error; + grpc_error_handle recv_trailing_metadata_error; bool seen_recv_trailing_metadata_ready = false; grpc_metadata_array md; const grpc_metadata* consumed_md; @@ -135,7 +136,7 @@ static void on_md_processing_done_inner(grpc_call_element* elem, size_t num_consumed_md, const grpc_metadata* response_md, size_t num_response_md, - grpc_error* error) { + grpc_error_handle error) { call_data* calld = static_cast(elem->call_data); grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch; /* TODO(jboeuf): Implement support for response_md. */ @@ -175,7 +176,7 @@ static void on_md_processing_done( // If the call was not cancelled while we were in flight, process the result. if (gpr_atm_full_cas(&calld->state, static_cast(STATE_INIT), static_cast(STATE_DONE))) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (status != GRPC_STATUS_OK) { if (error_details == nullptr) { error_details = "Authentication metadata processing failed."; @@ -196,7 +197,7 @@ static void on_md_processing_done( GRPC_CALL_STACK_UNREF(calld->owning_call, "server_auth_metadata"); } -static void cancel_call(void* arg, grpc_error* error) { +static void cancel_call(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); // If the result was not already processed, invoke the callback now. @@ -209,7 +210,7 @@ static void cancel_call(void* arg, grpc_error* error) { GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_call"); } -static void recv_initial_metadata_ready(void* arg, grpc_error* error) { +static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); channel_data* chand = static_cast(elem->channel_data); call_data* calld = static_cast(elem->call_data); @@ -246,7 +247,8 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) { grpc_core::Closure::Run(DEBUG_LOCATION, closure, GRPC_ERROR_REF(error)); } -static void recv_trailing_metadata_ready(void* user_data, grpc_error* err) { +static void recv_trailing_metadata_ready(void* user_data, + grpc_error_handle err) { grpc_call_element* elem = static_cast(user_data); call_data* calld = static_cast(elem->call_data); if (calld->original_recv_initial_metadata_ready != nullptr) { @@ -284,7 +286,7 @@ static void server_auth_start_transport_stream_op_batch( } /* Constructor for call_data */ -static grpc_error* server_auth_init_call_elem( +static grpc_error_handle server_auth_init_call_elem( grpc_call_element* elem, const grpc_call_element_args* args) { new (elem->call_data) call_data(elem, *args); return GRPC_ERROR_NONE; @@ -299,13 +301,13 @@ static void server_auth_destroy_call_elem( } /* Constructor for channel_data */ -static grpc_error* server_auth_init_channel_elem( +static grpc_error_handle server_auth_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); grpc_auth_context* auth_context = grpc_find_auth_context_in_args(args->channel_args); if (auth_context == nullptr) { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "No authorization context found. This might be a TRANSIENT failure due " "to certificates not having been loaded yet."); gpr_log(GPR_DEBUG, "%s", grpc_error_string(error)); diff --git a/src/core/lib/security/transport/tsi_error.cc b/src/core/lib/security/transport/tsi_error.cc index f78bb8df38f..4d337b4622f 100644 --- a/src/core/lib/security/transport/tsi_error.cc +++ b/src/core/lib/security/transport/tsi_error.cc @@ -20,7 +20,8 @@ #include "src/core/lib/security/transport/tsi_error.h" -grpc_error* grpc_set_tsi_error_result(grpc_error* error, tsi_result result) { +grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error, + tsi_result result) { return grpc_error_set_int( grpc_error_set_str( error, GRPC_ERROR_STR_TSI_ERROR, diff --git a/src/core/lib/security/transport/tsi_error.h b/src/core/lib/security/transport/tsi_error.h index 16e04f70f1e..26b8806dd21 100644 --- a/src/core/lib/security/transport/tsi_error.h +++ b/src/core/lib/security/transport/tsi_error.h @@ -24,6 +24,7 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/tsi/transport_security_interface.h" -grpc_error* grpc_set_tsi_error_result(grpc_error* error, tsi_result result); +grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error, + tsi_result result); #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H */ diff --git a/src/core/lib/security/util/json_util.cc b/src/core/lib/security/util/json_util.cc index ff2fbc80324..34bf88f4db4 100644 --- a/src/core/lib/security/util/json_util.cc +++ b/src/core/lib/security/util/json_util.cc @@ -30,7 +30,7 @@ const char* grpc_json_get_string_property(const grpc_core::Json& json, const char* prop_name, - grpc_error** error) { + grpc_error_handle* error) { if (json.type() != grpc_core::Json::Type::OBJECT) { if (error != nullptr) { *error = @@ -62,7 +62,7 @@ const char* grpc_json_get_string_property(const grpc_core::Json& json, bool grpc_copy_json_string_property(const grpc_core::Json& json, const char* prop_name, char** copied_value) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; const char* prop_value = grpc_json_get_string_property(json, prop_name, &error); GRPC_LOG_IF_ERROR("Could not copy JSON property", error); diff --git a/src/core/lib/security/util/json_util.h b/src/core/lib/security/util/json_util.h index cde9ca97ffd..d3c6ec31277 100644 --- a/src/core/lib/security/util/json_util.h +++ b/src/core/lib/security/util/json_util.h @@ -35,7 +35,7 @@ // Gets a child property from a json node. const char* grpc_json_get_string_property(const grpc_core::Json& json, const char* prop_name, - grpc_error** error); + grpc_error_handle* error); // Copies the value of the json child property specified by prop_name. // Returns false if the property was not found. diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index 33ae8e16d16..3407c54672b 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -290,14 +290,15 @@ static void execute_batch(grpc_call* call, static void cancel_with_status(grpc_call* c, grpc_status_code status, const char* description); -static void cancel_with_error(grpc_call* c, grpc_error* error); -static void destroy_call(void* call_stack, grpc_error* error); -static void receiving_slice_ready(void* bctlp, grpc_error* error); -static void set_final_status(grpc_call* call, grpc_error* error); +static void cancel_with_error(grpc_call* c, grpc_error_handle error); +static void destroy_call(void* call_stack, grpc_error_handle error); +static void receiving_slice_ready(void* bctlp, grpc_error_handle error); +static void set_final_status(grpc_call* call, grpc_error_handle error); static void process_data_after_md(batch_control* bctl); static void post_batch_completion(batch_control* bctl); -static void add_init_error(grpc_error** composite, grpc_error* new_err) { +static void add_init_error(grpc_error_handle* composite, + grpc_error_handle new_err) { if (new_err == GRPC_ERROR_NONE) return; if (*composite == GRPC_ERROR_NONE) { *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed"); @@ -335,15 +336,15 @@ size_t grpc_call_get_initial_size_estimate() { sizeof(grpc_linked_mdelem) * ESTIMATED_MDELEM_COUNT; } -grpc_error* grpc_call_create(const grpc_call_create_args* args, - grpc_call** out_call) { +grpc_error_handle grpc_call_create(const grpc_call_create_args* args, + grpc_call** out_call) { GPR_TIMER_SCOPE("grpc_call_create", 0); GRPC_CHANNEL_INTERNAL_REF(args->channel, "call"); grpc_core::Arena* arena; grpc_call* call; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_channel_stack* channel_stack = grpc_channel_get_channel_stack(args->channel); size_t initial_size = grpc_channel_get_call_size_estimate(args->channel); @@ -524,7 +525,7 @@ void grpc_call_internal_unref(grpc_call* c REF_ARG) { GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON); } -static void release_call(void* call, grpc_error* /*error*/) { +static void release_call(void* call, grpc_error_handle /*error*/) { grpc_call* c = static_cast(call); grpc_channel* channel = c->channel; grpc_core::Arena* arena = c->arena; @@ -533,7 +534,7 @@ static void release_call(void* call, grpc_error* /*error*/) { GRPC_CHANNEL_INTERNAL_UNREF(channel, "call"); } -static void destroy_call(void* call, grpc_error* /*error*/) { +static void destroy_call(void* call, grpc_error_handle /*error*/) { GPR_TIMER_SCOPE("destroy_call", 0); size_t i; int ii; @@ -559,8 +560,8 @@ static void destroy_call(void* call, grpc_error* /*error*/) { GRPC_CQ_INTERNAL_UNREF(c->cq, "bind"); } - grpc_error* status_error = - reinterpret_cast(gpr_atm_acq_load(&c->status_error)); + grpc_error_handle status_error = + reinterpret_cast(gpr_atm_acq_load(&c->status_error)); grpc_error_get_status(status_error, c->send_deadline, &c->final_info.final_status, nullptr, nullptr, &(c->final_info.error_string)); @@ -627,7 +628,8 @@ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) { // This is called via the call combiner to start sending a batch down // the filter stack. -static void execute_batch_in_call_combiner(void* arg, grpc_error* /*ignored*/) { +static void execute_batch_in_call_combiner(void* arg, + grpc_error_handle /*ignored*/) { GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0); grpc_transport_stream_op_batch* batch = static_cast(arg); @@ -688,7 +690,7 @@ struct cancel_state { }; // The on_complete callback used when sending a cancel_stream batch down // the filter stack. Yields the call combiner when the batch is done. -static void done_termination(void* arg, grpc_error* /*error*/) { +static void done_termination(void* arg, grpc_error_handle /*error*/) { cancel_state* state = static_cast(arg); GRPC_CALL_COMBINER_STOP(&state->call->call_combiner, "on_complete for cancel_stream op"); @@ -696,7 +698,7 @@ static void done_termination(void* arg, grpc_error* /*error*/) { gpr_free(state); } -static void cancel_with_error(grpc_call* c, grpc_error* error) { +static void cancel_with_error(grpc_call* c, grpc_error_handle error) { if (!gpr_atm_rel_cas(&c->cancelled_with_error, 0, 1)) { GRPC_ERROR_UNREF(error); return; @@ -722,8 +724,8 @@ void grpc_call_cancel_internal(grpc_call* call) { cancel_with_error(call, GRPC_ERROR_CANCELLED); } -static grpc_error* error_from_status(grpc_status_code status, - const char* description) { +static grpc_error_handle error_from_status(grpc_status_code status, + const char* description) { // copying 'description' is needed to ensure the grpc_call_cancel_with_status // guarantee that can be short-lived. return grpc_error_set_int( @@ -738,7 +740,7 @@ static void cancel_with_status(grpc_call* c, grpc_status_code status, cancel_with_error(c, error_from_status(status, description)); } -static void set_final_status(grpc_call* call, grpc_error* error) { +static void set_final_status(grpc_call* call, grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) { gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR"); gpr_log(GPR_DEBUG, "%s", grpc_error_string(error)); @@ -767,7 +769,7 @@ static void set_final_status(grpc_call* call, grpc_error* error) { call->final_op.server.core_server->channelz_node(); if (channelz_node != nullptr) { if (*call->final_op.server.cancelled || - reinterpret_cast( + reinterpret_cast( gpr_atm_acq_load(&call->status_error)) != GRPC_ERROR_NONE) { channelz_node->RecordCallFailed(); } else { @@ -949,7 +951,7 @@ static int prepare_application_metadata(grpc_call* call, int count, for (i = 0; i < total_count; i++) { grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count); grpc_linked_mdelem* l = linked_from_md(md); - grpc_error* error = grpc_metadata_batch_link_tail(batch, l); + grpc_error_handle error = grpc_metadata_batch_link_tail(batch, l); if (error != GRPC_ERROR_NONE) { GRPC_MDELEM_UNREF(l->md); } @@ -1050,14 +1052,14 @@ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) { } static void recv_trailing_filter(void* args, grpc_metadata_batch* b, - grpc_error* batch_error) { + grpc_error_handle batch_error) { grpc_call* call = static_cast(args); if (batch_error != GRPC_ERROR_NONE) { set_final_status(call, batch_error); } else if (b->idx.named.grpc_status != nullptr) { grpc_status_code status_code = grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (status_code != GRPC_STATUS_OK) { char* peer = grpc_call_get_peer(call); error = grpc_error_set_int( @@ -1168,8 +1170,8 @@ static void finish_batch_completion(void* user_data, } static void reset_batch_errors(batch_control* bctl) { - GRPC_ERROR_UNREF( - reinterpret_cast(gpr_atm_acq_load(&bctl->batch_error))); + GRPC_ERROR_UNREF(reinterpret_cast( + gpr_atm_acq_load(&bctl->batch_error))); gpr_atm_rel_store(&bctl->batch_error, reinterpret_cast(GRPC_ERROR_NONE)); } @@ -1177,8 +1179,8 @@ static void reset_batch_errors(batch_control* bctl) { static void post_batch_completion(batch_control* bctl) { grpc_call* next_child_call; grpc_call* call = bctl->call; - grpc_error* error = GRPC_ERROR_REF( - reinterpret_cast(gpr_atm_acq_load(&bctl->batch_error))); + grpc_error_handle error = GRPC_ERROR_REF(reinterpret_cast( + gpr_atm_acq_load(&bctl->batch_error))); if (bctl->op.send_initial_metadata) { grpc_metadata_batch_destroy( @@ -1251,7 +1253,7 @@ static void finish_batch_step(batch_control* bctl) { } static void continue_receiving_slices(batch_control* bctl) { - grpc_error* error; + grpc_error_handle error; grpc_call* call = bctl->call; for (;;) { size_t remaining = call->receiving_stream->length() - @@ -1282,7 +1284,7 @@ static void continue_receiving_slices(batch_control* bctl) { } } -static void receiving_slice_ready(void* bctlp, grpc_error* error) { +static void receiving_slice_ready(void* bctlp, grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; bool release_error = false; @@ -1342,13 +1344,13 @@ static void process_data_after_md(batch_control* bctl) { } } -static void receiving_stream_ready(void* bctlp, grpc_error* error) { +static void receiving_stream_ready(void* bctlp, grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; if (error != GRPC_ERROR_NONE) { call->receiving_stream.reset(); - if (reinterpret_cast(gpr_atm_acq_load(&bctl->batch_error)) == - GRPC_ERROR_NONE) { + if (reinterpret_cast( + gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) { gpr_atm_rel_store(&bctl->batch_error, reinterpret_cast(GRPC_ERROR_REF(error))); } @@ -1368,7 +1370,7 @@ static void receiving_stream_ready(void* bctlp, grpc_error* error) { // a recv_message op down the filter stack. Yields the call combiner // before processing the received message. static void receiving_stream_ready_in_call_combiner(void* bctlp, - grpc_error* error) { + grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready"); @@ -1461,7 +1463,8 @@ static void validate_filtered_metadata(batch_control* bctl) { } } -static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) { +static void receiving_initial_metadata_ready(void* bctlp, + grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; @@ -1480,8 +1483,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) { call->send_deadline = md->deadline; } } else { - if (reinterpret_cast(gpr_atm_acq_load(&bctl->batch_error)) == - GRPC_ERROR_NONE) { + if (reinterpret_cast( + gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) { gpr_atm_rel_store(&bctl->batch_error, reinterpret_cast(GRPC_ERROR_REF(error))); } @@ -1520,7 +1523,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) { finish_batch_step(bctl); } -static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) { +static void receiving_trailing_metadata_ready(void* bctlp, + grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready"); @@ -1530,12 +1534,12 @@ static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) { finish_batch_step(bctl); } -static void finish_batch(void* bctlp, grpc_error* error) { +static void finish_batch(void* bctlp, grpc_error_handle error) { batch_control* bctl = static_cast(bctlp); grpc_call* call = bctl->call; GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete"); - if (reinterpret_cast(gpr_atm_acq_load(&bctl->batch_error)) == - GRPC_ERROR_NONE) { + if (reinterpret_cast( + gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) { gpr_atm_rel_store(&bctl->batch_error, reinterpret_cast(GRPC_ERROR_REF(error))); } @@ -1752,7 +1756,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops, call->send_extra_metadata_count = 1; call->send_extra_metadata[0].md = grpc_get_reffed_status_elem( op->data.send_status_from_server.status); - grpc_error* status_error = + grpc_error_handle status_error = op->data.send_status_from_server.status == GRPC_STATUS_OK ? GRPC_ERROR_NONE : grpc_error_set_int( diff --git a/src/core/lib/surface/call.h b/src/core/lib/surface/call.h index 34d01db9029..a6ad3cae173 100644 --- a/src/core/lib/surface/call.h +++ b/src/core/lib/surface/call.h @@ -55,8 +55,8 @@ typedef struct grpc_call_create_args { /* Create a new call based on \a args. Regardless of success or failure, always returns a valid new call into *call */ -grpc_error* grpc_call_create(const grpc_call_create_args* args, - grpc_call** call); +grpc_error_handle grpc_call_create(const grpc_call_create_args* args, + grpc_call** call); void grpc_call_set_completion_queue(grpc_call* call, grpc_completion_queue* cq); diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index d68f43fced3..11406d5d23c 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -54,11 +54,11 @@ * (OK, Cancelled, Unknown). */ #define NUM_CACHED_STATUS_ELEMS 3 -static void destroy_channel(void* arg, grpc_error* error); +static void destroy_channel(void* arg, grpc_error_handle error); grpc_channel* grpc_channel_create_with_builder( grpc_channel_stack_builder* builder, - grpc_channel_stack_type channel_stack_type, grpc_error** error) { + grpc_channel_stack_type channel_stack_type, grpc_error_handle* error) { char* target = gpr_strdup(grpc_channel_stack_builder_get_target(builder)); grpc_channel_args* args = grpc_channel_args_copy( grpc_channel_stack_builder_get_channel_arguments(builder)); @@ -70,7 +70,7 @@ grpc_channel* grpc_channel_create_with_builder( } else { GRPC_STATS_INC_CLIENT_CHANNELS_CREATED(); } - grpc_error* builder_error = grpc_channel_stack_builder_finish( + grpc_error_handle builder_error = grpc_channel_stack_builder_finish( builder, sizeof(grpc_channel), 1, destroy_channel, nullptr, reinterpret_cast(&channel)); if (builder_error != GRPC_ERROR_NONE) { @@ -225,7 +225,7 @@ grpc_channel* grpc_channel_create(const char* target, grpc_channel_stack_type channel_stack_type, grpc_transport* optional_transport, grpc_resource_user* resource_user, - grpc_error** error) { + grpc_error_handle* error) { // We need to make sure that grpc_shutdown() does not shut things down // until after the channel is destroyed. However, the channel may not // actually be destroyed by the time grpc_channel_destroy() returns, @@ -497,7 +497,7 @@ grpc_call* grpc_channel_create_registered_call( return call; } -static void destroy_channel(void* arg, grpc_error* /*error*/) { +static void destroy_channel(void* arg, grpc_error_handle /*error*/) { grpc_channel* channel = static_cast(arg); if (channel->channelz_node != nullptr) { channel->channelz_node->AddTraceEvent( diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h index bb723636b89..8a14a72d131 100644 --- a/src/core/lib/surface/channel.h +++ b/src/core/lib/surface/channel.h @@ -35,7 +35,7 @@ grpc_channel* grpc_channel_create(const char* target, grpc_channel_stack_type channel_stack_type, grpc_transport* optional_transport, grpc_resource_user* resource_user = nullptr, - grpc_error** error = nullptr); + grpc_error_handle* error = nullptr); /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so * is safe to use from within core. */ @@ -43,7 +43,8 @@ void grpc_channel_destroy_internal(grpc_channel* channel); grpc_channel* grpc_channel_create_with_builder( grpc_channel_stack_builder* builder, - grpc_channel_stack_type channel_stack_type, grpc_error** error = nullptr); + grpc_channel_stack_type channel_stack_type, + grpc_error_handle* error = nullptr); /** Create a call given a grpc_channel, in order to call \a method. Progress is tied to activity on \a pollset_set. The returned call object is diff --git a/src/core/lib/surface/channel_ping.cc b/src/core/lib/surface/channel_ping.cc index 82e552194b8..a6e53ec409e 100644 --- a/src/core/lib/surface/channel_ping.cc +++ b/src/core/lib/surface/channel_ping.cc @@ -38,7 +38,7 @@ static void ping_destroy(void* arg, grpc_cq_completion* /*storage*/) { gpr_free(arg); } -static void ping_done(void* arg, grpc_error* error) { +static void ping_done(void* arg, grpc_error_handle error) { ping_result* pr = static_cast(arg); grpc_cq_end_op(pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, pr, &pr->completion_storage); diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index 9091c9d442e..73bf2061727 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -70,10 +70,10 @@ struct cq_poller_vtable { bool can_listen; size_t (*size)(void); void (*init)(grpc_pollset* pollset, gpr_mu** mu); - grpc_error* (*kick)(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker); - grpc_error* (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker, - grpc_millis deadline); + grpc_error_handle (*kick)(grpc_pollset* pollset, + grpc_pollset_worker* specific_worker); + grpc_error_handle (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker, + grpc_millis deadline); void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure); void (*destroy)(grpc_pollset* pollset); }; @@ -103,9 +103,9 @@ void non_polling_poller_destroy(grpc_pollset* pollset) { gpr_mu_destroy(&npp->mu); } -grpc_error* non_polling_poller_work(grpc_pollset* pollset, - grpc_pollset_worker** worker, - grpc_millis deadline) { +grpc_error_handle non_polling_poller_work(grpc_pollset* pollset, + grpc_pollset_worker** worker, + grpc_millis deadline) { non_polling_poller* npp = reinterpret_cast(pollset); if (npp->shutdown) return GRPC_ERROR_NONE; if (npp->kicked_without_poller) { @@ -145,8 +145,8 @@ grpc_error* non_polling_poller_work(grpc_pollset* pollset, return GRPC_ERROR_NONE; } -grpc_error* non_polling_poller_kick(grpc_pollset* pollset, - grpc_pollset_worker* specific_worker) { +grpc_error_handle non_polling_poller_kick( + grpc_pollset* pollset, grpc_pollset_worker* specific_worker) { non_polling_poller* p = reinterpret_cast(pollset); if (specific_worker == nullptr) { specific_worker = reinterpret_cast(p->root); @@ -202,7 +202,7 @@ struct cq_vtable { void (*shutdown)(grpc_completion_queue* cq); void (*destroy)(void* data); bool (*begin_op)(grpc_completion_queue* cq, void* tag); - void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error* error, + void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal); 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); // safe to free up that storage. The storage MUST NOT be freed until the // done callback is invoked. static void cq_end_op_for_next( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal); static void cq_end_op_for_pluck( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal); static void cq_end_op_for_callback( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal); @@ -439,7 +439,7 @@ grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck"); } \ } while (0) -static void on_pollset_shutdown_done(void* arg, grpc_error* error); +static void on_pollset_shutdown_done(void* arg, grpc_error_handle error); void grpc_cq_global_init() { gpr_tls_init(&g_cached_event); @@ -604,7 +604,7 @@ void grpc_cq_internal_ref(grpc_completion_queue* cq) { cq->owning_refs.Ref(debug_location, reason); } -static void on_pollset_shutdown_done(void* arg, grpc_error* /*error*/) { +static void on_pollset_shutdown_done(void* arg, grpc_error_handle /*error*/) { grpc_completion_queue* cq = static_cast(arg); GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy"); } @@ -690,7 +690,7 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) { * completion * type of GRPC_CQ_NEXT) */ static void cq_end_op_for_next( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool /*internal*/) { GPR_TIMER_SCOPE("cq_end_op_for_next", 0); @@ -736,7 +736,7 @@ static void cq_end_op_for_next( /* Only kick if this is the first item queued */ if (is_first) { gpr_mu_lock(cq->mu); - grpc_error* kick_error = + grpc_error_handle kick_error = cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr); gpr_mu_unlock(cq->mu); @@ -771,7 +771,7 @@ static void cq_end_op_for_next( * completion * type of GRPC_CQ_PLUCK) */ static void cq_end_op_for_pluck( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool /*internal*/) { GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0); @@ -820,7 +820,7 @@ static void cq_end_op_for_pluck( } } - grpc_error* kick_error = + grpc_error_handle kick_error = cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker); gpr_mu_unlock(cq->mu); @@ -836,14 +836,14 @@ static void cq_end_op_for_pluck( GRPC_ERROR_UNREF(error); } -static void functor_callback(void* arg, grpc_error* error) { +static void functor_callback(void* arg, grpc_error_handle error) { auto* functor = static_cast(arg); functor->functor_run(functor, error == GRPC_ERROR_NONE); } /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */ static void cq_end_op_for_callback( - grpc_completion_queue* cq, void* tag, grpc_error* error, + grpc_completion_queue* cq, void* tag, grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal) { GPR_TIMER_SCOPE("cq_end_op_for_callback", 0); @@ -896,7 +896,8 @@ static void cq_end_op_for_callback( GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error); } -void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error, +void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, + grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal) { @@ -1056,8 +1057,8 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, /* The main polling work happens in grpc_pollset_work */ gpr_mu_lock(cq->mu); cq->num_polls++; - grpc_error* err = cq->poller_vtable->work(POLLSET_FROM_CQ(cq), nullptr, - iteration_deadline); + grpc_error_handle err = cq->poller_vtable->work( + POLLSET_FROM_CQ(cq), nullptr, iteration_deadline); gpr_mu_unlock(cq->mu); if (err != GRPC_ERROR_NONE) { @@ -1299,7 +1300,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, break; } cq->num_polls++; - grpc_error* err = + grpc_error_handle err = cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis); if (err != GRPC_ERROR_NONE) { del_plucker(cq, tag, &worker); diff --git a/src/core/lib/surface/completion_queue.h b/src/core/lib/surface/completion_queue.h index 59116d43281..2bf91faf6f9 100644 --- a/src/core/lib/surface/completion_queue.h +++ b/src/core/lib/surface/completion_queue.h @@ -77,7 +77,8 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag); /* Queue a GRPC_OP_COMPLETED operation; tag must correspond to the tag passed to grpc_cq_begin_op */ -void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error, +void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, + grpc_error_handle error, void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, bool internal = false); diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index f92c1920df3..65e659ac763 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -44,14 +44,14 @@ namespace { struct ChannelData { explicit ChannelData(grpc_channel_element_args* args) : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) { - grpc_error* err = grpc_channel_args_find_pointer( + grpc_error_handle err = grpc_channel_args_find_pointer( args->channel_args, GRPC_ARG_LAME_FILTER_ERROR); if (err != nullptr) error = GRPC_ERROR_REF(err); } ~ChannelData() { GRPC_ERROR_UNREF(error); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Mutex mu; ConnectivityStateTracker state_tracker; }; @@ -98,8 +98,8 @@ static void lame_start_transport_op(grpc_channel_element* elem, } } -static grpc_error* lame_init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle lame_init_call_elem( + grpc_call_element* elem, const grpc_call_element_args* args) { CallData* calld = static_cast(elem->call_data); calld->call_combiner = args->call_combiner; return GRPC_ERROR_NONE; @@ -111,8 +111,8 @@ static void lame_destroy_call_elem(grpc_call_element* /*elem*/, ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE); } -static grpc_error* lame_init_channel_elem(grpc_channel_element* elem, - grpc_channel_element_args* args) { +static grpc_error_handle lame_init_channel_elem( + grpc_channel_element* elem, grpc_channel_element_args* args) { new (elem->channel_data) ChannelData(args); return GRPC_ERROR_NONE; } @@ -122,13 +122,13 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) { chand->~ChannelData(); } -// Channel arg vtable for a grpc_error*. +// Channel arg vtable for a grpc_error_handle. void* ErrorCopy(void* p) { - grpc_error* error = static_cast(p); + grpc_error_handle error = static_cast(p); return GRPC_ERROR_REF(error); } void ErrorDestroy(void* p) { - grpc_error* error = static_cast(p); + grpc_error_handle error = static_cast(p); GRPC_ERROR_UNREF(error); } int ErrorCompare(void* p, void* q) { return GPR_ICMP(p, q); } @@ -137,7 +137,7 @@ const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = { } // namespace -grpc_arg MakeLameClientErrorArg(grpc_error* error) { +grpc_arg MakeLameClientErrorArg(grpc_error_handle error) { return grpc_channel_arg_pointer_create( const_cast(GRPC_ARG_LAME_FILTER_ERROR), error, &kLameFilterErrorArgVtable); @@ -169,7 +169,7 @@ grpc_channel* grpc_lame_client_channel_create(const char* target, "grpc_lame_client_channel_create(target=%s, error_code=%d, " "error_message=%s)", 3, (target, (int)error_code, error_message)); - grpc_error* error = grpc_error_set_str( + grpc_error_handle error = grpc_error_set_str( grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"), GRPC_ERROR_INT_GRPC_STATUS, error_code), diff --git a/src/core/lib/surface/lame_client.h b/src/core/lib/surface/lame_client.h index 94c7e553ad8..41759cbb8ce 100644 --- a/src/core/lib/surface/lame_client.h +++ b/src/core/lib/surface/lame_client.h @@ -25,7 +25,7 @@ namespace grpc_core { // Does NOT take ownership of error. -grpc_arg MakeLameClientErrorArg(grpc_error* error); +grpc_arg MakeLameClientErrorArg(grpc_error_handle error); } // namespace grpc_core extern const grpc_channel_filter grpc_lame_filter; diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index a97c1c57cee..a8b4aaaecf9 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -159,7 +159,7 @@ class Server::RequestMatcherInterface { // Mark all application-requested RPCs failed if they have not been matched to // an incoming RPC. The error parameter indicates why the RPCs are being // failed (always server shutdown in all current implementations). - virtual void KillRequests(grpc_error* error) = 0; + virtual void KillRequests(grpc_error_handle error) = 0; // How many request queues are supported by this matcher. This is an abstract // concept that essentially maps to gRPC completion queues. @@ -211,7 +211,7 @@ class Server::RealRequestMatcher : public RequestMatcherInterface { } } - void KillRequests(grpc_error* error) override { + void KillRequests(grpc_error_handle error) override { for (size_t i = 0; i < requests_per_cq_.size(); i++) { RequestedCall* rc; while ((rc = reinterpret_cast( @@ -336,7 +336,9 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface { void ZombifyPending() override {} - void KillRequests(grpc_error* error) override { GRPC_ERROR_UNREF(error); } + void KillRequests(grpc_error_handle error) override { + GRPC_ERROR_UNREF(error); + } size_t request_queue_count() const override { return 0; } @@ -444,7 +446,7 @@ class ChannelBroadcaster { } // Broadcasts a shutdown on each channel. - void BroadcastShutdown(bool send_goaway, grpc_error* force_disconnect) { + void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) { for (grpc_channel* channel : channels_) { SendShutdown(channel, send_goaway, GRPC_ERROR_REF(force_disconnect)); GRPC_CHANNEL_INTERNAL_UNREF(channel, "broadcast"); @@ -459,14 +461,14 @@ class ChannelBroadcaster { grpc_slice slice; }; - static void ShutdownCleanup(void* arg, grpc_error* /*error*/) { + static void ShutdownCleanup(void* arg, grpc_error_handle /*error*/) { ShutdownCleanupArgs* a = static_cast(arg); grpc_slice_unref_internal(a->slice); delete a; } static void SendShutdown(grpc_channel* channel, bool send_goaway, - grpc_error* send_disconnect) { + grpc_error_handle send_disconnect) { ShutdownCleanupArgs* sc = new ShutdownCleanupArgs; GRPC_CLOSURE_INIT(&sc->closure, ShutdownCleanup, sc, grpc_schedule_on_exec_ctx); @@ -607,13 +609,13 @@ void Server::Start() { starting_cv_.Signal(); } -grpc_error* Server::SetupTransport( +grpc_error_handle Server::SetupTransport( grpc_transport* transport, grpc_pollset* accepting_pollset, const grpc_channel_args* args, const RefCountedPtr& socket_node, grpc_resource_user* resource_user) { // Create channel. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_channel* channel = grpc_channel_create( nullptr, args, GRPC_SERVER_CHANNEL, transport, resource_user, &error); if (channel == nullptr) { @@ -710,7 +712,8 @@ void Server::DoneRequestEvent(void* req, grpc_cq_completion* /*c*/) { delete static_cast(req); } -void Server::FailCall(size_t cq_idx, RequestedCall* rc, grpc_error* error) { +void Server::FailCall(size_t cq_idx, RequestedCall* rc, + grpc_error_handle error) { *rc->call = nullptr; rc->initial_metadata->count = 0; GPR_ASSERT(error != GRPC_ERROR_NONE); @@ -750,7 +753,7 @@ void Server::MaybeFinishShutdown() { } } -void Server::KillPendingWorkLocked(grpc_error* error) { +void Server::KillPendingWorkLocked(grpc_error_handle error) { if (started_) { unregistered_request_matcher_->KillRequests(GRPC_ERROR_REF(error)); unregistered_request_matcher_->ZombifyPending(); @@ -772,7 +775,7 @@ std::vector Server::GetChannelsLocked() const { return channels; } -void Server::ListenerDestroyDone(void* arg, grpc_error* /*error*/) { +void Server::ListenerDestroyDone(void* arg, grpc_error_handle /*error*/) { Server* server = static_cast(arg); MutexLock lock(&server->mu_global_); server->listeners_destroyed_++; @@ -1134,7 +1137,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/, args.add_initial_metadata_count = 0; args.send_deadline = GRPC_MILLIS_INF_FUTURE; grpc_call* call; - grpc_error* error = grpc_call_create(&args, &call); + grpc_error_handle error = grpc_call_create(&args, &call); grpc_call_element* elem = grpc_call_stack_element(grpc_call_get_call_stack(call), 0); auto* calld = static_cast(elem->call_data); @@ -1146,7 +1149,8 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/, calld->Start(elem); } -void Server::ChannelData::FinishDestroy(void* arg, grpc_error* /*error*/) { +void Server::ChannelData::FinishDestroy(void* arg, + grpc_error_handle /*error*/) { auto* chand = static_cast(arg); Server* server = chand->server_.get(); GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server"); @@ -1173,7 +1177,7 @@ void Server::ChannelData::Destroy() { op); } -grpc_error* Server::ChannelData::InitChannelElement( +grpc_error_handle Server::ChannelData::InitChannelElement( grpc_channel_element* elem, grpc_channel_element_args* args) { GPR_ASSERT(args->is_first); GPR_ASSERT(!args->is_last); @@ -1284,7 +1288,7 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) { rc, &rc->completion, true); } -void Server::CallData::PublishNewRpc(void* arg, grpc_error* error) { +void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) { grpc_call_element* call_elem = static_cast(arg); auto* calld = static_cast(call_elem->call_data); auto* chand = static_cast(call_elem->channel_data); @@ -1300,7 +1304,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error* error) { namespace { -void KillZombieClosure(void* call, grpc_error* /*error*/) { +void KillZombieClosure(void* call, grpc_error_handle /*error*/) { grpc_call_unref(static_cast(call)); } @@ -1352,8 +1356,8 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) { } } -void Server::CallData::RecvInitialMetadataBatchComplete(void* arg, - grpc_error* error) { +void Server::CallData::RecvInitialMetadataBatchComplete( + void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); auto* calld = static_cast(elem->call_data); if (error != GRPC_ERROR_NONE) { @@ -1385,7 +1389,8 @@ void Server::CallData::StartTransportStreamOpBatchImpl( grpc_call_next_op(elem, batch); } -void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) { +void Server::CallData::RecvInitialMetadataReady(void* arg, + grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); CallData* calld = static_cast(elem->call_data); grpc_millis op_deadline; @@ -1411,7 +1416,7 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) { /* do nothing */ } else { /* Pass the error reference to calld->recv_initial_metadata_error */ - grpc_error* src_error = error; + grpc_error_handle src_error = error; error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Missing :authority or :path", &src_error, 1); GRPC_ERROR_UNREF(src_error); @@ -1428,7 +1433,8 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) { Closure::Run(DEBUG_LOCATION, closure, error); } -void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) { +void Server::CallData::RecvTrailingMetadataReady(void* arg, + grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); CallData* calld = static_cast(elem->call_data); if (calld->original_recv_initial_metadata_ready_ != nullptr) { @@ -1449,7 +1455,7 @@ void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) { error); } -grpc_error* Server::CallData::InitCallElement( +grpc_error_handle Server::CallData::InitCallElement( grpc_call_element* elem, const grpc_call_element_args* args) { auto* chand = static_cast(elem->channel_data); new (elem->call_data) Server::CallData(elem, *args, chand->server()); diff --git a/src/core/lib/surface/server.h b/src/core/lib/surface/server.h index ef8ad122c79..413a5a8a0a2 100644 --- a/src/core/lib/surface/server.h +++ b/src/core/lib/surface/server.h @@ -128,7 +128,7 @@ class Server : public InternallyRefCounted { // Sets up a transport. Creates a channel stack and binds the transport to // the server. Called from the listener when a new connection is accepted. - grpc_error* SetupTransport( + grpc_error_handle SetupTransport( grpc_transport* transport, grpc_pollset* accepting_pollset, const grpc_channel_args* args, const RefCountedPtr& socket_node, @@ -202,8 +202,8 @@ class Server : public InternallyRefCounted { bool is_idempotent); // Filter vtable functions. - static grpc_error* InitChannelElement(grpc_channel_element* elem, - grpc_channel_element_args* args); + static grpc_error_handle InitChannelElement( + grpc_channel_element* elem, grpc_channel_element_args* args); static void DestroyChannelElement(grpc_channel_element* elem); private: @@ -214,7 +214,7 @@ class Server : public InternallyRefCounted { void Destroy() ABSL_EXCLUSIVE_LOCKS_REQUIRED(server_->mu_global_); - static void FinishDestroy(void* arg, grpc_error* error); + static void FinishDestroy(void* arg, grpc_error_handle error); RefCountedPtr server_; grpc_channel* channel_; @@ -264,8 +264,8 @@ class Server : public InternallyRefCounted { void FailCallCreation(); // Filter vtable functions. - static grpc_error* InitCallElement(grpc_call_element* elem, - const grpc_call_element_args* args); + static grpc_error_handle InitCallElement( + grpc_call_element* elem, const grpc_call_element_args* args); static void DestroyCallElement(grpc_call_element* elem, const grpc_call_final_info* /*final_info*/, grpc_closure* /*ignored*/); @@ -274,15 +274,16 @@ class Server : public InternallyRefCounted { private: // Helper functions for handling calls at the top of the call stack. - static void RecvInitialMetadataBatchComplete(void* arg, grpc_error* error); + static void RecvInitialMetadataBatchComplete(void* arg, + grpc_error_handle error); void StartNewRpc(grpc_call_element* elem); - static void PublishNewRpc(void* arg, grpc_error* error); + static void PublishNewRpc(void* arg, grpc_error_handle error); // Functions used inside the call stack. void StartTransportStreamOpBatchImpl(grpc_call_element* elem, grpc_transport_stream_op_batch* batch); - static void RecvInitialMetadataReady(void* arg, grpc_error* error); - static void RecvTrailingMetadataReady(void* arg, grpc_error* error); + static void RecvInitialMetadataReady(void* arg, grpc_error_handle error); + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); RefCountedPtr server_; @@ -309,12 +310,12 @@ class Server : public InternallyRefCounted { uint32_t recv_initial_metadata_flags_ = 0; grpc_closure recv_initial_metadata_ready_; grpc_closure* original_recv_initial_metadata_ready_; - grpc_error* recv_initial_metadata_error_ = GRPC_ERROR_NONE; + grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE; bool seen_recv_trailing_metadata_ready_ = false; grpc_closure recv_trailing_metadata_ready_; grpc_closure* original_recv_trailing_metadata_ready_; - grpc_error* recv_trailing_metadata_error_ = GRPC_ERROR_NONE; + grpc_error_handle recv_trailing_metadata_error_ = GRPC_ERROR_NONE; grpc_closure publish_; @@ -336,7 +337,7 @@ class Server : public InternallyRefCounted { grpc_cq_completion completion; }; - static void ListenerDestroyDone(void* arg, grpc_error* error); + static void ListenerDestroyDone(void* arg, grpc_error_handle error); static void DoneShutdownEvent(void* server, grpc_cq_completion* /*completion*/) { @@ -345,13 +346,13 @@ class Server : public InternallyRefCounted { static void DoneRequestEvent(void* req, grpc_cq_completion* completion); - void FailCall(size_t cq_idx, RequestedCall* rc, grpc_error* error); + void FailCall(size_t cq_idx, RequestedCall* rc, grpc_error_handle error); grpc_call_error QueueRequestedCall(size_t cq_idx, RequestedCall* rc); void MaybeFinishShutdown() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_global_) ABSL_LOCKS_EXCLUDED(mu_call_); - void KillPendingWorkLocked(grpc_error* error) + void KillPendingWorkLocked(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_call_); static grpc_call_error ValidateServerRequest( diff --git a/src/core/lib/surface/validate_metadata.cc b/src/core/lib/surface/validate_metadata.cc index 138f5745e51..c1ec936e471 100644 --- a/src/core/lib/surface/validate_metadata.cc +++ b/src/core/lib/surface/validate_metadata.cc @@ -30,9 +30,9 @@ #include "src/core/lib/slice/slice_string_helpers.h" #include "src/core/lib/surface/validate_metadata.h" -static grpc_error* conforms_to(const grpc_slice& slice, - const uint8_t* legal_bits, - const char* err_desc) { +static grpc_error_handle conforms_to(const grpc_slice& slice, + const uint8_t* legal_bits, + const char* err_desc) { const uint8_t* p = GRPC_SLICE_START_PTR(slice); const uint8_t* e = GRPC_SLICE_END_PTR(slice); for (; p != e; p++) { @@ -40,7 +40,7 @@ static grpc_error* conforms_to(const grpc_slice& slice, int byte = idx / 8; int bit = idx % 8; if ((legal_bits[byte] & (1 << bit)) == 0) { - grpc_error* error = grpc_error_set_str( + grpc_error_handle error = grpc_error_set_str( grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_desc), GRPC_ERROR_INT_OFFSET, p - GRPC_SLICE_START_PTR(slice)), @@ -52,13 +52,13 @@ static grpc_error* conforms_to(const grpc_slice& slice, return GRPC_ERROR_NONE; } -static int error2int(grpc_error* error) { +static int error2int(grpc_error_handle error) { int r = (error == GRPC_ERROR_NONE); GRPC_ERROR_UNREF(error); return r; } -grpc_error* grpc_validate_header_key_is_legal(const grpc_slice& slice) { +grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) { static const uint8_t legal_header_bits[256 / 8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -82,7 +82,7 @@ int grpc_header_key_is_legal(grpc_slice slice) { return error2int(grpc_validate_header_key_is_legal(slice)); } -grpc_error* grpc_validate_header_nonbin_value_is_legal( +grpc_error_handle grpc_validate_header_nonbin_value_is_legal( const grpc_slice& slice) { static const uint8_t legal_header_bits[256 / 8] = { 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, diff --git a/src/core/lib/surface/validate_metadata.h b/src/core/lib/surface/validate_metadata.h index 07c802c98b8..daaaa1a3783 100644 --- a/src/core/lib/surface/validate_metadata.h +++ b/src/core/lib/surface/validate_metadata.h @@ -27,8 +27,9 @@ #include "src/core/lib/iomgr/error.h" -grpc_error* grpc_validate_header_key_is_legal(const grpc_slice& slice); -grpc_error* grpc_validate_header_nonbin_value_is_legal(const grpc_slice& slice); +grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice); +grpc_error_handle grpc_validate_header_nonbin_value_is_legal( + const grpc_slice& slice); int grpc_is_binary_header_internal(const grpc_slice& slice); inline int grpc_key_is_binary_header(const uint8_t* buf, size_t length) { diff --git a/src/core/lib/transport/byte_stream.cc b/src/core/lib/transport/byte_stream.cc index 82f34ca1504..3cc5275e51d 100644 --- a/src/core/lib/transport/byte_stream.cc +++ b/src/core/lib/transport/byte_stream.cc @@ -59,7 +59,7 @@ bool SliceBufferByteStream::Next(size_t /*max_size_hint*/, return true; } -grpc_error* SliceBufferByteStream::Pull(grpc_slice* slice) { +grpc_error_handle SliceBufferByteStream::Pull(grpc_slice* slice) { if (GPR_UNLIKELY(shutdown_error_ != GRPC_ERROR_NONE)) { return GRPC_ERROR_REF(shutdown_error_); } @@ -67,7 +67,7 @@ grpc_error* SliceBufferByteStream::Pull(grpc_slice* slice) { return GRPC_ERROR_NONE; } -void SliceBufferByteStream::Shutdown(grpc_error* error) { +void SliceBufferByteStream::Shutdown(grpc_error_handle error) { GRPC_ERROR_UNREF(shutdown_error_); shutdown_error_ = error; } @@ -117,7 +117,7 @@ bool ByteStreamCache::CachingByteStream::Next(size_t max_size_hint, return cache_->underlying_stream_->Next(max_size_hint, on_complete); } -grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) { +grpc_error_handle ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) { if (shutdown_error_ != GRPC_ERROR_NONE) { return GRPC_ERROR_REF(shutdown_error_); } @@ -128,7 +128,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) { return GRPC_ERROR_NONE; } GPR_ASSERT(cache_->underlying_stream_ != nullptr); - grpc_error* error = cache_->underlying_stream_->Pull(slice); + grpc_error_handle error = cache_->underlying_stream_->Pull(slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&cache_->cache_buffer_, grpc_slice_ref_internal(*slice)); @@ -142,7 +142,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) { return error; } -void ByteStreamCache::CachingByteStream::Shutdown(grpc_error* error) { +void ByteStreamCache::CachingByteStream::Shutdown(grpc_error_handle error) { GRPC_ERROR_UNREF(shutdown_error_); shutdown_error_ = GRPC_ERROR_REF(error); if (cache_->underlying_stream_ != nullptr) { diff --git a/src/core/lib/transport/byte_stream.h b/src/core/lib/transport/byte_stream.h index e83fb626b32..09a3032641d 100644 --- a/src/core/lib/transport/byte_stream.h +++ b/src/core/lib/transport/byte_stream.h @@ -56,7 +56,7 @@ class ByteStream : public Orphanable { // indicated by Next(). // // Once a slice is returned into *slice, it is owned by the caller. - virtual grpc_error* Pull(grpc_slice* slice) = 0; + virtual grpc_error_handle Pull(grpc_slice* slice) = 0; // Shuts down the byte stream. // @@ -65,7 +65,7 @@ class ByteStream : public Orphanable { // // The next call to Pull() (if any) will return the error passed to // Shutdown(). - virtual void Shutdown(grpc_error* error) = 0; + virtual void Shutdown(grpc_error_handle error) = 0; uint32_t length() const { return length_; } uint32_t flags() const { return flags_; } @@ -97,11 +97,11 @@ class SliceBufferByteStream : public ByteStream { void Orphan() override; bool Next(size_t max_size_hint, grpc_closure* on_complete) override; - grpc_error* Pull(grpc_slice* slice) override; - void Shutdown(grpc_error* error) override; + grpc_error_handle Pull(grpc_slice* slice) override; + void Shutdown(grpc_error_handle error) override; private: - grpc_error* shutdown_error_ = GRPC_ERROR_NONE; + grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE; grpc_slice_buffer backing_buffer_; }; @@ -131,8 +131,8 @@ class ByteStreamCache { void Orphan() override; bool Next(size_t max_size_hint, grpc_closure* on_complete) override; - grpc_error* Pull(grpc_slice* slice) override; - void Shutdown(grpc_error* error) override; + grpc_error_handle Pull(grpc_slice* slice) override; + void Shutdown(grpc_error_handle error) override; // Resets the byte stream to the start of the underlying stream. void Reset(); @@ -141,7 +141,7 @@ class ByteStreamCache { ByteStreamCache* cache_; size_t cursor_ = 0; size_t offset_ = 0; - grpc_error* shutdown_error_ = GRPC_ERROR_NONE; + grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE; }; explicit ByteStreamCache(OrphanablePtr underlying_stream); diff --git a/src/core/lib/transport/connectivity_state.cc b/src/core/lib/transport/connectivity_state.cc index c2008ab82b7..01a4f5cbf82 100644 --- a/src/core/lib/transport/connectivity_state.cc +++ b/src/core/lib/transport/connectivity_state.cc @@ -73,7 +73,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier { } private: - static void SendNotification(void* arg, grpc_error* /*ignored*/) { + static void SendNotification(void* arg, grpc_error_handle /*ignored*/) { Notifier* self = static_cast(arg); if (GRPC_TRACE_FLAG_ENABLED(grpc_connectivity_state_trace)) { gpr_log(GPR_INFO, "watcher %p: delivering async notification for %s (%s)", diff --git a/src/core/lib/transport/error_utils.cc b/src/core/lib/transport/error_utils.cc index ddd595fa55f..f4d9e824bb6 100644 --- a/src/core/lib/transport/error_utils.cc +++ b/src/core/lib/transport/error_utils.cc @@ -25,8 +25,8 @@ #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/transport/status_conversion.h" -static grpc_error* recursively_find_error_with_field(grpc_error* error, - grpc_error_ints which) { +static grpc_error_handle recursively_find_error_with_field( + grpc_error_handle error, grpc_error_ints which) { intptr_t unused; // If the error itself has a status code, return it. if (grpc_error_get_int(error, which, &unused)) { @@ -38,14 +38,15 @@ static grpc_error* recursively_find_error_with_field(grpc_error* error, while (slot != UINT8_MAX) { grpc_linked_error* lerr = reinterpret_cast(error->arena + slot); - grpc_error* result = recursively_find_error_with_field(lerr->err, which); + grpc_error_handle result = + recursively_find_error_with_field(lerr->err, which); if (result) return result; slot = lerr->next; } return nullptr; } -void grpc_error_get_status(grpc_error* error, grpc_millis deadline, +void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline, grpc_status_code* code, grpc_slice* slice, grpc_http2_error_code* http_error, const char** error_string) { @@ -71,7 +72,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline, // Start with the parent error and recurse through the tree of children // until we find the first one that has a status code. - grpc_error* found_error = + grpc_error_handle found_error = recursively_find_error_with_field(error, GRPC_ERROR_INT_GRPC_STATUS); if (found_error == nullptr) { /// If no grpc-status exists, retry through the tree to find a http2 error @@ -123,7 +124,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline, } } -absl::Status grpc_error_to_absl_status(grpc_error* error) { +absl::Status grpc_error_to_absl_status(grpc_error_handle error) { grpc_status_code status; // TODO(yashykt): This should be updated once we decide on how to use the // absl::Status payload to capture all the contents of grpc_error. @@ -136,7 +137,7 @@ absl::Status grpc_error_to_absl_status(grpc_error* error) { GRPC_SLICE_LENGTH(message))); } -grpc_error* absl_status_to_grpc_error(absl::Status status) { +grpc_error_handle absl_status_to_grpc_error(absl::Status status) { // Special error checks if (status.ok()) { return GRPC_ERROR_NONE; @@ -146,7 +147,7 @@ grpc_error* absl_status_to_grpc_error(absl::Status status) { GRPC_ERROR_INT_GRPC_STATUS, static_cast(status.code())); } -bool grpc_error_has_clear_grpc_status(grpc_error* error) { +bool grpc_error_has_clear_grpc_status(grpc_error_handle error) { intptr_t unused; if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &unused)) { return true; diff --git a/src/core/lib/transport/error_utils.h b/src/core/lib/transport/error_utils.h index 8099a695071..777e63230fa 100644 --- a/src/core/lib/transport/error_utils.h +++ b/src/core/lib/transport/error_utils.h @@ -34,25 +34,25 @@ /// be populated with the entire error string. If any of the attributes (code, /// msg, http_status, error_string) are unneeded, they can be passed as /// NULL. -void grpc_error_get_status(grpc_error* error, grpc_millis deadline, +void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline, grpc_status_code* code, grpc_slice* slice, grpc_http2_error_code* http_error, const char** error_string); -/// Utility Function to convert a grpc_error * \a error to an absl::Status. -/// Does NOT consume a ref to grpc_error. -absl::Status grpc_error_to_absl_status(grpc_error* error); +/// Utility Function to convert a grpc_error_handle \a error to an +/// absl::Status. Does NOT consume a ref to grpc_error. +absl::Status grpc_error_to_absl_status(grpc_error_handle error); /// Utility function to convert an absl::Status \a status to grpc_error. Note /// that this method does not return "special case" errors such as /// GRPC_ERROR_CANCELLED, with the exception of GRPC_ERROR_NONE returned for /// \a absl::OkStatus(). -grpc_error* absl_status_to_grpc_error(absl::Status status); +grpc_error_handle absl_status_to_grpc_error(absl::Status status); /// A utility function to check whether there is a clear status code that /// doesn't need to be guessed in \a error. This means that \a error or some /// child has GRPC_ERROR_INT_GRPC_STATUS set, or that it is GRPC_ERROR_NONE or /// GRPC_ERROR_CANCELLED -bool grpc_error_has_clear_grpc_status(grpc_error* error); +bool grpc_error_has_clear_grpc_status(grpc_error_handle error); #endif /* GRPC_CORE_LIB_TRANSPORT_ERROR_UTILS_H */ diff --git a/src/core/lib/transport/metadata_batch.cc b/src/core/lib/transport/metadata_batch.cc index 410d810788a..e85b476ca42 100644 --- a/src/core/lib/transport/metadata_batch.cc +++ b/src/core/lib/transport/metadata_batch.cc @@ -94,22 +94,23 @@ void grpc_metadata_batch_destroy(grpc_metadata_batch* batch) { } } -grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md) { - grpc_error* out = grpc_error_set_str( +grpc_error_handle grpc_attach_md_to_error(grpc_error_handle src, + grpc_mdelem md) { + grpc_error_handle out = grpc_error_set_str( grpc_error_set_str(src, GRPC_ERROR_STR_KEY, grpc_slice_ref_internal(GRPC_MDKEY(md))), GRPC_ERROR_STR_VALUE, grpc_slice_ref_internal(GRPC_MDVALUE(md))); return out; } -static grpc_error* GPR_ATTRIBUTE_NOINLINE error_with_md(grpc_mdelem md) { +static grpc_error_handle GPR_ATTRIBUTE_NOINLINE error_with_md(grpc_mdelem md) { return grpc_attach_md_to_error( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unallowed duplicate metadata"), md); } -static grpc_error* link_callout(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage, - grpc_metadata_batch_callouts_index idx) { +static grpc_error_handle link_callout(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage, + grpc_metadata_batch_callouts_index idx) { GPR_DEBUG_ASSERT(idx >= 0 && idx < GRPC_BATCH_CALLOUTS_COUNT); if (GPR_LIKELY(batch->idx.array[idx] == nullptr)) { ++batch->list.default_count; @@ -119,12 +120,12 @@ static grpc_error* link_callout(grpc_metadata_batch* batch, return error_with_md(storage->md); } -static grpc_error* maybe_link_callout(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) +static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) GRPC_MUST_USE_RESULT; -static grpc_error* maybe_link_callout(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) { +static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) { grpc_metadata_batch_callouts_index idx = GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)); if (idx == GRPC_BATCH_CALLOUTS_COUNT) { @@ -145,9 +146,9 @@ static void maybe_unlink_callout(grpc_metadata_batch* batch, batch->idx.array[idx] = nullptr; } -grpc_error* grpc_metadata_batch_add_head(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage, - grpc_mdelem elem_to_add) { +grpc_error_handle grpc_metadata_batch_add_head(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage, + grpc_mdelem elem_to_add) { GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add)); storage->md = elem_to_add; return grpc_metadata_batch_link_head(batch, storage); @@ -169,10 +170,10 @@ static void link_head(grpc_mdelem_list* list, grpc_linked_mdelem* storage) { assert_valid_list(list); } -grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) { +grpc_error_handle grpc_metadata_batch_link_head(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) { assert_valid_callouts(batch); - grpc_error* err = maybe_link_callout(batch, storage); + grpc_error_handle err = maybe_link_callout(batch, storage); if (err != GRPC_ERROR_NONE) { assert_valid_callouts(batch); return err; @@ -185,12 +186,12 @@ grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch, // TODO(arjunroy): Need to revisit this and see what guarantees exist between // C-core and the internal-metadata subsystem. E.g. can we ensure a particular // metadata is never added twice, even in the presence of user supplied data? -grpc_error* grpc_metadata_batch_link_head( +grpc_error_handle grpc_metadata_batch_link_head( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) { GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx); assert_valid_callouts(batch); - grpc_error* err = link_callout(batch, storage, idx); + grpc_error_handle err = link_callout(batch, storage, idx); if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) { assert_valid_callouts(batch); return err; @@ -200,9 +201,9 @@ grpc_error* grpc_metadata_batch_link_head( return GRPC_ERROR_NONE; } -grpc_error* grpc_metadata_batch_add_tail(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage, - grpc_mdelem elem_to_add) { +grpc_error_handle grpc_metadata_batch_add_tail(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage, + grpc_mdelem elem_to_add) { GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add)); storage->md = elem_to_add; return grpc_metadata_batch_link_tail(batch, storage); @@ -224,10 +225,10 @@ static void link_tail(grpc_mdelem_list* list, grpc_linked_mdelem* storage) { assert_valid_list(list); } -grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) { +grpc_error_handle grpc_metadata_batch_link_tail(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) { assert_valid_callouts(batch); - grpc_error* err = maybe_link_callout(batch, storage); + grpc_error_handle err = maybe_link_callout(batch, storage); if (err != GRPC_ERROR_NONE) { assert_valid_callouts(batch); return err; @@ -237,12 +238,12 @@ grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch, return GRPC_ERROR_NONE; } -grpc_error* grpc_metadata_batch_link_tail( +grpc_error_handle grpc_metadata_batch_link_tail( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) { GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx); assert_valid_callouts(batch); - grpc_error* err = link_callout(batch, storage, idx); + grpc_error_handle err = link_callout(batch, storage, idx); if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) { assert_valid_callouts(batch); return err; @@ -323,11 +324,11 @@ absl::optional grpc_metadata_batch_get_value( return *concatenated_value; } -grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage, - grpc_mdelem new_mdelem) { +grpc_error_handle grpc_metadata_batch_substitute(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage, + grpc_mdelem new_mdelem) { assert_valid_callouts(batch); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_mdelem old_mdelem = storage->md; if (!grpc_slice_eq(GRPC_MDKEY(new_mdelem), GRPC_MDKEY(old_mdelem))) { maybe_unlink_callout(batch, storage); @@ -364,7 +365,7 @@ size_t grpc_metadata_batch_size(grpc_metadata_batch* batch) { return size; } -static void add_error(grpc_error** composite, grpc_error* error, +static void add_error(grpc_error_handle* composite, grpc_error_handle error, const char* composite_error_string) { if (error == GRPC_ERROR_NONE) return; if (*composite == GRPC_ERROR_NONE) { @@ -373,12 +374,11 @@ static void add_error(grpc_error** composite, grpc_error* error, *composite = grpc_error_add_child(*composite, error); } -grpc_error* grpc_metadata_batch_filter(grpc_metadata_batch* batch, - grpc_metadata_batch_filter_func func, - void* user_data, - const char* composite_error_string) { +grpc_error_handle grpc_metadata_batch_filter( + grpc_metadata_batch* batch, grpc_metadata_batch_filter_func func, + void* user_data, const char* composite_error_string) { grpc_linked_mdelem* l = batch->list.head; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; while (l) { grpc_linked_mdelem* next = l->next; grpc_filtered_mdelem new_mdelem = func(user_data, l->md); @@ -402,7 +402,7 @@ void grpc_metadata_batch_copy(grpc_metadata_batch* src, for (grpc_linked_mdelem* elem = src->list.head; elem != nullptr; elem = elem->next) { // Error unused in non-debug builds. - grpc_error* GRPC_UNUSED error = grpc_metadata_batch_add_tail( + grpc_error_handle GRPC_UNUSED error = grpc_metadata_batch_add_tail( dst, &storage[i++], GRPC_MDELEM_REF(elem->md)); // The only way that grpc_metadata_batch_add_tail() can fail is if // there's a duplicate entry for a callout. However, that can't be diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h index d80f87936cf..b72859fcf26 100644 --- a/src/core/lib/transport/metadata_batch.h +++ b/src/core/lib/transport/metadata_batch.h @@ -74,9 +74,9 @@ void grpc_metadata_batch_remove(grpc_metadata_batch* batch, grpc_metadata_batch_callouts_index idx); /** Substitute a new mdelem for an old value */ -grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage, - grpc_mdelem new_mdelem); +grpc_error_handle grpc_metadata_batch_substitute(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage, + grpc_mdelem new_mdelem); void grpc_metadata_batch_set_value(grpc_linked_mdelem* storage, const grpc_slice& value); @@ -97,10 +97,10 @@ absl::optional grpc_metadata_batch_get_value( \a storage is owned by the caller and must survive for the lifetime of batch. This usually means it should be around for the lifetime of the call. */ -grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) +grpc_error_handle grpc_metadata_batch_link_head(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) GRPC_MUST_USE_RESULT; -grpc_error* grpc_metadata_batch_link_head( +grpc_error_handle grpc_metadata_batch_link_head( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) GRPC_MUST_USE_RESULT; @@ -109,10 +109,10 @@ grpc_error* grpc_metadata_batch_link_head( \a storage is owned by the caller and must survive for the lifetime of batch. This usually means it should be around for the lifetime of the call. */ -grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch, - grpc_linked_mdelem* storage) +grpc_error_handle grpc_metadata_batch_link_tail(grpc_metadata_batch* batch, + grpc_linked_mdelem* storage) GRPC_MUST_USE_RESULT; -grpc_error* grpc_metadata_batch_link_tail( +grpc_error_handle grpc_metadata_batch_link_tail( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) GRPC_MUST_USE_RESULT; @@ -122,19 +122,19 @@ grpc_error* grpc_metadata_batch_link_tail( lifetime of batch. This usually means it should be around for the lifetime of the call. Takes ownership of \a elem_to_add */ -grpc_error* grpc_metadata_batch_add_head( +grpc_error_handle grpc_metadata_batch_add_head( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; // TODO(arjunroy, roth): Remove redundant methods. // add/link_head/tail are almost identical. -inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head( +inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) { return grpc_metadata_batch_link_head(batch, storage, idx); } -inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head( +inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_mdelem elem_to_add, grpc_metadata_batch_callouts_index idx) { GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add)); @@ -148,17 +148,17 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head( lifetime of batch. This usually means it should be around for the lifetime of the call. Takes ownership of \a elem_to_add */ -grpc_error* grpc_metadata_batch_add_tail( +grpc_error_handle grpc_metadata_batch_add_tail( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; -inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail( +inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_metadata_batch_callouts_index idx) { return grpc_metadata_batch_link_tail(batch, storage, idx); } -inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail( +inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail( grpc_metadata_batch* batch, grpc_linked_mdelem* storage, grpc_mdelem elem_to_add, grpc_metadata_batch_callouts_index idx) { GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add)); @@ -166,10 +166,11 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail( return grpc_metadata_batch_add_tail(batch, storage, idx); } -grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md); +grpc_error_handle grpc_attach_md_to_error(grpc_error_handle src, + grpc_mdelem md); struct grpc_filtered_mdelem { - grpc_error* error; + grpc_error_handle error; grpc_mdelem md; }; #define GRPC_FILTERED_ERROR(error) \ @@ -181,7 +182,7 @@ struct grpc_filtered_mdelem { typedef grpc_filtered_mdelem (*grpc_metadata_batch_filter_func)( void* user_data, grpc_mdelem elem); -grpc_error* grpc_metadata_batch_filter( +grpc_error_handle grpc_metadata_batch_filter( grpc_metadata_batch* batch, grpc_metadata_batch_filter_func func, void* user_data, const char* composite_error_string) GRPC_MUST_USE_RESULT; diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc index dccab66dc04..36060a6bd90 100644 --- a/src/core/lib/transport/transport.cc +++ b/src/core/lib/transport/transport.cc @@ -177,7 +177,7 @@ grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport) { // though it lives in lib, it handles transport stream ops sure // it's grpc_transport_stream_op_batch_finish_with_failure void grpc_transport_stream_op_batch_finish_with_failure( - grpc_transport_stream_op_batch* batch, grpc_error* error, + grpc_transport_stream_op_batch* batch, grpc_error_handle error, grpc_core::CallCombiner* call_combiner) { if (batch->send_message) { batch->payload->send_message.send_message.reset(); @@ -219,7 +219,7 @@ struct made_transport_op { } }; -static void destroy_made_transport_op(void* arg, grpc_error* error) { +static void destroy_made_transport_op(void* arg, grpc_error_handle error) { made_transport_op* op = static_cast(arg); grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->inner_on_complete, GRPC_ERROR_REF(error)); @@ -241,7 +241,8 @@ struct made_transport_stream_op { grpc_transport_stream_op_batch op; grpc_transport_stream_op_batch_payload payload; }; -static void destroy_made_transport_stream_op(void* arg, grpc_error* error) { +static void destroy_made_transport_stream_op(void* arg, + grpc_error_handle error) { made_transport_stream_op* op = static_cast(arg); grpc_closure* c = op->inner_on_complete; gpr_free(op); diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h index 407604858d6..7372b3896eb 100644 --- a/src/core/lib/transport/transport.h +++ b/src/core/lib/transport/transport.h @@ -319,7 +319,7 @@ struct grpc_transport_stream_op_batch_payload { struct { // Error contract: the transport that gets this op must cause cancel_error // to be unref'ed after processing it - grpc_error* cancel_error = GRPC_ERROR_NONE; + grpc_error_handle cancel_error = GRPC_ERROR_NONE; } cancel_stream; /* Indexes correspond to grpc_context_index enum values */ @@ -339,11 +339,11 @@ typedef struct grpc_transport_op { /** should the transport be disconnected * Error contract: the transport that gets this op must cause * disconnect_with_error to be unref'ed after processing it */ - grpc_error* disconnect_with_error = nullptr; + grpc_error_handle disconnect_with_error = GRPC_ERROR_NONE; /** what should the goaway contain? * Error contract: the transport that gets this op must cause * goaway_error to be unref'ed after processing it */ - grpc_error* goaway_error = nullptr; + grpc_error_handle goaway_error = GRPC_ERROR_NONE; /** set the callback for accepting new streams; this is a permanent callback, unlike the other one-shot closures. If true, the callback is set to set_accept_stream_fn, with its @@ -411,7 +411,7 @@ void grpc_transport_destroy_stream(grpc_transport* transport, grpc_closure* then_schedule_closure); void grpc_transport_stream_op_batch_finish_with_failure( - grpc_transport_stream_op_batch* batch, grpc_error* error, + grpc_transport_stream_op_batch* batch, grpc_error_handle error, grpc_core::CallCombiner* call_combiner); std::string grpc_transport_stream_op_batch_string( diff --git a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc index 921de5fe3e7..9bf7dbb9e50 100644 --- a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +++ b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc @@ -439,7 +439,7 @@ static tsi_result make_grpc_call(alts_handshaker_client* c, bool is_start) { } } -static void on_status_received(void* arg, grpc_error* error) { +static void on_status_received(void* arg, grpc_error_handle error) { alts_grpc_handshaker_client* client = static_cast(arg); if (client->handshake_status_code != GRPC_STATUS_OK) { @@ -642,7 +642,7 @@ static void handshaker_client_shutdown(alts_handshaker_client* c) { } } -static void handshaker_call_unref(void* arg, grpc_error* /* error */) { +static void handshaker_call_unref(void* arg, grpc_error_handle /* error */) { grpc_call* call = static_cast(arg); grpc_call_unref(call); } @@ -838,7 +838,8 @@ void alts_handshaker_client_ref_for_testing(alts_handshaker_client* c) { } void alts_handshaker_client_on_status_received_for_testing( - alts_handshaker_client* c, grpc_status_code status, grpc_error* error) { + alts_handshaker_client* c, grpc_status_code status, + grpc_error_handle error) { // We first make sure that the handshake queue has been initialized // here because there are tests that use this API that mock out // other parts of the alts_handshaker_client in such a way that the diff --git a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc index 60df0ce71f4..e50139c727a 100644 --- a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +++ b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc @@ -372,7 +372,8 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, } /* gRPC provided callback used when gRPC thread model is applied. */ -static void on_handshaker_service_resp_recv(void* arg, grpc_error* error) { +static void on_handshaker_service_resp_recv(void* arg, + grpc_error_handle error) { alts_handshaker_client* client = static_cast(arg); if (client == nullptr) { gpr_log(GPR_ERROR, "ALTS handshaker client is nullptr"); @@ -390,8 +391,8 @@ static void on_handshaker_service_resp_recv(void* arg, grpc_error* error) { /* gRPC provided callback used when dedicatd CQ and thread are used. * It serves to safely bring the control back to application. */ -static void on_handshaker_service_resp_recv_dedicated(void* arg, - grpc_error* /*error*/) { +static void on_handshaker_service_resp_recv_dedicated( + void* arg, grpc_error_handle /*error*/) { alts_shared_resource_dedicated* resource = grpc_alts_get_shared_resource_dedicated(); grpc_cq_end_op( @@ -480,8 +481,8 @@ struct alts_tsi_handshaker_continue_handshaker_next_args { grpc_closure closure; }; -static void alts_tsi_handshaker_create_channel(void* arg, - grpc_error* /* unused_error */) { +static void alts_tsi_handshaker_create_channel( + void* arg, grpc_error_handle /* unused_error */) { alts_tsi_handshaker_continue_handshaker_next_args* next_args = static_cast(arg); alts_tsi_handshaker* handshaker = next_args->handshaker; diff --git a/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h b/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h index cb99fdcce0d..d5ab14dc034 100644 --- a/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +++ b/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h @@ -78,7 +78,8 @@ grpc_closure* alts_handshaker_client_get_closure_for_testing( alts_handshaker_client* client); void alts_handshaker_client_on_status_received_for_testing( - alts_handshaker_client* client, grpc_status_code status, grpc_error* error); + alts_handshaker_client* client, grpc_status_code status, + grpc_error_handle error); void alts_handshaker_client_ref_for_testing(alts_handshaker_client* c); diff --git a/src/cpp/client/client_callback.cc b/src/cpp/client/client_callback.cc index a05761ad063..a10e1b571cb 100644 --- a/src/cpp/client/client_callback.cc +++ b/src/cpp/client/client_callback.cc @@ -36,7 +36,7 @@ void ClientReactor::InternalScheduleOnDone(grpc::Status s) { : reactor(reactor_arg), status(std::move(s)) { GRPC_CLOSURE_INIT( &closure, - [](void* void_arg, grpc_error*) { + [](void* void_arg, grpc_error_handle) { ClosureWithArg* arg = static_cast(void_arg); arg->reactor->OnDone(arg->status); delete arg; diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc index fd9cd4ca8b2..d046fc4b57f 100644 --- a/src/cpp/client/secure_credentials.cc +++ b/src/cpp/client/secure_credentials.cc @@ -157,7 +157,7 @@ grpc::Status StsCredentialsOptionsFromJson(const std::string& json_string, "options cannot be nullptr."); } ClearStsCredentialsOptions(options); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json json = grpc_core::Json::Parse(json_string.c_str(), &error); if (error != GRPC_ERROR_NONE || json.type() != grpc_core::Json::Type::OBJECT) { @@ -215,7 +215,7 @@ grpc::Status StsCredentialsOptionsFromEnv(StsCredentialsOptions* options) { ClearStsCredentialsOptions(options); grpc_slice json_string = grpc_empty_slice(); char* sts_creds_path = gpr_getenv("STS_CREDENTIALS"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc::Status status; auto cleanup = [&json_string, &sts_creds_path, &error, &status]() { grpc_slice_unref_internal(json_string); @@ -406,7 +406,7 @@ std::shared_ptr MetadataCredentialsFromPlugin( } namespace { -void DeleteWrapper(void* wrapper, grpc_error* /*ignored*/) { +void DeleteWrapper(void* wrapper, grpc_error_handle /*ignored*/) { MetadataCredentialsPluginWrapper* w = static_cast(wrapper); delete w; diff --git a/src/cpp/common/alarm.cc b/src/cpp/common/alarm.cc index ac1b747b493..10d633c0dd4 100644 --- a/src/cpp/common/alarm.cc +++ b/src/cpp/common/alarm.cc @@ -56,7 +56,7 @@ class AlarmImpl : public ::grpc::internal::CompletionQueueTag { GPR_ASSERT(grpc_cq_begin_op(cq_, this)); GRPC_CLOSURE_INIT( &on_alarm_, - [](void* arg, grpc_error* error) { + [](void* arg, grpc_error_handle error) { // queue the op on the completion queue AlarmImpl* alarm = static_cast(arg); alarm->Ref(); @@ -82,10 +82,10 @@ class AlarmImpl : public ::grpc::internal::CompletionQueueTag { Ref(); GRPC_CLOSURE_INIT( &on_alarm_, - [](void* arg, grpc_error* error) { + [](void* arg, grpc_error_handle error) { grpc_core::Executor::Run( GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* error) { + [](void* arg, grpc_error_handle error) { AlarmImpl* alarm = static_cast(arg); alarm->callback_(error == GRPC_ERROR_NONE); alarm->Unref(); diff --git a/src/cpp/common/channel_filter.h b/src/cpp/common/channel_filter.h index b16f06bddcf..d58805632af 100644 --- a/src/cpp/common/channel_filter.h +++ b/src/cpp/common/channel_filter.h @@ -113,7 +113,7 @@ class TransportOp { grpc_transport_op* op() const { return op_; } // TODO(roth): Add a C++ wrapper for grpc_error? - grpc_error* disconnect_with_error() const { + grpc_error_handle disconnect_with_error() const { return op_->disconnect_with_error; } bool send_goaway() const { return op_->goaway_error != GRPC_ERROR_NONE; } @@ -236,8 +236,8 @@ class ChannelData { // TODO(roth): Come up with a more C++-like API for the channel element. /// Initializes the channel data. - virtual grpc_error* Init(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { + virtual grpc_error_handle Init(grpc_channel_element* /*elem*/, + grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -259,8 +259,8 @@ class CallData { // TODO(roth): Come up with a more C++-like API for the call element. /// Initializes the call data. - virtual grpc_error* Init(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { + virtual grpc_error_handle Init(grpc_call_element* /*elem*/, + const grpc_call_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -288,8 +288,8 @@ class ChannelFilter final { public: static const size_t channel_data_size = sizeof(ChannelDataType); - static grpc_error* InitChannelElement(grpc_channel_element* elem, - grpc_channel_element_args* args) { + static grpc_error_handle InitChannelElement(grpc_channel_element* elem, + grpc_channel_element_args* args) { // Construct the object in the already-allocated memory. ChannelDataType* channel_data = new (elem->channel_data) ChannelDataType(); return channel_data->Init(elem, args); @@ -319,8 +319,8 @@ class ChannelFilter final { static const size_t call_data_size = sizeof(CallDataType); - static grpc_error* InitCallElement(grpc_call_element* elem, - const grpc_call_element_args* args) { + static grpc_error_handle InitCallElement(grpc_call_element* elem, + const grpc_call_element_args* args) { // Construct the object in the already-allocated memory. CallDataType* call_data = new (elem->call_data) CallDataType(); return call_data->Init(elem, args); diff --git a/src/cpp/common/validate_service_config.cc b/src/cpp/common/validate_service_config.cc index 720c0907d85..0bc22d2d988 100644 --- a/src/cpp/common/validate_service_config.cc +++ b/src/cpp/common/validate_service_config.cc @@ -25,7 +25,7 @@ namespace grpc { namespace experimental { std::string ValidateServiceConfigJSON(const std::string& service_config_json) { grpc_init(); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::ServiceConfig::Create(/*args=*/nullptr, service_config_json.c_str(), &error); std::string return_value; diff --git a/src/cpp/ext/filters/census/channel_filter.cc b/src/cpp/ext/filters/census/channel_filter.cc index 80670bf9e48..ea3bce9f720 100644 --- a/src/cpp/ext/filters/census/channel_filter.cc +++ b/src/cpp/ext/filters/census/channel_filter.cc @@ -22,8 +22,8 @@ namespace grpc { -grpc_error* CensusChannelData::Init(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +grpc_error_handle CensusChannelData::Init(grpc_channel_element* /*elem*/, + grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/src/cpp/ext/filters/census/channel_filter.h b/src/cpp/ext/filters/census/channel_filter.h index 0b7c6826816..d756f23258e 100644 --- a/src/cpp/ext/filters/census/channel_filter.h +++ b/src/cpp/ext/filters/census/channel_filter.h @@ -27,8 +27,8 @@ namespace grpc { class CensusChannelData : public ChannelData { public: - grpc_error* Init(grpc_channel_element* elem, - grpc_channel_element_args* args) override; + grpc_error_handle Init(grpc_channel_element* elem, + grpc_channel_element_args* args) override; }; } // namespace grpc diff --git a/src/cpp/ext/filters/census/client_filter.cc b/src/cpp/ext/filters/census/client_filter.cc index c5af4d7cc11..380ad5b5497 100644 --- a/src/cpp/ext/filters/census/client_filter.cc +++ b/src/cpp/ext/filters/census/client_filter.cc @@ -53,8 +53,8 @@ void FilterTrailingMetadata(grpc_metadata_batch* b, uint64_t* elapsed_time) { } // namespace -void CensusClientCallData::OnDoneRecvTrailingMetadataCb(void* user_data, - grpc_error* error) { +void CensusClientCallData::OnDoneRecvTrailingMetadataCb( + void* user_data, grpc_error_handle error) { grpc_call_element* elem = reinterpret_cast(user_data); CensusClientCallData* calld = reinterpret_cast(elem->call_data); @@ -70,7 +70,7 @@ void CensusClientCallData::OnDoneRecvTrailingMetadataCb(void* user_data, } void CensusClientCallData::OnDoneRecvMessageCb(void* user_data, - grpc_error* error) { + grpc_error_handle error) { grpc_call_element* elem = reinterpret_cast(user_data); CensusClientCallData* calld = reinterpret_cast(elem->call_data); @@ -138,8 +138,8 @@ void CensusClientCallData::StartTransportStreamOpBatch( grpc_call_next_op(elem, op->op()); } -grpc_error* CensusClientCallData::Init(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle CensusClientCallData::Init( + grpc_call_element* elem, const grpc_call_element_args* args) { path_ = grpc_slice_ref_internal(args->path); start_time_ = absl::Now(); method_ = GetMethod(&path_); diff --git a/src/cpp/ext/filters/census/client_filter.h b/src/cpp/ext/filters/census/client_filter.h index 851022873f1..f55a4b5cdc6 100644 --- a/src/cpp/ext/filters/census/client_filter.h +++ b/src/cpp/ext/filters/census/client_filter.h @@ -54,8 +54,8 @@ class CensusClientCallData : public CallData { memset(&on_done_recv_message_, 0, sizeof(grpc_closure)); } - grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args) override; + grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args) override; void Destroy(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_call_closure) override; @@ -63,11 +63,13 @@ class CensusClientCallData : public CallData { void StartTransportStreamOpBatch(grpc_call_element* elem, TransportStreamOpBatch* op) override; - static void OnDoneRecvTrailingMetadataCb(void* user_data, grpc_error* error); + static void OnDoneRecvTrailingMetadataCb(void* user_data, + grpc_error_handle error); - static void OnDoneSendInitialMetadataCb(void* user_data, grpc_error* error); + static void OnDoneSendInitialMetadataCb(void* user_data, + grpc_error_handle error); - static void OnDoneRecvMessageCb(void* user_data, grpc_error* error); + static void OnDoneRecvMessageCb(void* user_data, grpc_error_handle error); private: CensusContext context_; diff --git a/src/cpp/ext/filters/census/server_filter.cc b/src/cpp/ext/filters/census/server_filter.cc index 61e28de635e..72ee8e16a63 100644 --- a/src/cpp/ext/filters/census/server_filter.cc +++ b/src/cpp/ext/filters/census/server_filter.cc @@ -62,7 +62,7 @@ void FilterInitialMetadata(grpc_metadata_batch* b, } // namespace void CensusServerCallData::OnDoneRecvMessageCb(void* user_data, - grpc_error* error) { + grpc_error_handle error) { grpc_call_element* elem = reinterpret_cast(user_data); CensusServerCallData* calld = reinterpret_cast(elem->call_data); @@ -78,8 +78,8 @@ void CensusServerCallData::OnDoneRecvMessageCb(void* user_data, GRPC_ERROR_REF(error)); } -void CensusServerCallData::OnDoneRecvInitialMetadataCb(void* user_data, - grpc_error* error) { +void CensusServerCallData::OnDoneRecvInitialMetadataCb( + void* user_data, grpc_error_handle error) { grpc_call_element* elem = reinterpret_cast(user_data); CensusServerCallData* calld = reinterpret_cast(elem->call_data); @@ -154,8 +154,8 @@ void CensusServerCallData::StartTransportStreamOpBatch( grpc_call_next_op(elem, op->op()); } -grpc_error* CensusServerCallData::Init(grpc_call_element* elem, - const grpc_call_element_args* args) { +grpc_error_handle CensusServerCallData::Init( + grpc_call_element* elem, const grpc_call_element_args* args) { start_time_ = absl::Now(); gc_ = grpc_call_from_top_element(grpc_call_stack_element(args->call_stack, 0)); diff --git a/src/cpp/ext/filters/census/server_filter.h b/src/cpp/ext/filters/census/server_filter.h index e393ed32839..81bec8fae94 100644 --- a/src/cpp/ext/filters/census/server_filter.h +++ b/src/cpp/ext/filters/census/server_filter.h @@ -54,8 +54,8 @@ class CensusServerCallData : public CallData { memset(&on_done_recv_message_, 0, sizeof(grpc_closure)); } - grpc_error* Init(grpc_call_element* elem, - const grpc_call_element_args* args) override; + grpc_error_handle Init(grpc_call_element* elem, + const grpc_call_element_args* args) override; void Destroy(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_call_closure) override; @@ -63,9 +63,10 @@ class CensusServerCallData : public CallData { void StartTransportStreamOpBatch(grpc_call_element* elem, TransportStreamOpBatch* op) override; - static void OnDoneRecvInitialMetadataCb(void* user_data, grpc_error* error); + static void OnDoneRecvInitialMetadataCb(void* user_data, + grpc_error_handle error); - static void OnDoneRecvMessageCb(void* user_data, grpc_error* error); + static void OnDoneRecvMessageCb(void* user_data, grpc_error_handle error); private: CensusContext context_; diff --git a/src/cpp/server/server_callback.cc b/src/cpp/server/server_callback.cc index f6b72c0fcce..5b2d328b81b 100644 --- a/src/cpp/server/server_callback.cc +++ b/src/cpp/server/server_callback.cc @@ -37,7 +37,7 @@ void ServerCallbackCall::ScheduleOnDone(bool inline_ondone) { explicit ClosureWithArg(ServerCallbackCall* call_arg) : call(call_arg) { GRPC_CLOSURE_INIT( &closure, - [](void* void_arg, grpc_error*) { + [](void* void_arg, grpc_error_handle) { ClosureWithArg* arg = static_cast(void_arg); arg->call->CallOnDone(); delete arg; @@ -66,7 +66,7 @@ void ServerCallbackCall::CallOnCancel(ServerReactor* reactor) { : call(call_arg), reactor(reactor_arg) { GRPC_CLOSURE_INIT( &closure, - [](void* void_arg, grpc_error*) { + [](void* void_arg, grpc_error_handle) { ClosureWithArg* arg = static_cast(void_arg); arg->reactor->OnCancel(); arg->call->MaybeDone(); diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/iomgr.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/iomgr.pyx.pxi index 917ae24e11e..86171def061 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/iomgr.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/iomgr.pyx.pxi @@ -31,13 +31,13 @@ cdef grpc_custom_poller_vtable asyncio_pollset_vtable cdef bint so_reuse_port -cdef grpc_error* asyncio_socket_init( +cdef grpc_error_handle asyncio_socket_init( grpc_custom_socket* grpc_socket, int domain) with gil: socket = _AsyncioSocket.create(grpc_socket, None, None) Py_INCREF(socket) grpc_socket.impl = socket - return 0 + return 0 cdef void asyncio_socket_destroy(grpc_custom_socket* grpc_socket) with gil: @@ -84,7 +84,7 @@ cdef void asyncio_socket_read( socket.read(buffer_, length, read_cb) -cdef grpc_error* asyncio_socket_getpeername( +cdef grpc_error_handle asyncio_socket_getpeername( grpc_custom_socket* grpc_socket, const grpc_sockaddr* addr, int* length) with gil: @@ -99,7 +99,7 @@ cdef grpc_error* asyncio_socket_getpeername( return grpc_error_none() -cdef grpc_error* asyncio_socket_getsockname( +cdef grpc_error_handle asyncio_socket_getsockname( grpc_custom_socket* grpc_socket, const grpc_sockaddr* addr, int* length) with gil: @@ -118,7 +118,7 @@ cdef grpc_error* asyncio_socket_getsockname( return grpc_error_none() -cdef grpc_error* asyncio_socket_listen(grpc_custom_socket* grpc_socket) with gil: +cdef grpc_error_handle asyncio_socket_listen(grpc_custom_socket* grpc_socket) with gil: (<_AsyncioSocket>grpc_socket.impl).listen() return grpc_error_none() @@ -134,7 +134,7 @@ def _asyncio_apply_socket_options(object s, int flags): s.setsockopt(native_socket.IPPROTO_TCP, native_socket.TCP_NODELAY, True) -cdef grpc_error* asyncio_socket_bind( +cdef grpc_error_handle asyncio_socket_bind( grpc_custom_socket* grpc_socket, const grpc_sockaddr* addr, size_t len, int flags) with gil: @@ -166,7 +166,7 @@ cdef void asyncio_socket_accept( (<_AsyncioSocket>grpc_socket.impl).accept(grpc_socket_client, accept_cb) -cdef grpc_error* asyncio_resolve( +cdef grpc_error_handle asyncio_resolve( const char* host, const char* port, grpc_resolved_addresses** res) with gil: diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/resolver.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/resolver.pyx.pxi index 1a2e244ff9c..64e3e6396e9 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/resolver.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/resolver.pyx.pxi @@ -45,7 +45,7 @@ cdef class _AsyncioResolver: grpc_custom_resolve_callback( self._grpc_resolver, tuples_to_resolvaddr(resolved), - 0 + 0 ) cdef void resolve(self, const char* host, const char* port): diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/socket.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/socket.pyx.pxi index eecef17d98a..43817ef87bf 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/socket.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/socket.pyx.pxi @@ -81,7 +81,7 @@ cdef class _AsyncioSocket: self._grpc_connect_cb( self._grpc_socket, - 0 + 0 ) cdef void connect(self, @@ -115,7 +115,7 @@ cdef class _AsyncioSocket: self._grpc_read_cb( self._grpc_socket, len(inbound_buffer), - 0 + 0 ) cdef void read(self, char * buffer_, size_t length, grpc_custom_read_callback grpc_read_cb): @@ -132,7 +132,7 @@ cdef class _AsyncioSocket: await self._writer.drain() self._grpc_write_cb( self._grpc_socket, - 0 + 0 ) except ConnectionError as connection_error: self._grpc_write_cb( diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/timer.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/timer.pyx.pxi index c1508373a4b..f2f7f492901 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/timer.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/iomgr/timer.pyx.pxi @@ -31,7 +31,7 @@ cdef class _AsyncioTimer: def on_time_up(self): self._active = False - grpc_custom_timer_callback(self._grpc_timer, 0) + grpc_custom_timer_callback(self._grpc_timer, 0) cpython.Py_DECREF(self) def __repr__(self): diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi index d857317ead0..c86ff2f1ff1 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi @@ -41,7 +41,7 @@ cdef class SocketWrapper: def __dealloc__(self): grpc_shutdown() -cdef grpc_error* socket_init(grpc_custom_socket* socket, int domain) with gil: +cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil: sw = SocketWrapper() sw.c_socket = socket sw.sockopts = [] @@ -168,7 +168,7 @@ cdef void socket_read(grpc_custom_socket* socket, char* buffer, sw.len = length _spawn_greenlet(socket_read_async, sw) -cdef grpc_error* socket_getpeername(grpc_custom_socket* socket, +cdef grpc_error_handle socket_getpeername(grpc_custom_socket* socket, const grpc_sockaddr* addr, int* length) with gil: cdef char* src_buf @@ -181,7 +181,7 @@ cdef grpc_error* socket_getpeername(grpc_custom_socket* socket, length[0] = c_addr.len return grpc_error_none() -cdef grpc_error* socket_getsockname(grpc_custom_socket* socket, +cdef grpc_error_handle socket_getsockname(grpc_custom_socket* socket, const grpc_sockaddr* addr, int* length) with gil: cdef char* src_buf @@ -200,7 +200,7 @@ def applysockopts(s): s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1) s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True) -cdef grpc_error* socket_bind(grpc_custom_socket* socket, +cdef grpc_error_handle socket_bind(grpc_custom_socket* socket, const grpc_sockaddr* addr, size_t len, int flags) with gil: addr_tuple = sockaddr_to_tuple(addr, len) @@ -219,7 +219,7 @@ cdef grpc_error* socket_bind(grpc_custom_socket* socket, else: return grpc_error_none() -cdef grpc_error* socket_listen(grpc_custom_socket* socket) with gil: +cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil: (socket.impl).socket.listen(50) return grpc_error_none() @@ -290,7 +290,7 @@ cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const rw.c_port = port _spawn_greenlet(socket_resolve_async_python, rw) -cdef grpc_error* socket_resolve(const char* host, const char* port, +cdef grpc_error_handle socket_resolve(const char* host, const char* port, grpc_resolved_addresses** res) with gil: try: result = gevent_socket.getaddrinfo(host, port) diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pxd.pxi index a7e112243d4..03ceb60f596 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pxd.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pxd.pxi @@ -23,11 +23,12 @@ cdef extern from "grpc/impl/codegen/slice.h": cdef extern from "src/core/lib/iomgr/error.h": struct grpc_error: pass + ctypedef grpc_error* grpc_error_handle # TODO(https://github.com/grpc/grpc/issues/20135) Change the filename # for something more meaningful. cdef extern from "src/core/lib/iomgr/python_util.h": - grpc_error* grpc_socket_error(char* error) + grpc_error_handle grpc_socket_error(char* error) char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) @@ -49,12 +50,12 @@ cdef extern from "src/core/lib/iomgr/resolve_address_custom.h": pass struct grpc_custom_resolver_vtable: - grpc_error* (*resolve)(const char* host, const char* port, grpc_resolved_addresses** res); + grpc_error_handle (*resolve)(const char* host, const char* port, grpc_resolved_addresses** res); void (*resolve_async)(grpc_custom_resolver* resolver, const char* host, const char* port); void grpc_custom_resolve_callback(grpc_custom_resolver* resolver, grpc_resolved_addresses* result, - grpc_error* error); + grpc_error_handle error); cdef extern from "src/core/lib/iomgr/tcp_custom.h": cdef int GRPC_CUSTOM_SOCKET_OPT_SO_REUSEPORT @@ -63,18 +64,18 @@ cdef extern from "src/core/lib/iomgr/tcp_custom.h": void* impl # We don't care about the rest of the fields ctypedef void (*grpc_custom_connect_callback)(grpc_custom_socket* socket, - grpc_error* error) + grpc_error_handle error) ctypedef void (*grpc_custom_write_callback)(grpc_custom_socket* socket, - grpc_error* error) + grpc_error_handle error) ctypedef void (*grpc_custom_read_callback)(grpc_custom_socket* socket, - size_t nread, grpc_error* error) + size_t nread, grpc_error_handle error) ctypedef void (*grpc_custom_accept_callback)(grpc_custom_socket* socket, grpc_custom_socket* client, - grpc_error* error) + grpc_error_handle error) ctypedef void (*grpc_custom_close_callback)(grpc_custom_socket* socket) struct grpc_socket_vtable: - grpc_error* (*init)(grpc_custom_socket* socket, int domain); + grpc_error_handle (*init)(grpc_custom_socket* socket, int domain); void (*connect)(grpc_custom_socket* socket, const grpc_sockaddr* addr, size_t len, grpc_custom_connect_callback cb); void (*destroy)(grpc_custom_socket* socket); @@ -84,13 +85,13 @@ cdef extern from "src/core/lib/iomgr/tcp_custom.h": grpc_custom_write_callback cb); void (*read)(grpc_custom_socket* socket, char* buffer, size_t length, grpc_custom_read_callback cb); - grpc_error* (*getpeername)(grpc_custom_socket* socket, + grpc_error_handle (*getpeername)(grpc_custom_socket* socket, const grpc_sockaddr* addr, int* len); - grpc_error* (*getsockname)(grpc_custom_socket* socket, + grpc_error_handle (*getsockname)(grpc_custom_socket* socket, const grpc_sockaddr* addr, int* len); - grpc_error* (*bind)(grpc_custom_socket* socket, const grpc_sockaddr* addr, + grpc_error_handle (*bind)(grpc_custom_socket* socket, const grpc_sockaddr* addr, size_t len, int flags); - grpc_error* (*listen)(grpc_custom_socket* socket); + grpc_error_handle (*listen)(grpc_custom_socket* socket); void (*accept)(grpc_custom_socket* socket, grpc_custom_socket* client, grpc_custom_accept_callback cb); @@ -104,7 +105,7 @@ cdef extern from "src/core/lib/iomgr/timer_custom.h": void (*start)(grpc_custom_timer* t); void (*stop)(grpc_custom_timer* t); - void grpc_custom_timer_callback(grpc_custom_timer* t, grpc_error* error); + void grpc_custom_timer_callback(grpc_custom_timer* t, grpc_error_handle error); cdef extern from "src/core/lib/iomgr/pollset_custom.h": struct grpc_custom_poller_vtable: @@ -123,7 +124,7 @@ cdef extern from "src/core/lib/iomgr/sockaddr_utils.h": int grpc_sockaddr_get_port(const grpc_resolved_address *addr); cppstring grpc_sockaddr_to_string(const grpc_resolved_address *addr, bool_t normalize); - grpc_error* grpc_string_to_sockaddr(grpc_resolved_address *out, char* addr, int port); + grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address *out, char* addr, int port); int grpc_sockaddr_set_port(const grpc_resolved_address *resolved_addr, int port) const char* grpc_sockaddr_get_uri_scheme(const grpc_resolved_address* resolved_addr) diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi index 3d6bb24f9a1..292e0473af6 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi @@ -17,10 +17,10 @@ from libc cimport string from libc.stdlib cimport malloc from libcpp.string cimport string as cppstring -cdef grpc_error* grpc_error_none(): - return 0 +cdef grpc_error_handle grpc_error_none(): + return 0 -cdef grpc_error* socket_error(str syscall, str err): +cdef grpc_error_handle socket_error(str syscall, str err): error_str = "{} failed: {}".format(syscall, err) error_bytes = str_to_bytes(error_str) return grpc_socket_error(error_bytes) diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc index 1c9457e6c8e..c3a61ed4e2e 100644 --- a/test/core/bad_client/bad_client.cc +++ b/test/core/bad_client/bad_client.cc @@ -57,7 +57,7 @@ static void thd_func(void* arg) { } /* Sets the done_write event */ -static void set_done_write(void* arg, grpc_error* /*error*/) { +static void set_done_write(void* arg, grpc_error_handle /*error*/) { gpr_event* done_write = static_cast(arg); gpr_event_set(done_write, reinterpret_cast(1)); } @@ -70,7 +70,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { } /* Sets the read_done event */ -static void set_read_done(void* arg, grpc_error* /*error*/) { +static void set_read_done(void* arg, grpc_error_handle /*error*/) { gpr_event* read_done = static_cast(arg); gpr_event_set(read_done, reinterpret_cast(1)); } diff --git a/test/core/channel/channel_stack_builder_test.cc b/test/core/channel/channel_stack_builder_test.cc index b154ad205f0..409e91389e3 100644 --- a/test/core/channel/channel_stack_builder_test.cc +++ b/test/core/channel/channel_stack_builder_test.cc @@ -29,13 +29,13 @@ #include "src/core/lib/surface/channel_init.h" #include "test/core/util/test_config.h" -static grpc_error* channel_init_func(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle channel_init_func( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } -static grpc_error* call_init_func(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle call_init_func( + grpc_call_element* /*elem*/, const grpc_call_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/core/channel/channel_stack_test.cc b/test/core/channel/channel_stack_test.cc index 58f854b12fe..8c872c153f8 100644 --- a/test/core/channel/channel_stack_test.cc +++ b/test/core/channel/channel_stack_test.cc @@ -27,8 +27,8 @@ #include "src/core/lib/slice/slice_internal.h" #include "test/core/util/test_config.h" -static grpc_error* channel_init_func(grpc_channel_element* elem, - grpc_channel_element_args* args) { +static grpc_error_handle channel_init_func(grpc_channel_element* elem, + grpc_channel_element_args* args) { GPR_ASSERT(args->channel_args->num_args == 1); GPR_ASSERT(args->channel_args->args[0].type == GRPC_ARG_INTEGER); GPR_ASSERT(0 == strcmp(args->channel_args->args[0].key, "test_key")); @@ -39,8 +39,8 @@ static grpc_error* channel_init_func(grpc_channel_element* elem, return GRPC_ERROR_NONE; } -static grpc_error* call_init_func(grpc_call_element* elem, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle call_init_func( + grpc_call_element* elem, const grpc_call_element_args* /*args*/) { ++*static_cast(elem->channel_data); *static_cast(elem->call_data) = 0; return GRPC_ERROR_NONE; @@ -64,12 +64,12 @@ static void channel_func(grpc_channel_element* elem, ++*static_cast(elem->channel_data); } -static void free_channel(void* arg, grpc_error* /*error*/) { +static void free_channel(void* arg, grpc_error_handle /*error*/) { grpc_channel_stack_destroy(static_cast(arg)); gpr_free(arg); } -static void free_call(void* arg, grpc_error* /*error*/) { +static void free_call(void* arg, grpc_error_handle /*error*/) { grpc_call_stack_destroy(static_cast(arg), nullptr, nullptr); gpr_free(arg); } @@ -127,7 +127,7 @@ static void test_create_channel_stack(void) { nullptr, /* arena */ nullptr, /* call_combiner */ }; - grpc_error* error = + grpc_error_handle error = grpc_call_stack_init(channel_stack, 1, free_call, call_stack, &args); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(call_stack->count == 1); diff --git a/test/core/channel/channelz_test.cc b/test/core/channel/channelz_test.cc index fa8e6603931..3dd554fe9e6 100644 --- a/test/core/channel/channelz_test.cc +++ b/test/core/channel/channelz_test.cc @@ -105,7 +105,7 @@ void ValidateGetTopChannels(size_t expected_channels) { std::string json_str = ChannelzRegistry::GetTopChannels(0); grpc::testing::ValidateGetTopChannelsResponseProtoJsonTranslation( json_str.c_str()); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -125,7 +125,7 @@ void ValidateGetServers(size_t expected_servers) { std::string json_str = ChannelzRegistry::GetServers(0); grpc::testing::ValidateGetServersResponseProtoJsonTranslation( json_str.c_str()); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -207,7 +207,7 @@ void ValidateChildInteger(const Json::Object& object, const std::string& key, void ValidateCounters(const std::string& json_str, const ValidateChannelDataArgs& args) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(json.type(), Json::Type::OBJECT); @@ -365,7 +365,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsPagination) { std::string json_str = ChannelzRegistry::GetTopChannels(0); grpc::testing::ValidateGetTopChannelsResponseProtoJsonTranslation( json_str.c_str()); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -390,7 +390,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsUuidCheck) { ChannelFixture channels[kNumChannels]; (void)channels; // suppress unused variable error std::string json_str = ChannelzRegistry::GetTopChannels(0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -410,7 +410,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsMiddleUuidCheck) { (void)channels; // suppress unused variable error // Only query for the end of the channels. std::string json_str = ChannelzRegistry::GetTopChannels(kMidQuery); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -432,7 +432,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsNoHitUuid) { (void)channels; // suppress unused variable error // Query in the middle of the server channels. std::string json_str = ChannelzRegistry::GetTopChannels(45); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -453,7 +453,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsMoreGaps) { ChannelFixture channel_with_uuid5; // Current state of list: [1, NULL, 3, NULL, 5] std::string json_str = ChannelzRegistry::GetTopChannels(2); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); @@ -486,7 +486,7 @@ TEST_F(ChannelzRegistryBasedTest, GetTopChannelsUuidAfterCompaction) { } } std::string json_str = ChannelzRegistry::GetTopChannels(0); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json parsed_json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ASSERT_EQ(parsed_json.type(), Json::Type::OBJECT); diff --git a/test/core/client_channel/certificate_provider_registry_test.cc b/test/core/client_channel/certificate_provider_registry_test.cc index 0c6b6d03a5c..ef33b14b69e 100644 --- a/test/core/client_channel/certificate_provider_registry_test.cc +++ b/test/core/client_channel/certificate_provider_registry_test.cc @@ -33,7 +33,7 @@ class FakeCertificateProviderFactory1 : public CertificateProviderFactory { const char* name() const override { return "fake1"; } RefCountedPtr CreateCertificateProviderConfig( - const Json& /*config_json*/, grpc_error** /*error*/) override { + const Json& /*config_json*/, grpc_error_handle* /*error*/) override { return nullptr; } @@ -48,7 +48,7 @@ class FakeCertificateProviderFactory2 : public CertificateProviderFactory { const char* name() const override { return "fake2"; } RefCountedPtr CreateCertificateProviderConfig( - const Json& /*config_json*/, grpc_error** /*error*/) override { + const Json& /*config_json*/, grpc_error_handle* /*error*/) override { return nullptr; } diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc index f79031dd55a..d82d92d459f 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc @@ -41,7 +41,7 @@ static void my_resolve_address(const char* addr, const char* /*default_port*/, grpc_resolved_addresses** addrs) { gpr_mu_lock(&g_mu); GPR_ASSERT(0 == strcmp("test", addr)); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (g_fail_resolution) { g_fail_resolution = false; gpr_mu_unlock(&g_mu); @@ -69,7 +69,7 @@ static grpc_ares_request* my_dns_lookup_ares_locked( std::shared_ptr /*combiner*/) { // NOLINT gpr_mu_lock(&g_mu); GPR_ASSERT(0 == strcmp("test", addr)); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (g_fail_resolution) { g_fail_resolution = false; gpr_mu_unlock(&g_mu); @@ -113,7 +113,7 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { public: struct ResolverOutput { grpc_core::Resolver::Result result; - grpc_error* error = nullptr; + grpc_error_handle error = GRPC_ERROR_NONE; gpr_event ev; ResolverOutput() { gpr_event_init(&ev); } @@ -133,7 +133,7 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { gpr_event_set(&output->ev, reinterpret_cast(1)); } - void ReturnError(grpc_error* error) override { + void ReturnError(grpc_error_handle error) override { ResolverOutput* output = reinterpret_cast(gpr_atm_acq_load(&output_)); GPR_ASSERT(output != nullptr); diff --git a/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc b/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc index cfedceba0df..3954a786522 100644 --- a/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc @@ -86,7 +86,7 @@ static void test_resolve_address_impl(const char* name, grpc_core::ExecCtx::Get()->InvalidateNow(); } -static grpc_error* test_blocking_resolve_address_impl( +static grpc_error_handle test_blocking_resolve_address_impl( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { return default_resolve_address->blocking_resolve_address(name, default_port, @@ -136,7 +136,7 @@ static gpr_timespec test_deadline(void) { return grpc_timeout_seconds_to_deadline(100); } -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} static void iomgr_args_init(iomgr_args* args) { gpr_event_init(&args->ev); @@ -212,7 +212,7 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { cb(state); } - void ReturnError(grpc_error* error) override { + void ReturnError(grpc_error_handle error) override { gpr_log(GPR_ERROR, "resolver returned error: %s", grpc_error_string(error)); GPR_ASSERT(false); } diff --git a/test/core/client_channel/resolvers/dns_resolver_test.cc b/test/core/client_channel/resolvers/dns_resolver_test.cc index 6aa6371b938..7bc867eb541 100644 --- a/test/core/client_channel/resolvers/dns_resolver_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_test.cc @@ -32,7 +32,7 @@ static std::shared_ptr* g_work_serializer; class TestResultHandler : public grpc_core::Resolver::ResultHandler { void ReturnResult(grpc_core::Resolver::Result /*result*/) override {} - void ReturnError(grpc_error* /*error*/) override {} + void ReturnError(grpc_error_handle /*error*/) override {} }; static void test_succeeds(grpc_core::ResolverFactory* factory, diff --git a/test/core/client_channel/resolvers/fake_resolver_test.cc b/test/core/client_channel/resolvers/fake_resolver_test.cc index 5dde6bea07b..f651172e7c7 100644 --- a/test/core/client_channel/resolvers/fake_resolver_test.cc +++ b/test/core/client_channel/resolvers/fake_resolver_test.cc @@ -58,7 +58,7 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { ev_ = nullptr; } - void ReturnError(grpc_error* /*error*/) override {} + void ReturnError(grpc_error_handle /*error*/) override {} private: grpc_core::Resolver::Result expected_; diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc index 9dfd883ef77..8b0692503f3 100644 --- a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc +++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc @@ -34,7 +34,9 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { public: void ReturnResult(grpc_core::Resolver::Result /*result*/) override {} - void ReturnError(grpc_error* error) override { GRPC_ERROR_UNREF(error); } + void ReturnError(grpc_error_handle error) override { + GRPC_ERROR_UNREF(error); + } }; static void test_succeeds(grpc_core::ResolverFactory* factory, diff --git a/test/core/client_channel/service_config_test.cc b/test/core/client_channel/service_config_test.cc index baea0e6e725..f98e3754228 100644 --- a/test/core/client_channel/service_config_test.cc +++ b/test/core/client_channel/service_config_test.cc @@ -55,7 +55,7 @@ class TestParser1 : public ServiceConfigParser::Parser { public: std::unique_ptr ParseGlobalParams( const grpc_channel_args* args, const Json& json, - grpc_error** error) override { + grpc_error_handle* error) override { GPR_DEBUG_ASSERT(error != nullptr); if (grpc_channel_args_find_bool(args, GRPC_ARG_DISABLE_PARSING, false)) { return nullptr; @@ -91,7 +91,7 @@ class TestParser2 : public ServiceConfigParser::Parser { public: std::unique_ptr ParsePerMethodParams( const grpc_channel_args* args, const Json& json, - grpc_error** error) override { + grpc_error_handle* error) override { GPR_DEBUG_ASSERT(error != nullptr); if (grpc_channel_args_find_bool(args, GRPC_ARG_DISABLE_PARSING, false)) { return nullptr; @@ -128,7 +128,7 @@ class ErrorParser : public ServiceConfigParser::Parser { public: std::unique_ptr ParsePerMethodParams( const grpc_channel_args* /*arg*/, const Json& /*json*/, - grpc_error** error) override { + grpc_error_handle* error) override { GPR_DEBUG_ASSERT(error != nullptr); *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(MethodError()); return nullptr; @@ -136,7 +136,7 @@ class ErrorParser : public ServiceConfigParser::Parser { std::unique_ptr ParseGlobalParams( const grpc_channel_args* /*arg*/, const Json& /*json*/, - grpc_error** error) override { + grpc_error_handle* error) override { GPR_DEBUG_ASSERT(error != nullptr); *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(GlobalError()); return nullptr; @@ -163,7 +163,7 @@ class ServiceConfigTest : public ::testing::Test { TEST_F(ServiceConfigTest, ErrorCheck1) { const char* test_json = ""; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex("JSON parse error")); @@ -172,7 +172,7 @@ TEST_F(ServiceConfigTest, ErrorCheck1) { TEST_F(ServiceConfigTest, BasicTest1) { const char* test_json = "{}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); } @@ -184,7 +184,7 @@ TEST_F(ServiceConfigTest, SkipMethodConfigWithNoNameOrEmptyName) { " {\"name\":[], \"method_param\":1}," " {\"name\":[{\"service\":\"TestServ\"}], \"method_param\":2}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -200,7 +200,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateMethodConfigNames) { " {\"name\":[{\"service\":\"TestServ\"}]}," " {\"name\":[{\"service\":\"TestServ\"}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -217,7 +217,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateMethodConfigNamesWithNullMethod) { " {\"name\":[{\"service\":\"TestServ\",\"method\":null}]}," " {\"name\":[{\"service\":\"TestServ\"}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -234,7 +234,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateMethodConfigNamesWithEmptyMethod) { " {\"name\":[{\"service\":\"TestServ\",\"method\":\"\"}]}," " {\"name\":[{\"service\":\"TestServ\"}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -251,7 +251,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigs) { " {\"name\":[{}]}," " {\"name\":[{}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -268,7 +268,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigsWithNullService) { " {\"name\":[{\"service\":null}]}," " {\"name\":[{}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -285,7 +285,7 @@ TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigsWithEmptyService) { " {\"name\":[{\"service\":\"\"}]}," " {\"name\":[{}]}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -299,14 +299,14 @@ TEST_F(ServiceConfigTest, ErrorDuplicateDefaultMethodConfigsWithEmptyService) { TEST_F(ServiceConfigTest, ValidMethodConfig) { const char* test_json = "{\"methodConfig\": [{\"name\":[{\"service\":\"TestServ\"}]}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); } TEST_F(ServiceConfigTest, Parser1BasicTest1) { const char* test_json = "{\"global_param\":5}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); EXPECT_EQ((static_cast(svc_cfg->GetGlobalParsedConfig(0))) @@ -319,7 +319,7 @@ TEST_F(ServiceConfigTest, Parser1BasicTest1) { TEST_F(ServiceConfigTest, Parser1BasicTest2) { const char* test_json = "{\"global_param\":1000}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); EXPECT_EQ((static_cast(svc_cfg->GetGlobalParsedConfig(0))) @@ -332,7 +332,7 @@ TEST_F(ServiceConfigTest, Parser1DisabledViaChannelArg) { const_cast(GRPC_ARG_DISABLE_PARSING), 1); grpc_channel_args args = {1, &arg}; const char* test_json = "{\"global_param\":5}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(&args, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); EXPECT_EQ(svc_cfg->GetGlobalParsedConfig(0), nullptr); @@ -340,7 +340,7 @@ TEST_F(ServiceConfigTest, Parser1DisabledViaChannelArg) { TEST_F(ServiceConfigTest, Parser1ErrorInvalidType) { const char* test_json = "{\"global_param\":\"5\"}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex(absl::StrCat( @@ -352,7 +352,7 @@ TEST_F(ServiceConfigTest, Parser1ErrorInvalidType) { TEST_F(ServiceConfigTest, Parser1ErrorInvalidValue) { const char* test_json = "{\"global_param\":-5}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex(absl::StrCat( @@ -366,7 +366,7 @@ TEST_F(ServiceConfigTest, Parser2BasicTest) { const char* test_json = "{\"methodConfig\": [{\"name\":[{\"service\":\"TestServ\"}], " "\"method_param\":5}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -383,7 +383,7 @@ TEST_F(ServiceConfigTest, Parser2DisabledViaChannelArg) { const char* test_json = "{\"methodConfig\": [{\"name\":[{\"service\":\"TestServ\"}], " "\"method_param\":5}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(&args, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -397,7 +397,7 @@ TEST_F(ServiceConfigTest, Parser2ErrorInvalidType) { const char* test_json = "{\"methodConfig\": [{\"name\":[{\"service\":\"TestServ\"}], " "\"method_param\":\"5\"}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex(absl::StrCat( @@ -412,7 +412,7 @@ TEST_F(ServiceConfigTest, Parser2ErrorInvalidValue) { const char* test_json = "{\"methodConfig\": [{\"name\":[{\"service\":\"TestServ\"}], " "\"method_param\":-5}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex(absl::StrCat( @@ -440,7 +440,7 @@ class ErroredParsersScopingTest : public ::testing::Test { TEST_F(ErroredParsersScopingTest, GlobalParams) { const char* test_json = "{}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -453,7 +453,7 @@ TEST_F(ErroredParsersScopingTest, GlobalParams) { TEST_F(ErroredParsersScopingTest, MethodParams) { const char* test_json = "{\"methodConfig\": [{}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT( grpc_error_string(error), @@ -485,7 +485,7 @@ class ClientChannelParserTest : public ::testing::Test { TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigPickFirst) { const char* test_json = "{\"loadBalancingConfig\": [{\"pick_first\":{}}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -498,7 +498,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigPickFirst) { TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigRoundRobin) { const char* test_json = "{\"loadBalancingConfig\": [{\"round_robin\":{}}, {}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto parsed_config = @@ -512,7 +512,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigGrpclb) { const char* test_json = "{\"loadBalancingConfig\": " "[{\"grpclb\":{\"childPolicy\":[{\"pick_first\":{}}]}}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -535,7 +535,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigXds) { " } }\n" " ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -547,7 +547,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingConfigXds) { TEST_F(ClientChannelParserTest, UnknownLoadBalancingConfig) { const char* test_json = "{\"loadBalancingConfig\": [{\"unknown\":{}}]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -565,7 +565,7 @@ TEST_F(ClientChannelParserTest, InvalidGrpclbLoadBalancingConfig) { " {\"grpclb\":{\"childPolicy\":1}}," " {\"round_robin\":{}}" "]}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -581,7 +581,7 @@ TEST_F(ClientChannelParserTest, InvalidGrpclbLoadBalancingConfig) { TEST_F(ClientChannelParserTest, ValidLoadBalancingPolicy) { const char* test_json = "{\"loadBalancingPolicy\":\"pick_first\"}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -592,7 +592,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingPolicy) { TEST_F(ClientChannelParserTest, ValidLoadBalancingPolicyAllCaps) { const char* test_json = "{\"loadBalancingPolicy\":\"PICK_FIRST\"}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -603,7 +603,7 @@ TEST_F(ClientChannelParserTest, ValidLoadBalancingPolicyAllCaps) { TEST_F(ClientChannelParserTest, UnknownLoadBalancingPolicy) { const char* test_json = "{\"loadBalancingPolicy\":\"unknown\"}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -617,7 +617,7 @@ TEST_F(ClientChannelParserTest, UnknownLoadBalancingPolicy) { TEST_F(ClientChannelParserTest, LoadBalancingPolicyXdsNotAllowed) { const char* test_json = "{\"loadBalancingPolicy\":\"xds_cluster_resolver_experimental\"}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -640,7 +640,7 @@ TEST_F(ClientChannelParserTest, ValidTimeout) { " \"timeout\": \"5s\"\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -663,7 +663,7 @@ TEST_F(ClientChannelParserTest, InvalidTimeout) { " \"timeout\": \"5sec\"\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -686,7 +686,7 @@ TEST_F(ClientChannelParserTest, ValidWaitForReady) { " \"waitForReady\": true\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -715,7 +715,7 @@ TEST_F(ClientChannelParserTest, InvalidWaitForReady) { " \"waitForReady\": \"true\"\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -734,7 +734,7 @@ TEST_F(ClientChannelParserTest, ValidHealthCheck) { " \"serviceName\": \"health_check_service_name\"\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -755,7 +755,7 @@ TEST_F(ClientChannelParserTest, InvalidHealthCheckMultipleEntries) { " \"serviceName\": \"health_check_service_name1\"\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -787,7 +787,7 @@ TEST_F(RetryParserTest, ValidRetryThrottling) { " \"tokenRatio\": 1.0\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* parsed_config = @@ -804,7 +804,7 @@ TEST_F(RetryParserTest, RetryThrottlingMissingFields) { " \"retryThrottling\": {\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -824,7 +824,7 @@ TEST_F(RetryParserTest, InvalidRetryThrottlingNegativeMaxTokens) { " \"tokenRatio\": 1.0\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -844,7 +844,7 @@ TEST_F(RetryParserTest, InvalidRetryThrottlingInvalidTokenRatio) { " \"tokenRatio\": -1\n" " }\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -872,7 +872,7 @@ TEST_F(RetryParserTest, ValidRetryPolicy) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -906,7 +906,7 @@ TEST_F(RetryParserTest, InvalidRetryPolicyMaxAttempts) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -934,7 +934,7 @@ TEST_F(RetryParserTest, InvalidRetryPolicyInitialBackoff) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -963,7 +963,7 @@ TEST_F(RetryParserTest, InvalidRetryPolicyMaxBackoff) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -992,7 +992,7 @@ TEST_F(RetryParserTest, InvalidRetryPolicyBackoffMultiplier) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -1020,7 +1020,7 @@ TEST_F(RetryParserTest, InvalidRetryPolicyRetryableStatusCodes) { " }\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -1058,7 +1058,7 @@ TEST_F(MessageSizeParserTest, Valid) { " \"maxResponseMessageBytes\": 1024\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); const auto* vector_ptr = svc_cfg->GetMethodParsedConfigVector( @@ -1081,7 +1081,7 @@ TEST_F(MessageSizeParserTest, InvalidMaxRequestMessageBytes) { " \"maxRequestMessageBytes\": -1024\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( @@ -1103,7 +1103,7 @@ TEST_F(MessageSizeParserTest, InvalidMaxResponseMessageBytes) { " \"maxResponseMessageBytes\": {}\n" " } ]\n" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; auto svc_cfg = ServiceConfig::Create(nullptr, test_json, &error); EXPECT_THAT(grpc_error_string(error), ::testing::ContainsRegex( diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index cb5427fe837..4ab659b2912 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -95,12 +95,13 @@ static grpc_closure on_write; static void* tag(intptr_t t) { return reinterpret_cast(t); } -static void done_write(void* /*arg*/, grpc_error* error) { +static void done_write(void* /*arg*/, grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); gpr_atm_rel_store(&state.done_atm, 1); } -static void done_writing_settings_frame(void* /* arg */, grpc_error* error) { +static void done_writing_settings_frame(void* /* arg */, + grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); grpc_endpoint_read(state.tcp, &state.temp_incoming_buffer, &on_read, /*urgent=*/false); @@ -115,7 +116,7 @@ static void handle_write() { grpc_endpoint_write(state.tcp, &state.outgoing_buffer, &on_write, nullptr); } -static void handle_read(void* /*arg*/, grpc_error* error) { +static void handle_read(void* /*arg*/, grpc_error_handle error) { if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "handle_read error: %s", grpc_error_string(error)); return; diff --git a/test/core/end2end/dualstack_socket_test.cc b/test/core/end2end/dualstack_socket_test.cc index 2b332dca30c..5ea439d59bf 100644 --- a/test/core/end2end/dualstack_socket_test.cc +++ b/test/core/end2end/dualstack_socket_test.cc @@ -60,7 +60,7 @@ static void drain_cq(grpc_completion_queue* cq) { static void log_resolved_addrs(const char* label, const char* hostname) { grpc_resolved_addresses* res = nullptr; - grpc_error* error = grpc_blocking_resolve_address(hostname, "80", &res); + grpc_error_handle error = grpc_blocking_resolve_address(hostname, "80", &res); if (error != GRPC_ERROR_NONE || res == nullptr) { GRPC_LOG_IF_ERROR(hostname, error); return; @@ -277,7 +277,7 @@ void test_connect(const char* server_host, const char* client_host, int port, int external_dns_works(const char* host) { grpc_resolved_addresses* res = nullptr; - grpc_error* error = grpc_blocking_resolve_address(host, "80", &res); + grpc_error_handle error = grpc_blocking_resolve_address(host, "80", &res); GRPC_ERROR_UNREF(error); if (res != nullptr) { grpc_resolved_addresses_destroy(res); diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc index 3a2f18d5202..67ac6feec93 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.cc +++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc @@ -52,7 +52,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); - grpc_error* error = f->server->core_server->SetupTransport( + grpc_error_handle error = f->server->core_server->SetupTransport( transport, nullptr, f->server->core_server->channel_args(), nullptr); if (error == GRPC_ERROR_NONE) { grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr); @@ -74,7 +74,7 @@ static void client_setup_transport(void* ts, grpc_transport* transport) { const_cast("test-authority")); grpc_channel_args* args = grpc_channel_args_copy_and_add(cs->client_args, &authority_arg, 1); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; cs->f->client = grpc_channel_create("socketpair-target", args, GRPC_CLIENT_DIRECT_CHANNEL, transport, nullptr, &error); diff --git a/test/core/end2end/fixtures/h2_sockpair.cc b/test/core/end2end/fixtures/h2_sockpair.cc index b3c40d8ddcb..5d5fb0bd3df 100644 --- a/test/core/end2end/fixtures/h2_sockpair.cc +++ b/test/core/end2end/fixtures/h2_sockpair.cc @@ -46,7 +46,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); - grpc_error* error = f->server->core_server->SetupTransport( + grpc_error_handle error = f->server->core_server->SetupTransport( transport, nullptr, f->server->core_server->channel_args(), nullptr); if (error == GRPC_ERROR_NONE) { grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr); @@ -69,7 +69,7 @@ static void client_setup_transport(void* ts, grpc_transport* transport) { const_cast("test-authority")); grpc_channel_args* args = grpc_channel_args_copy_and_add(cs->client_args, &authority_arg, 1); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; cs->f->client = grpc_channel_create("socketpair-target", args, GRPC_CLIENT_DIRECT_CHANNEL, transport, nullptr, &error); diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.cc b/test/core/end2end/fixtures/h2_sockpair_1byte.cc index f1f4feb2cd4..434a614e53b 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.cc +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.cc @@ -46,7 +46,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); - grpc_error* error = f->server->core_server->SetupTransport( + grpc_error_handle error = f->server->core_server->SetupTransport( transport, nullptr, f->server->core_server->channel_args(), nullptr); if (error == GRPC_ERROR_NONE) { grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr); @@ -69,7 +69,7 @@ static void client_setup_transport(void* ts, grpc_transport* transport) { const_cast("test-authority")); grpc_channel_args* args = grpc_channel_args_copy_and_add(cs->client_args, &authority_arg, 1); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; cs->f->client = grpc_channel_create("socketpair-target", args, GRPC_CLIENT_DIRECT_CHANNEL, transport, nullptr, &error); diff --git a/test/core/end2end/fixtures/http_proxy_fixture.cc b/test/core/end2end/fixtures/http_proxy_fixture.cc index a5c3353ea2f..fe5c3648284 100644 --- a/test/core/end2end/fixtures/http_proxy_fixture.cc +++ b/test/core/end2end/fixtures/http_proxy_fixture.cc @@ -154,24 +154,24 @@ enum failure_type { }; // Forward declarations -static void on_client_write_done(void* arg, grpc_error* error); -static void on_server_write_done(void* arg, grpc_error* error); -static void on_client_read_done(void* arg, grpc_error* error); -static void on_server_read_done(void* arg, grpc_error* error); -static void on_server_connect_done(void* arg, grpc_error* error); -static void on_read_request_done(void* arg, grpc_error* error); +static void on_client_write_done(void* arg, grpc_error_handle error); +static void on_server_write_done(void* arg, grpc_error_handle error); +static void on_client_read_done(void* arg, grpc_error_handle error); +static void on_server_read_done(void* arg, grpc_error_handle error); +static void on_server_connect_done(void* arg, grpc_error_handle error); +static void on_read_request_done(void* arg, grpc_error_handle error); -static void on_client_write_done_locked(void* arg, grpc_error* error); -static void on_server_write_done_locked(void* arg, grpc_error* error); -static void on_client_read_done_locked(void* arg, grpc_error* error); -static void on_server_read_done_locked(void* arg, grpc_error* error); -static void on_server_connect_done_locked(void* arg, grpc_error* error); -static void on_read_request_done_locked(void* arg, grpc_error* error); +static void on_client_write_done_locked(void* arg, grpc_error_handle error); +static void on_server_write_done_locked(void* arg, grpc_error_handle error); +static void on_client_read_done_locked(void* arg, grpc_error_handle error); +static void on_server_read_done_locked(void* arg, grpc_error_handle error); +static void on_server_connect_done_locked(void* arg, grpc_error_handle error); +static void on_read_request_done_locked(void* arg, grpc_error_handle error); // Helper function to shut down the proxy connection. static void proxy_connection_failed(proxy_connection* conn, failure_type failure, const char* prefix, - grpc_error* error) { + grpc_error_handle error) { gpr_log(GPR_INFO, "%s: %s", prefix, grpc_error_string(error)); // Decide whether we should shut down the client and server. bool shutdown_client = false; @@ -207,7 +207,7 @@ static void proxy_connection_failed(proxy_connection* conn, } // Callback for writing proxy data to the client. -static void on_client_write_done_locked(void* arg, grpc_error* error) { +static void on_client_write_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); conn->client_is_writing = false; if (error != GRPC_ERROR_NONE) { @@ -233,7 +233,7 @@ static void on_client_write_done_locked(void* arg, grpc_error* error) { } } -static void on_client_write_done(void* arg, grpc_error* error) { +static void on_client_write_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_client_write_done, on_client_write_done_locked, conn, nullptr); @@ -242,7 +242,7 @@ static void on_client_write_done(void* arg, grpc_error* error) { } // Callback for writing proxy data to the backend server. -static void on_server_write_done_locked(void* arg, grpc_error* error) { +static void on_server_write_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); conn->server_is_writing = false; if (error != GRPC_ERROR_NONE) { @@ -268,7 +268,7 @@ static void on_server_write_done_locked(void* arg, grpc_error* error) { } } -static void on_server_write_done(void* arg, grpc_error* error) { +static void on_server_write_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_server_write_done, on_server_write_done_locked, conn, nullptr); @@ -278,7 +278,7 @@ static void on_server_write_done(void* arg, grpc_error* error) { // Callback for reading data from the client, which will be proxied to // the backend server. -static void on_client_read_done_locked(void* arg, grpc_error* error) { +static void on_client_read_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); if (error != GRPC_ERROR_NONE) { proxy_connection_failed(conn, CLIENT_READ_FAILED, "HTTP proxy client read", @@ -311,7 +311,7 @@ static void on_client_read_done_locked(void* arg, grpc_error* error) { &conn->on_client_read_done, /*urgent=*/false); } -static void on_client_read_done(void* arg, grpc_error* error) { +static void on_client_read_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_client_read_done, on_client_read_done_locked, conn, nullptr); @@ -320,7 +320,7 @@ static void on_client_read_done(void* arg, grpc_error* error) { // Callback for reading data from the backend server, which will be // proxied to the client. -static void on_server_read_done_locked(void* arg, grpc_error* error) { +static void on_server_read_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); if (error != GRPC_ERROR_NONE) { proxy_connection_failed(conn, SERVER_READ_FAILED, "HTTP proxy server read", @@ -353,7 +353,7 @@ static void on_server_read_done_locked(void* arg, grpc_error* error) { &conn->on_server_read_done, /*urgent=*/false); } -static void on_server_read_done(void* arg, grpc_error* error) { +static void on_server_read_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_server_read_done, on_server_read_done_locked, conn, nullptr); @@ -361,7 +361,7 @@ static void on_server_read_done(void* arg, grpc_error* error) { } // Callback to write the HTTP response for the CONNECT request. -static void on_write_response_done_locked(void* arg, grpc_error* error) { +static void on_write_response_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); conn->client_is_writing = false; if (error != GRPC_ERROR_NONE) { @@ -387,7 +387,7 @@ static void on_write_response_done_locked(void* arg, grpc_error* error) { &conn->on_server_read_done, /*urgent=*/false); } -static void on_write_response_done(void* arg, grpc_error* error) { +static void on_write_response_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_write_response_done, on_write_response_done_locked, conn, nullptr); @@ -397,7 +397,7 @@ static void on_write_response_done(void* arg, grpc_error* error) { // Callback to connect to the backend server specified by the HTTP // CONNECT request. -static void on_server_connect_done_locked(void* arg, grpc_error* error) { +static void on_server_connect_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); if (error != GRPC_ERROR_NONE) { // TODO(roth): Technically, in this case, we should handle the error @@ -422,7 +422,7 @@ static void on_server_connect_done_locked(void* arg, grpc_error* error) { &conn->on_write_response_done, nullptr); } -static void on_server_connect_done(void* arg, grpc_error* error) { +static void on_server_connect_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_server_connect_done, on_server_connect_done_locked, conn, nullptr); @@ -456,7 +456,7 @@ static bool proxy_auth_header_matches(char* proxy_auth_header_val, // the client indicating that the request failed. However, for the purposes // of this test code, it's fine to pretend this is a client-side error, // which will cause the client connection to be dropped. -static void on_read_request_done_locked(void* arg, grpc_error* error) { +static void on_read_request_done_locked(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); gpr_log(GPR_DEBUG, "on_read_request_done: %p %s", conn, grpc_error_string(error)); @@ -543,7 +543,7 @@ static void on_read_request_done_locked(void* arg, grpc_error* error) { grpc_resolved_addresses_destroy(resolved_addresses); } -static void on_read_request_done(void* arg, grpc_error* error) { +static void on_read_request_done(void* arg, grpc_error_handle error) { proxy_connection* conn = static_cast(arg); GRPC_CLOSURE_INIT(&conn->on_read_request_done, on_read_request_done_locked, conn, nullptr); @@ -612,7 +612,7 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( gpr_log(GPR_INFO, "Proxy address: %s", proxy->proxy_name.c_str()); // Create TCP server. proxy->channel_args = grpc_channel_args_copy(args); - grpc_error* error = + grpc_error_handle error = grpc_tcp_server_create(nullptr, proxy->channel_args, &proxy->server); GPR_ASSERT(error == GRPC_ERROR_NONE); // Bind to port. @@ -638,7 +638,7 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( return proxy; } -static void destroy_pollset(void* arg, grpc_error* /*error*/) { +static void destroy_pollset(void* arg, grpc_error_handle /*error*/) { grpc_pollset* pollset = static_cast(arg); grpc_pollset_destroy(pollset); gpr_free(pollset); diff --git a/test/core/end2end/goaway_server_test.cc b/test/core/end2end/goaway_server_test.cc index d0ca2196e05..679000d7059 100644 --- a/test/core/end2end/goaway_server_test.cc +++ b/test/core/end2end/goaway_server_test.cc @@ -75,7 +75,7 @@ static void my_resolve_address(const char* addr, const char* default_port, return; } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; gpr_mu_lock(&g_mu); if (g_resolve_port < 0) { gpr_mu_unlock(&g_mu); @@ -97,7 +97,7 @@ static void my_resolve_address(const char* addr, const char* default_port, grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, error); } -static grpc_error* my_blocking_resolve_address( +static grpc_error_handle my_blocking_resolve_address( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { return default_resolver->blocking_resolve_address(name, default_port, @@ -121,7 +121,7 @@ static grpc_ares_request* my_dns_lookup_ares_locked( std::move(work_serializer)); } - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; gpr_mu_lock(&g_mu); if (g_resolve_port < 0) { gpr_mu_unlock(&g_mu); diff --git a/test/core/end2end/tests/filter_causes_close.cc b/test/core/end2end/tests/filter_causes_close.cc index fb1af999699..f7471c1038e 100644 --- a/test/core/end2end/tests/filter_causes_close.cc +++ b/test/core/end2end/tests/filter_causes_close.cc @@ -195,7 +195,7 @@ typedef struct { uint8_t unused; } channel_data; -static void recv_im_ready(void* arg, grpc_error* error) { +static void recv_im_ready(void* arg, grpc_error_handle error) { grpc_call_element* elem = static_cast(arg); call_data* calld = static_cast(elem->call_data); grpc_core::Closure::Run( @@ -218,8 +218,8 @@ static void start_transport_stream_op_batch( grpc_call_next_op(elem, op); } -static grpc_error* init_call_elem(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle init_call_elem( + grpc_call_element* /*elem*/, const grpc_call_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -227,8 +227,8 @@ static void destroy_call_elem(grpc_call_element* /*elem*/, const grpc_call_final_info* /*final_info*/, grpc_closure* /*ignored*/) {} -static grpc_error* init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/core/end2end/tests/filter_context.cc b/test/core/end2end/tests/filter_context.cc index 5b02e067d08..0b97dc47d0a 100644 --- a/test/core/end2end/tests/filter_context.cc +++ b/test/core/end2end/tests/filter_context.cc @@ -225,8 +225,8 @@ struct call_data { grpc_call_context_element* context; }; -static grpc_error* init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle init_call_elem(grpc_call_element* elem, + const grpc_call_element_args* args) { call_data* calld = static_cast(elem->call_data); calld->context = args->context; gpr_log(GPR_INFO, "init_call_elem(): context=%p", args->context); @@ -251,8 +251,8 @@ static void destroy_call_elem(grpc_call_element* /*elem*/, const grpc_call_final_info* /*final_info*/, grpc_closure* /*ignored*/) {} -static grpc_error* init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/core/end2end/tests/filter_init_fails.cc b/test/core/end2end/tests/filter_init_fails.cc index 00e2fa6ddd6..43da6900e8c 100644 --- a/test/core/end2end/tests/filter_init_fails.cc +++ b/test/core/end2end/tests/filter_init_fails.cc @@ -416,8 +416,8 @@ static void test_client_subchannel_filter(grpc_end2end_test_config config) { * Test filter - always fails to initialize a call */ -static grpc_error* init_call_elem(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle init_call_elem( + grpc_call_element* /*elem*/, const grpc_call_element_args* /*args*/) { return grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("access denied"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_PERMISSION_DENIED); @@ -427,8 +427,8 @@ static void destroy_call_elem(grpc_call_element* /*elem*/, const grpc_call_final_info* /*final_info*/, grpc_closure* /*ignored*/) {} -static grpc_error* init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { if (g_channel_filter_init_failure) { return grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test channel filter init error"), diff --git a/test/core/end2end/tests/filter_latency.cc b/test/core/end2end/tests/filter_latency.cc index 1a8091e86ed..6b94d941ff0 100644 --- a/test/core/end2end/tests/filter_latency.cc +++ b/test/core/end2end/tests/filter_latency.cc @@ -247,8 +247,8 @@ static void test_request(grpc_end2end_test_config config) { * Test latency filter */ -static grpc_error* init_call_elem(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle init_call_elem( + grpc_call_element* /*elem*/, const grpc_call_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -268,8 +268,8 @@ static void server_destroy_call_elem(grpc_call_element* /*elem*/, gpr_mu_unlock(&g_mu); } -static grpc_error* init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/core/end2end/tests/filter_status_code.cc b/test/core/end2end/tests/filter_status_code.cc index 061166fa111..6359980b5ce 100644 --- a/test/core/end2end/tests/filter_status_code.cc +++ b/test/core/end2end/tests/filter_status_code.cc @@ -275,8 +275,8 @@ static void server_start_transport_stream_op_batch( grpc_call_next_op(elem, op); } -static grpc_error* init_call_elem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle init_call_elem(grpc_call_element* elem, + const grpc_call_element_args* args) { final_status_data* data = static_cast(elem->call_data); data->call = args->call_stack; return GRPC_ERROR_NONE; @@ -312,8 +312,8 @@ static void server_destroy_call_elem(grpc_call_element* elem, gpr_mu_unlock(&g_mu); } -static grpc_error* init_channel_elem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +static grpc_error_handle init_channel_elem( + grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/core/end2end/tests/retry_lb_drop.cc b/test/core/end2end/tests/retry_lb_drop.cc index 49977d56bfc..d81b04aaf24 100644 --- a/test/core/end2end/tests/retry_lb_drop.cc +++ b/test/core/end2end/tests/retry_lb_drop.cc @@ -82,7 +82,7 @@ class DropPolicyFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kDropPolicyName; } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } }; diff --git a/test/core/handshake/readahead_handshaker_server_ssl.cc b/test/core/handshake/readahead_handshaker_server_ssl.cc index 708b316e793..ec1cdc46d65 100644 --- a/test/core/handshake/readahead_handshaker_server_ssl.cc +++ b/test/core/handshake/readahead_handshaker_server_ssl.cc @@ -55,7 +55,7 @@ class ReadAheadHandshaker : public Handshaker { public: ~ReadAheadHandshaker() override {} const char* name() const override { return "read_ahead"; } - void Shutdown(grpc_error* /*why*/) override {} + void Shutdown(grpc_error_handle /*why*/) override {} void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/, grpc_closure* on_handshake_done, HandshakerArgs* args) override { diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc index a227050555b..2956202627f 100644 --- a/test/core/http/httpcli_test.cc +++ b/test/core/http/httpcli_test.cc @@ -41,7 +41,7 @@ static grpc_millis n_seconds_time(int seconds) { grpc_timeout_seconds_to_deadline(seconds)); } -static void on_finish(void* arg, grpc_error* error) { +static void on_finish(void* arg, grpc_error_handle error) { const char* expect = "Hello world!" "

This is a test

"; @@ -138,7 +138,7 @@ static void test_post(int port) { grpc_http_response_destroy(&response); } -static void destroy_pops(void* p, grpc_error* /*error*/) { +static void destroy_pops(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy( grpc_polling_entity_pollset(static_cast(p))); } diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index 542fe553d19..65fb6a801b3 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -44,7 +44,7 @@ static grpc_millis n_seconds_time(int seconds) { grpc_timeout_seconds_to_deadline(seconds)); } -static void on_finish(void* arg, grpc_error* error) { +static void on_finish(void* arg, grpc_error_handle error) { const char* expect = "Hello world!" "

This is a test

"; @@ -143,7 +143,7 @@ static void test_post(int port) { grpc_http_response_destroy(&response); } -static void destroy_pops(void* p, grpc_error* /*error*/) { +static void destroy_pops(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy( grpc_polling_entity_pollset(static_cast(p))); } diff --git a/test/core/http/parser_test.cc b/test/core/http/parser_test.cc index 04afdd2b9d1..c08df1d4e88 100644 --- a/test/core/http/parser_test.cc +++ b/test/core/http/parser_test.cc @@ -156,7 +156,7 @@ static void test_fails(grpc_slice_split_mode split_mode, size_t num_slices; size_t i; grpc_slice* slices; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_http_response response; response = {}; @@ -189,7 +189,7 @@ static void test_request_fails(grpc_slice_split_mode split_mode, size_t num_slices; size_t i; grpc_slice* slices; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_http_request request; memset(&request, 0, sizeof(request)); diff --git a/test/core/iomgr/buffer_list_test.cc b/test/core/iomgr/buffer_list_test.cc index 2c179c4a047..6df4156336c 100644 --- a/test/core/iomgr/buffer_list_test.cc +++ b/test/core/iomgr/buffer_list_test.cc @@ -28,7 +28,7 @@ static void TestShutdownFlushesListVerifier(void* arg, grpc_core::Timestamps* /*ts*/, - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(arg != nullptr); gpr_atm* done = reinterpret_cast(arg); @@ -60,7 +60,7 @@ static void TestShutdownFlushesList() { static void TestVerifierCalledOnAckVerifier(void* arg, grpc_core::Timestamps* ts, - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(arg != nullptr); GPR_ASSERT(ts->acked_time.time.clock_type == GPR_CLOCK_REALTIME); diff --git a/test/core/iomgr/combiner_test.cc b/test/core/iomgr/combiner_test.cc index fa0a23df59c..7aa0e1c0632 100644 --- a/test/core/iomgr/combiner_test.cc +++ b/test/core/iomgr/combiner_test.cc @@ -32,7 +32,7 @@ static void test_no_op(void) { GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op"); } -static void set_event_to_true(void* value, grpc_error* /*error*/) { +static void set_event_to_true(void* value, grpc_error_handle /*error*/) { gpr_event_set(static_cast(value), reinterpret_cast(1)); } @@ -62,7 +62,7 @@ typedef struct { size_t value; } ex_args; -static void check_one(void* a, grpc_error* /*error*/) { +static void check_one(void* a, grpc_error_handle /*error*/) { ex_args* args = static_cast(a); GPR_ASSERT(*args->ctr == args->value - 1); *args->ctr = args->value; @@ -114,11 +114,11 @@ static void test_execute_many(void) { static gpr_event got_in_finally; -static void in_finally(void* /*arg*/, grpc_error* /*error*/) { +static void in_finally(void* /*arg*/, grpc_error_handle /*error*/) { gpr_event_set(&got_in_finally, reinterpret_cast(1)); } -static void add_finally(void* arg, grpc_error* /*error*/) { +static void add_finally(void* arg, grpc_error_handle /*error*/) { static_cast(arg)->Run( GRPC_CLOSURE_CREATE(in_finally, arg, nullptr), GRPC_ERROR_NONE); } diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc index 40d676abc32..fb7686b81ed 100644 --- a/test/core/iomgr/endpoint_pair_test.cc +++ b/test/core/iomgr/endpoint_pair_test.cc @@ -54,7 +54,7 @@ static grpc_endpoint_test_config configs[] = { {"tcp/tcp_socketpair", create_fixture_endpoint_pair, clean_up}, }; -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/endpoint_tests.cc b/test/core/iomgr/endpoint_tests.cc index 1a16e843730..78a6df6bd71 100644 --- a/test/core/iomgr/endpoint_tests.cc +++ b/test/core/iomgr/endpoint_tests.cc @@ -118,14 +118,15 @@ struct read_and_write_test_state { grpc_closure write_scheduler; }; -static void read_scheduler(void* data, grpc_error* /* error */) { +static void read_scheduler(void* data, grpc_error_handle /* error */) { struct read_and_write_test_state* state = static_cast(data); grpc_endpoint_read(state->read_ep, &state->incoming, &state->done_read, /*urgent=*/false); } -static void read_and_write_test_read_handler(void* data, grpc_error* error) { +static void read_and_write_test_read_handler(void* data, + grpc_error_handle error) { struct read_and_write_test_state* state = static_cast(data); @@ -146,14 +147,15 @@ static void read_and_write_test_read_handler(void* data, grpc_error* error) { } } -static void write_scheduler(void* data, grpc_error* /* error */) { +static void write_scheduler(void* data, grpc_error_handle /* error */) { struct read_and_write_test_state* state = static_cast(data); grpc_endpoint_write(state->write_ep, &state->outgoing, &state->done_write, nullptr); } -static void read_and_write_test_write_handler(void* data, grpc_error* error) { +static void read_and_write_test_write_handler(void* data, + grpc_error_handle error) { struct read_and_write_test_state* state = static_cast(data); grpc_slice* slices = nullptr; @@ -272,7 +274,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, grpc_endpoint_destroy(state.write_ep); } -static void inc_on_failure(void* arg, grpc_error* error) { +static void inc_on_failure(void* arg, grpc_error_handle error) { gpr_mu_lock(g_mu); *static_cast(arg) += (error != GRPC_ERROR_NONE); GPR_ASSERT(GRPC_LOG_IF_ERROR("kick", grpc_pollset_kick(g_pollset, nullptr))); diff --git a/test/core/iomgr/error_test.cc b/test/core/iomgr/error_test.cc index 3ba90147aad..52e4c9f69a5 100644 --- a/test/core/iomgr/error_test.cc +++ b/test/core/iomgr/error_test.cc @@ -27,7 +27,7 @@ #include "test/core/util/test_config.h" static void test_set_get_int() { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"); GPR_ASSERT(error); intptr_t i = 0; GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_FILE_LINE, &i)); @@ -49,7 +49,7 @@ static void test_set_get_int() { } static void test_set_get_str() { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"); grpc_slice str; GPR_ASSERT(!grpc_error_get_str(error, GRPC_ERROR_STR_SYSCALL, &str)); @@ -76,7 +76,7 @@ static void test_set_get_str() { static void test_copy_and_unref() { // error1 has one ref - grpc_error* error1 = grpc_error_set_str( + grpc_error_handle error1 = grpc_error_set_str( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"), GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message")); grpc_slice str; @@ -87,7 +87,7 @@ static void test_copy_and_unref() { // error 1 has two refs GRPC_ERROR_REF(error1); // this gives error3 a ref to the new error, and decrements error1 to one ref - grpc_error* error3 = grpc_error_set_str( + grpc_error_handle error3 = grpc_error_set_str( error1, GRPC_ERROR_STR_SYSCALL, grpc_slice_from_static_string("syscall")); GPR_ASSERT(error3 != error1); // should not be the same because of extra ref GPR_ASSERT(grpc_error_get_str(error3, GRPC_ERROR_STR_GRPC_MESSAGE, &str)); @@ -105,10 +105,10 @@ static void test_copy_and_unref() { } static void test_create_referencing() { - grpc_error* child = grpc_error_set_str( + grpc_error_handle child = grpc_error_set_str( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child"), GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message")); - grpc_error* parent = + grpc_error_handle parent = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", &child, 1); GPR_ASSERT(parent); @@ -117,7 +117,7 @@ static void test_create_referencing() { } static void test_create_referencing_many() { - grpc_error* children[3]; + grpc_error_handle children[3]; children[0] = grpc_error_set_str( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child1"), GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message")); @@ -128,7 +128,7 @@ static void test_create_referencing_many() { GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child3"), GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message 3")); - grpc_error* parent = + grpc_error_handle parent = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", children, 3); GPR_ASSERT(parent); @@ -139,7 +139,7 @@ static void test_create_referencing_many() { } static void print_error_string() { - grpc_error* error = + grpc_error_handle error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNIMPLEMENTED); error = grpc_error_set_int(error, GRPC_ERROR_INT_SIZE, 666); @@ -150,7 +150,7 @@ static void print_error_string() { } static void print_error_string_reference() { - grpc_error* children[2]; + grpc_error_handle children[2]; children[0] = grpc_error_set_str( grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("1"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNIMPLEMENTED), @@ -162,7 +162,7 @@ static void print_error_string_reference() { GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message for child 2")); - grpc_error* parent = + grpc_error_handle parent = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", children, 2); for (size_t i = 0; i < 2; ++i) { @@ -174,7 +174,7 @@ static void print_error_string_reference() { static void test_os_error() { int fake_errno = 5; const char* syscall = "syscall name"; - grpc_error* error = GRPC_OS_ERROR(fake_errno, syscall); + grpc_error_handle error = GRPC_OS_ERROR(fake_errno, syscall); intptr_t i = 0; GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_ERRNO, &i)); @@ -188,7 +188,7 @@ static void test_os_error() { } static void test_overflow() { - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Overflow"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Overflow"); for (size_t i = 0; i < 150; ++i) { error = grpc_error_add_child(error, diff --git a/test/core/iomgr/ev_epollex_linux_test.cc b/test/core/iomgr/ev_epollex_linux_test.cc index 5bc5935a95e..35c27ec8758 100644 --- a/test/core/iomgr/ev_epollex_linux_test.cc +++ b/test/core/iomgr/ev_epollex_linux_test.cc @@ -27,7 +27,7 @@ #include "test/core/util/test_config.h" -static void pollset_destroy(void* ps, grpc_error* /*error*/) { +static void pollset_destroy(void* ps, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(ps)); gpr_free(ps); } diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc index 85f5378f7f4..9ca837e5d51 100644 --- a/test/core/iomgr/fd_posix_test.cc +++ b/test/core/iomgr/fd_posix_test.cc @@ -124,7 +124,7 @@ static void session_shutdown_cb(void* arg, /*session */ /* Called when data become readable in a session. */ static void session_read_cb(void* arg, /*session */ - grpc_error* error) { + grpc_error_handle error) { session* se = static_cast(arg); int fd = grpc_fd_wrapped_fd(se->em_fd); @@ -182,7 +182,7 @@ static void listen_shutdown_cb(void* arg /*server*/, int /*success*/) { /* Called when a new TCP connection request arrives in the listening port. */ static void listen_cb(void* arg, /*=sv_arg*/ - grpc_error* error) { + grpc_error_handle error) { server* sv = static_cast(arg); int fd; int flags; @@ -297,7 +297,7 @@ static void client_session_shutdown_cb(void* arg /*client*/, int /*success*/) { /* Write as much as possible, then register notify_on_write. */ static void client_session_write(void* arg, /*client */ - grpc_error* error) { + grpc_error_handle error) { client* cl = static_cast(arg); int fd = grpc_fd_wrapped_fd(cl->em_fd); ssize_t write_once = 0; @@ -404,7 +404,7 @@ void init_change_data(fd_change_data* fdc) { fdc->cb_that_ran = nullptr; } void destroy_change_data(fd_change_data* /*fdc*/) {} static void first_read_callback(void* arg /* fd_change_data */, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { fd_change_data* fdc = static_cast(arg); gpr_mu_lock(g_mu); @@ -415,7 +415,7 @@ static void first_read_callback(void* arg /* fd_change_data */, } static void second_read_callback(void* arg /* fd_change_data */, - grpc_error* /*error*/) { + grpc_error_handle /*error*/) { fd_change_data* fdc = static_cast(arg); gpr_mu_lock(g_mu); @@ -509,7 +509,7 @@ static void test_grpc_fd_change(void) { close(sv[1]); } -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/ios/CFStreamTests/CFStreamClientTests.mm b/test/core/iomgr/ios/CFStreamTests/CFStreamClientTests.mm index 24afdd28e03..82f65ce34a1 100644 --- a/test/core/iomgr/ios/CFStreamTests/CFStreamClientTests.mm +++ b/test/core/iomgr/ios/CFStreamTests/CFStreamClientTests.mm @@ -43,7 +43,7 @@ static void finish_connection() { gpr_mu_unlock(&g_mu); } -static void must_succeed(void* arg, grpc_error* error) { +static void must_succeed(void* arg, grpc_error_handle error) { GPR_ASSERT(g_connecting != nullptr); GPR_ASSERT(error == GRPC_ERROR_NONE); grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING("must_succeed called")); @@ -52,7 +52,7 @@ static void must_succeed(void* arg, grpc_error* error) { finish_connection(); } -static void must_fail(void* arg, grpc_error* error) { +static void must_fail(void* arg, grpc_error_handle error) { GPR_ASSERT(g_connecting == nullptr); GPR_ASSERT(error != GRPC_ERROR_NONE); const char* error_str = grpc_error_string(error); diff --git a/test/core/iomgr/ios/CFStreamTests/CFStreamEndpointTests.mm b/test/core/iomgr/ios/CFStreamTests/CFStreamEndpointTests.mm index 5cd0d693102..a4a8555a10d 100644 --- a/test/core/iomgr/ios/CFStreamTests/CFStreamEndpointTests.mm +++ b/test/core/iomgr/ios/CFStreamTests/CFStreamEndpointTests.mm @@ -40,7 +40,7 @@ static const int kBufferSize = 10000; static const int kRunLoopTimeout = 1; -static void set_atm(void *arg, grpc_error *error) { +static void set_atm(void *arg, grpc_error_handle error) { gpr_atm *p = static_cast(arg); gpr_atm_full_cas(p, -1, reinterpret_cast(error)); } @@ -138,7 +138,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch /* wait for the connection callback to finish */ XCTAssertEqual([self waitForEvent:&connected timeout:kConnectTimeout], YES); - XCTAssertEqual(reinterpret_cast(connected), GRPC_ERROR_NONE); + XCTAssertEqual(reinterpret_cast(connected), GRPC_ERROR_NONE); } - (void)tearDown { @@ -170,7 +170,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch grpc_endpoint_write(ep_, &write_slices, &write_done, nullptr); XCTAssertEqual([self waitForEvent:&write timeout:kWriteTimeout], YES); - XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); + XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); while (recv_size < kBufferSize) { ssize_t size = recv(svr_fd_, read_buffer, kBufferSize, 0); @@ -189,7 +189,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch init_event_closure(&read_done, &read); grpc_endpoint_read(ep_, &read_one_slice, &read_done, /*urgent=*/false); XCTAssertEqual([self waitForEvent:&read timeout:kReadTimeout], YES); - XCTAssertEqual(reinterpret_cast(read), GRPC_ERROR_NONE); + XCTAssertEqual(reinterpret_cast(read), GRPC_ERROR_NONE); grpc_slice_buffer_move_into(&read_one_slice, &read_slices); XCTAssertLessThanOrEqual(read_slices.length, kBufferSize); } @@ -227,7 +227,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch grpc_endpoint_write(ep_, &write_slices, &write_done, nullptr); XCTAssertEqual([self waitForEvent:&write timeout:kWriteTimeout], YES); - XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); + XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); while (recv_size < kBufferSize) { ssize_t size = recv(svr_fd_, read_buffer, kBufferSize, 0); @@ -244,7 +244,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch grpc_core::ExecCtx::Get()->Flush(); XCTAssertEqual([self waitForEvent:&read timeout:kReadTimeout], YES); - XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); + XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); grpc_slice_buffer_reset_and_unref(&read_slices); grpc_slice_buffer_reset_and_unref(&write_slices); @@ -276,7 +276,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch grpc_endpoint_write(ep_, &write_slices, &write_done, nullptr); XCTAssertEqual([self waitForEvent:&write timeout:kWriteTimeout], YES); - XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); + XCTAssertEqual(reinterpret_cast(write), GRPC_ERROR_NONE); while (recv_size < kBufferSize) { ssize_t size = recv(svr_fd_, read_buffer, kBufferSize, 0); @@ -290,7 +290,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch close(svr_fd_); XCTAssertEqual([self waitForEvent:&read timeout:kReadTimeout], YES); - XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); + XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); grpc_endpoint_shutdown(ep_, GRPC_ERROR_NONE); grpc_slice_buffer_reset_and_unref(&read_slices); @@ -316,7 +316,7 @@ static bool compare_slice_buffer_with_buffer(grpc_slice_buffer *slices, const ch close(svr_fd_); XCTAssertEqual([self waitForEvent:&read timeout:kReadTimeout], YES); - XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); + XCTAssertNotEqual(reinterpret_cast(read), GRPC_ERROR_NONE); grpc_endpoint_shutdown(ep_, GRPC_ERROR_NONE); grpc_slice_buffer_reset_and_unref(&read_slices); diff --git a/test/core/iomgr/load_file_test.cc b/test/core/iomgr/load_file_test.cc index a0e0e4d7a74..6974cedea11 100644 --- a/test/core/iomgr/load_file_test.cc +++ b/test/core/iomgr/load_file_test.cc @@ -37,7 +37,7 @@ static void test_load_empty_file(void) { FILE* tmp = nullptr; grpc_slice slice; grpc_slice slice_with_null_term; - grpc_error* error; + grpc_error_handle error; char* tmp_name; LOG_TEST_NAME("test_load_empty_file"); @@ -65,7 +65,7 @@ static void test_load_empty_file(void) { static void test_load_failure(void) { FILE* tmp = nullptr; grpc_slice slice; - grpc_error* error; + grpc_error_handle error; char* tmp_name; LOG_TEST_NAME("test_load_failure"); @@ -88,7 +88,7 @@ static void test_load_small_file(void) { FILE* tmp = nullptr; grpc_slice slice; grpc_slice slice_with_null_term; - grpc_error* error; + grpc_error_handle error; char* tmp_name; const char* blah = "blah"; @@ -120,7 +120,7 @@ static void test_load_small_file(void) { static void test_load_big_file(void) { FILE* tmp = nullptr; grpc_slice slice; - grpc_error* error; + grpc_error_handle error; char* tmp_name; static const size_t buffer_size = 124631; unsigned char* buffer = static_cast(gpr_malloc(buffer_size)); diff --git a/test/core/iomgr/pollset_windows_starvation_test.cc b/test/core/iomgr/pollset_windows_starvation_test.cc index eed57b10075..3357e3b5bf9 100644 --- a/test/core/iomgr/pollset_windows_starvation_test.cc +++ b/test/core/iomgr/pollset_windows_starvation_test.cc @@ -91,7 +91,7 @@ int main(int argc, char** argv) { // Queue for work and once we're done, make sure to kick the remaining // threads. - grpc_error* error; + grpc_error_handle error; error = grpc_pollset_work(&pollset, NULL, GRPC_MILLIS_INF_FUTURE); error = grpc_pollset_kick(&pollset, NULL); diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 04cf766d725..6924a35c753 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -56,7 +56,7 @@ typedef struct args_struct { grpc_pollset_set* pollset_set; } args_struct; -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} void args_init(args_struct* args) { gpr_event_init(&args->ev); @@ -118,7 +118,7 @@ static void poll_pollset_until_request_done(args_struct* args) { args->thd.Start(); } -static void must_succeed(void* argsp, grpc_error* err) { +static void must_succeed(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != nullptr); @@ -128,7 +128,7 @@ static void must_succeed(void* argsp, grpc_error* err) { GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, nullptr)); } -static void must_fail(void* argsp, grpc_error* err) { +static void must_fail(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err != GRPC_ERROR_NONE); grpc_core::MutexLockForGprMu lock(args->mu); diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index b77fd72ad00..c8a4d15917e 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -48,7 +48,7 @@ typedef struct args_struct { grpc_pollset_set* pollset_set; } args_struct; -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} void args_init(args_struct* args) { gpr_event_init(&args->ev); @@ -105,7 +105,7 @@ static void poll_pollset_until_request_done(args_struct* args) { gpr_event_set(&args->ev, reinterpret_cast(1)); } -static void must_succeed(void* argsp, grpc_error* err) { +static void must_succeed(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != nullptr); @@ -115,7 +115,7 @@ static void must_succeed(void* argsp, grpc_error* err) { GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, nullptr)); } -static void must_fail(void* argsp, grpc_error* err) { +static void must_fail(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err != GRPC_ERROR_NONE); grpc_core::MutexLockForGprMu lock(args->mu); @@ -124,7 +124,7 @@ static void must_fail(void* argsp, grpc_error* err) { } // This test assumes the environment has an ipv6 loopback -static void must_succeed_with_ipv6_first(void* argsp, grpc_error* err) { +static void must_succeed_with_ipv6_first(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != nullptr); @@ -137,7 +137,7 @@ static void must_succeed_with_ipv6_first(void* argsp, grpc_error* err) { GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, nullptr)); } -static void must_succeed_with_ipv4_first(void* argsp, grpc_error* err) { +static void must_succeed_with_ipv4_first(void* argsp, grpc_error_handle err) { args_struct* args = static_cast(argsp); GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != nullptr); diff --git a/test/core/iomgr/resource_quota_test.cc b/test/core/iomgr/resource_quota_test.cc index 7f516b77a43..5d71af13e6d 100644 --- a/test/core/iomgr/resource_quota_test.cc +++ b/test/core/iomgr/resource_quota_test.cc @@ -28,7 +28,7 @@ gpr_mu g_mu; gpr_cv g_cv; -static void inc_int_cb(void* a, grpc_error* /*error*/) { +static void inc_int_cb(void* a, grpc_error_handle /*error*/) { gpr_mu_lock(&g_mu); ++*static_cast(a); gpr_cv_signal(&g_cv); @@ -44,7 +44,7 @@ static void assert_counter_becomes(int* ctr, int value) { gpr_mu_unlock(&g_mu); } -static void set_event_cb(void* a, grpc_error* /*error*/) { +static void set_event_cb(void* a, grpc_error_handle /*error*/) { gpr_event_set(static_cast(a), reinterpret_cast(1)); } grpc_closure* set_event(gpr_event* ev) { @@ -57,7 +57,7 @@ typedef struct { grpc_closure* then; } reclaimer_args; -static void reclaimer_cb(void* args, grpc_error* error) { +static void reclaimer_cb(void* args, grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); reclaimer_args* a = static_cast(args); grpc_resource_user_free(a->resource_user, a->size); @@ -75,7 +75,7 @@ grpc_closure* make_reclaimer(grpc_resource_user* resource_user, size_t size, return GRPC_CLOSURE_CREATE(reclaimer_cb, a, grpc_schedule_on_exec_ctx); } -static void unused_reclaimer_cb(void* arg, grpc_error* error) { +static void unused_reclaimer_cb(void* arg, grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_CANCELLED); grpc_core::Closure::Run(DEBUG_LOCATION, static_cast(arg), GRPC_ERROR_NONE); diff --git a/test/core/iomgr/socket_utils_test.cc b/test/core/iomgr/socket_utils_test.cc index d307f04fb18..f6f0b37d0f3 100644 --- a/test/core/iomgr/socket_utils_test.cc +++ b/test/core/iomgr/socket_utils_test.cc @@ -80,7 +80,7 @@ static const grpc_socket_mutator_vtable mutator_vtable = { int main(int argc, char** argv) { int sock; - grpc_error* err; + grpc_error_handle err; grpc::testing::TestEnvironment env(argc, argv); sock = socket(PF_INET, SOCK_STREAM, 0); diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc index d9186094c59..4e21292c515 100644 --- a/test/core/iomgr/tcp_client_posix_test.cc +++ b/test/core/iomgr/tcp_client_posix_test.cc @@ -60,7 +60,7 @@ static void finish_connection() { gpr_mu_unlock(g_mu); } -static void must_succeed(void* /*arg*/, grpc_error* error) { +static void must_succeed(void* /*arg*/, grpc_error_handle error) { GPR_ASSERT(g_connecting != nullptr); GPR_ASSERT(error == GRPC_ERROR_NONE); grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -70,7 +70,7 @@ static void must_succeed(void* /*arg*/, grpc_error* error) { finish_connection(); } -static void must_fail(void* /*arg*/, grpc_error* error) { +static void must_fail(void* /*arg*/, grpc_error_handle error) { GPR_ASSERT(g_connecting == nullptr); GPR_ASSERT(error != GRPC_ERROR_NONE); finish_connection(); @@ -185,7 +185,7 @@ void test_fails(void) { gpr_mu_unlock(g_mu); } -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/tcp_client_uv_test.cc b/test/core/iomgr/tcp_client_uv_test.cc index 35e8d180f4c..6b73833319f 100644 --- a/test/core/iomgr/tcp_client_uv_test.cc +++ b/test/core/iomgr/tcp_client_uv_test.cc @@ -54,7 +54,7 @@ static void finish_connection() { gpr_mu_unlock(g_mu); } -static void must_succeed(void* arg, grpc_error* error) { +static void must_succeed(void* arg, grpc_error_handle error) { GPR_ASSERT(g_connecting != NULL); GPR_ASSERT(error == GRPC_ERROR_NONE); grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -64,7 +64,7 @@ static void must_succeed(void* arg, grpc_error* error) { finish_connection(); } -static void must_fail(void* arg, grpc_error* error) { +static void must_fail(void* arg, grpc_error_handle error) { GPR_ASSERT(g_connecting == NULL); GPR_ASSERT(error != GRPC_ERROR_NONE); finish_connection(); @@ -182,7 +182,7 @@ void test_fails(void) { grpc_core::ExecCtx::Get()->Flush(); } -static void destroy_pollset(void* p, grpc_error* error) { +static void destroy_pollset(void* p, grpc_error_handle error) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index 3d995eedc11..17c81b86477 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -172,7 +172,7 @@ static size_t count_slices(grpc_slice* slices, size_t nslices, return num_bytes; } -static void read_cb(void* user_data, grpc_error* error) { +static void read_cb(void* user_data, grpc_error_handle error) { struct read_socket_state* state = static_cast(user_data); size_t read_bytes; @@ -330,7 +330,7 @@ static grpc_slice* allocate_blocks(size_t num_bytes, size_t slice_size, } static void write_done(void* user_data /* write_socket_state */, - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); struct write_socket_state* state = static_cast(user_data); @@ -383,7 +383,7 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { /* Verifier for timestamps callback for write_test */ void timestamps_verifier(void* arg, grpc_core::Timestamps* ts, - grpc_error* error) { + grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(arg != nullptr); GPR_ASSERT(ts->sendmsg_time.time.clock_type == GPR_CLOCK_REALTIME); @@ -473,7 +473,7 @@ static void write_test(size_t num_bytes, size_t slice_size, gpr_free(slices); } -void on_fd_released(void* arg, grpc_error* /*errors*/) { +void on_fd_released(void* arg, grpc_error_handle /*errors*/) { int* done = static_cast(arg); *done = 1; GPR_ASSERT( @@ -619,7 +619,7 @@ static grpc_endpoint_test_config configs[] = { {"tcp/tcp_socketpair", create_fixture_tcp_socketpair, clean_up}, }; -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index 1441c0d54e5..03944fcf3bd 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -112,7 +112,7 @@ static void on_connect_result_set(on_connect_result* result, result->server, acceptor->port_index, acceptor->fd_index); } -static void server_weak_ref_shutdown(void* arg, grpc_error* /*error*/) { +static void server_weak_ref_shutdown(void* arg, grpc_error_handle /*error*/) { server_weak_ref* weak_ref = static_cast(arg); weak_ref->server = nullptr; } @@ -220,8 +220,8 @@ static void test_no_op_with_port_and_start(void) { grpc_tcp_server_unref(s); } -static grpc_error* tcp_connect(const test_addr* remote, - on_connect_result* result) { +static grpc_error_handle tcp_connect(const test_addr* remote, + on_connect_result* result) { grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); int clifd; @@ -249,7 +249,7 @@ static grpc_error* tcp_connect(const test_addr* remote, while (g_nconnects == nconnects_before && deadline > grpc_core::ExecCtx::Get()->Now()) { grpc_pollset_worker* worker = nullptr; - grpc_error* err; + grpc_error_handle err; if ((err = grpc_pollset_work(g_pollset, &worker, deadline)) != GRPC_ERROR_NONE) { gpr_mu_unlock(g_mu); @@ -358,7 +358,7 @@ static void test_connect(size_t num_connects, for (dst_idx = 0; dst_idx < dst_addrs->naddrs; ++dst_idx) { test_addr dst = dst_addrs->addrs[dst_idx]; on_connect_result result; - grpc_error* err; + grpc_error_handle err; if (dst.addr.len == 0) { gpr_log(GPR_DEBUG, "Skipping test of non-functional local IP %s", dst.str); @@ -423,7 +423,7 @@ static void test_connect(size_t num_connects, GPR_ASSERT(weak_ref.server == nullptr); } -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/tcp_server_uv_test.cc b/test/core/iomgr/tcp_server_uv_test.cc index a084cccbb27..3d25b5b14b9 100644 --- a/test/core/iomgr/tcp_server_uv_test.cc +++ b/test/core/iomgr/tcp_server_uv_test.cc @@ -74,7 +74,7 @@ static void on_connect_result_set(on_connect_result* result, result->fd_index = acceptor->fd_index; } -static void server_weak_ref_shutdown(void* arg, grpc_error* error) { +static void server_weak_ref_shutdown(void* arg, grpc_error_handle error) { server_weak_ref* weak_ref = static_cast(arg); weak_ref->server = NULL; } @@ -282,7 +282,7 @@ static void test_connect(unsigned n) { GPR_ASSERT(weak_ref.server == NULL); } -static void destroy_pollset(void* p, grpc_error* error) { +static void destroy_pollset(void* p, grpc_error_handle error) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index a26926d5a84..f4a1b20316d 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -41,7 +41,7 @@ static int cb_called[MAX_CB][2]; static const int64_t kMillisIn25Days = 2160000000; static const int64_t kHoursIn25Days = 600; -static void cb(void* arg, grpc_error* error) { +static void cb(void* arg, grpc_error_handle error) { cb_called[reinterpret_cast(arg)][error == GRPC_ERROR_NONE]++; } diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index a0e02e240ab..a036b0c1018 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -172,7 +172,7 @@ static test_socket_factory* test_socket_factory_create(void) { return factory; } -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/json/fuzzer.cc b/test/core/json/fuzzer.cc index e9eecf2332b..2925611c330 100644 --- a/test/core/json/fuzzer.cc +++ b/test/core/json/fuzzer.cc @@ -29,7 +29,7 @@ bool squelch = true; bool leak_check = true; extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json::Parse( absl::string_view(reinterpret_cast(data), size), &error); GRPC_ERROR_UNREF(error); diff --git a/test/core/json/json_test.cc b/test/core/json/json_test.cc index 1e5b404b94d..37c17ca2e41 100644 --- a/test/core/json/json_test.cc +++ b/test/core/json/json_test.cc @@ -75,7 +75,7 @@ void ValidateValue(const Json& actual, const Json& expected) { void RunSuccessTest(const char* input, const Json& expected, const char* expected_output) { gpr_log(GPR_INFO, "parsing string \"%s\" - should succeed", input); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(input, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); ValidateValue(json, expected); @@ -165,7 +165,7 @@ TEST(Json, Keywords) { void RunParseFailureTest(const char* input) { gpr_log(GPR_INFO, "parsing string \"%s\" - should fail", input); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(input, &error); gpr_log(GPR_INFO, "error: %s", grpc_error_string(error)); EXPECT_NE(error, GRPC_ERROR_NONE); diff --git a/test/core/security/aws_request_signer_test.cc b/test/core/security/aws_request_signer_test.cc index e384183c42e..bc5780fadb3 100644 --- a/test/core/security/aws_request_signer_test.cc +++ b/test/core/security/aws_request_signer_test.cc @@ -65,7 +65,7 @@ const char* kBotoTestDate = "Mon, 09 Sep 2011 23:36:00 GMT"; // AWS official example from the developer doc. // https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html TEST(GrpcAwsRequestSignerTest, AWSOfficialExample) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( "AKIDEXAMPLE", "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", "", "GET", "https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08", @@ -83,7 +83,7 @@ TEST(GrpcAwsRequestSignerTest, AWSOfficialExample) { } TEST(GrpcAwsRequestSignerTest, GetDescribeRegions) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kAmzTestAccessKeyId, kAmzTestSecretAccessKey, kAmzTestToken, "GET", "https://" @@ -100,7 +100,7 @@ TEST(GrpcAwsRequestSignerTest, GetDescribeRegions) { } TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentity) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kAmzTestAccessKeyId, kAmzTestSecretAccessKey, kAmzTestToken, "POST", "https://" @@ -117,7 +117,7 @@ TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentity) { } TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentityNoToken) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kAmzTestAccessKeyId, kAmzTestSecretAccessKey, "", "POST", "https://" @@ -134,7 +134,7 @@ TEST(GrpcAwsRequestSignerTest, PostGetCallerIdentityNoToken) { } TEST(GrpcAwsRequestSignerTest, GetHost) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer(kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "GET", "https://host.foo.com", "us-east-1", @@ -149,7 +149,7 @@ TEST(GrpcAwsRequestSignerTest, GetHost) { } TEST(GrpcAwsRequestSignerTest, GetHostDuplicateQueryParam) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "GET", "https://host.foo.com/?foo=Zoo&foo=aha", "us-east-1", "", @@ -164,7 +164,7 @@ TEST(GrpcAwsRequestSignerTest, GetHostDuplicateQueryParam) { } TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderKey) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST", "https://host.foo.com/", "us-east-1", "", @@ -179,7 +179,7 @@ TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderKey) { } TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderValue) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST", "https://host.foo.com/", "us-east-1", "", @@ -194,7 +194,7 @@ TEST(GrpcAwsRequestSignerTest, PostWithUpperCaseHeaderValue) { } TEST(GrpcAwsRequestSignerTest, SignPostWithHeader) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST", "https://host.foo.com/", "us-east-1", "", @@ -209,7 +209,7 @@ TEST(GrpcAwsRequestSignerTest, SignPostWithHeader) { } TEST(GrpcAwsRequestSignerTest, PostWithBodyNoCustomHeaders) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST", "https://host.foo.com/", "us-east-1", "foo=bar", @@ -226,7 +226,7 @@ TEST(GrpcAwsRequestSignerTest, PostWithBodyNoCustomHeaders) { } TEST(GrpcAwsRequestSignerTest, SignPostWithQueryString) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( kBotoTestAccessKeyId, kBotoTestSecretAccessKey, kBotoTestToken, "POST", "https://host.foo.com/?foo=bar", "us-east-1", "", @@ -241,7 +241,7 @@ TEST(GrpcAwsRequestSignerTest, SignPostWithQueryString) { } TEST(GrpcAwsRequestSignerTest, InvalidUrl) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer("access_key_id", "secret_access_key", "token", "POST", "invalid_url", "us-east-1", "", {}, &error); @@ -256,7 +256,7 @@ TEST(GrpcAwsRequestSignerTest, InvalidUrl) { } TEST(GrpcAwsRequestSignerTest, DuplicateRequestDate) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::AwsRequestSigner signer( "access_key_id", "secret_access_key", "token", "POST", "invalid_url", "us-east-1", "", {{"date", kBotoTestDate}, {"x-amz-date", kAmzTestDate}}, diff --git a/test/core/security/credentials_test.cc b/test/core/security/credentials_test.cc index 4de93b35c02..44017dd189a 100644 --- a/test/core/security/credentials_test.cc +++ b/test/core/security/credentials_test.cc @@ -415,7 +415,7 @@ typedef struct { } expected_md; typedef struct { - grpc_error* expected_error; + grpc_error_handle expected_error; const expected_md* expected; size_t expected_size; grpc_credentials_mdelem_array md_array; @@ -443,7 +443,7 @@ static void check_metadata(const expected_md* expected, } } -static void check_request_metadata(void* arg, grpc_error* error) { +static void check_request_metadata(void* arg, grpc_error_handle error) { request_metadata_state* state = static_cast(arg); gpr_log(GPR_INFO, "expected_error: %s", grpc_error_string(state->expected_error)); @@ -470,7 +470,7 @@ static void check_request_metadata(void* arg, grpc_error* error) { } static request_metadata_state* make_request_metadata_state( - grpc_error* expected_error, const expected_md* expected, + grpc_error_handle expected_error, const expected_md* expected, size_t expected_size) { request_metadata_state* state = static_cast(gpr_zalloc(sizeof(*state))); @@ -487,7 +487,7 @@ static request_metadata_state* make_request_metadata_state( static void run_request_metadata_test(grpc_call_credentials* creds, grpc_auth_metadata_context auth_md_ctx, request_metadata_state* state) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (creds->get_request_metadata(&state->pollent, auth_md_ctx, &state->md_array, &state->on_request_metadata, &error)) { @@ -1674,13 +1674,13 @@ struct fake_call_creds : public grpc_call_credentials { grpc_auth_metadata_context /*context*/, grpc_credentials_mdelem_array* md_array, grpc_closure* /*on_request_metadata*/, - grpc_error** /*error*/) override { + grpc_error_handle* /*error*/) override { grpc_credentials_mdelem_array_add(md_array, phony_md_); return true; } void cancel_get_request_metadata(grpc_credentials_mdelem_array* /*md_array*/, - grpc_error* /*error*/) override {} + grpc_error_handle /*error*/) override {} private: grpc_mdelem phony_md_; @@ -2216,7 +2216,7 @@ class TestExternalAccountCredentials final protected: void RetrieveSubjectToken( HTTPRequestContext* /*ctx*/, const Options& /*options*/, - std::function cb) override { + std::function cb) override { cb("test_subject_token", GRPC_ERROR_NONE); } }; @@ -2340,10 +2340,11 @@ static void test_external_account_creds_failure_invalid_token_url(void) { TestExternalAccountCredentials creds(options, {}); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Invalid token url: invalid_token_url."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); run_request_metadata_test(&creds, auth_md_ctx, state); @@ -2374,11 +2375,12 @@ test_external_account_creds_failure_invalid_service_account_impersonation_url( TestExternalAccountCredentials creds(options, {}); grpc_httpcli_set_override(httpcli_get_should_not_be_called, external_account_creds_httpcli_post_success); - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Invalid service account impersonation url: " "invalid_service_account_impersonation_url."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); run_request_metadata_test(&creds, auth_md_ctx, state); @@ -2410,12 +2412,13 @@ test_external_account_creds_failure_token_exchange_response_missing_access_token grpc_httpcli_set_override( httpcli_get_should_not_be_called, external_account_creds_httpcli_post_failure_token_exchange_response_missing_access_token); - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Missing or invalid access_token in " "{\"not_access_token\":\"not_access_token\",\"expires_in\":3599,\"token_" "type\":\"Bearer\"}."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); run_request_metadata_test(&creds, auth_md_ctx, state); @@ -2429,7 +2432,7 @@ static void test_url_external_account_creds_success_format_text(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_url_external_account_creds_options_credential_source_format_text, &error); @@ -2466,7 +2469,7 @@ test_url_external_account_creds_success_with_qurey_params_format_text(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_url_external_account_creds_options_credential_source_with_qurey_params_format_text, &error); @@ -2502,7 +2505,7 @@ static void test_url_external_account_creds_success_format_json(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_url_external_account_creds_options_credential_source_format_json, &error); @@ -2535,7 +2538,7 @@ static void test_url_external_account_creds_success_format_json(void) { static void test_url_external_account_creds_failure_invalid_credential_source_url(void) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_url_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2568,7 +2571,7 @@ static void test_file_external_account_creds_success_format_text(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; char* subject_token_path = write_tmp_jwt_file("test_subject_token"); grpc_core::Json credential_source = grpc_core::Json::Parse( absl::StrFormat( @@ -2609,7 +2612,7 @@ static void test_file_external_account_creds_success_format_json(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; char* subject_token_path = write_tmp_jwt_file("{\"access_token\":\"test_subject_token\"}"); grpc_core::Json credential_source = grpc_core::Json::Parse( @@ -2657,7 +2660,7 @@ static void test_file_external_account_creds_failure_file_not_found(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse("{\"file\":\"non_exisiting_file\"}", &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2680,8 +2683,9 @@ static void test_file_external_account_creds_failure_file_not_found(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to load file"); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); run_request_metadata_test(creds.get(), auth_md_ctx, state); @@ -2695,7 +2699,7 @@ static void test_file_external_account_creds_failure_invalid_json_content( grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; char* subject_token_path = write_tmp_jwt_file("not_a_valid_json_file"); grpc_core::Json credential_source = grpc_core::Json::Parse( absl::StrFormat( @@ -2730,8 +2734,9 @@ static void test_file_external_account_creds_failure_invalid_json_content( httpcli_post_should_not_be_called); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "The content of the file is not a valid json object."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); run_request_metadata_test(creds.get(), auth_md_ctx, state); @@ -2746,7 +2751,7 @@ static void test_aws_external_account_creds_success(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2783,7 +2788,7 @@ static void test_aws_external_account_creds_success_path_region_env_keys_url( grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; gpr_setenv("AWS_REGION", "test_regionz"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2821,7 +2826,7 @@ test_aws_external_account_creds_success_path_default_region_env_keys_url(void) { grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; gpr_setenv("AWS_DEFAULT_REGION", "test_regionz"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2862,7 +2867,7 @@ test_aws_external_account_creds_success_path_duplicate_region_env_keys_url( // Make sure that AWS_REGION gets used over AWS_DEFAULT_REGION gpr_setenv("AWS_REGION", "test_regionz"); gpr_setenv("AWS_DEFAULT_REGION", "ERROR_REGION"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2903,7 +2908,7 @@ static void test_aws_external_account_creds_success_path_region_url_keys_env( gpr_setenv("AWS_ACCESS_KEY_ID", "test_access_key_id"); gpr_setenv("AWS_SECRET_ACCESS_KEY", "test_secret_access_key"); gpr_setenv("AWS_SESSION_TOKEN", "test_token"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2946,7 +2951,7 @@ static void test_aws_external_account_creds_success_path_region_env_keys_env( gpr_setenv("AWS_ACCESS_KEY_ID", "test_access_key_id"); gpr_setenv("AWS_SECRET_ACCESS_KEY", "test_secret_access_key"); gpr_setenv("AWS_SESSION_TOKEN", "test_token"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -2990,7 +2995,7 @@ test_aws_external_account_creds_success_path_default_region_env_keys_env(void) { gpr_setenv("AWS_ACCESS_KEY_ID", "test_access_key_id"); gpr_setenv("AWS_SECRET_ACCESS_KEY", "test_secret_access_key"); gpr_setenv("AWS_SESSION_TOKEN", "test_token"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -3037,7 +3042,7 @@ test_aws_external_account_creds_success_path_duplicate_region_env_keys_env( gpr_setenv("AWS_ACCESS_KEY_ID", "test_access_key_id"); gpr_setenv("AWS_SECRET_ACCESS_KEY", "test_secret_access_key"); gpr_setenv("AWS_SESSION_TOKEN", "test_token"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( valid_aws_external_account_creds_options_credential_source, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -3074,7 +3079,7 @@ test_aws_external_account_creds_success_path_duplicate_region_env_keys_env( static void test_aws_external_account_creds_failure_unmatched_environment_id( void) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_aws_external_account_creds_options_credential_source_unmatched_environment_id, &error); @@ -3107,7 +3112,7 @@ static void test_aws_external_account_creds_failure_invalid_region_url(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_aws_external_account_creds_options_credential_source_invalid_region_url, &error); @@ -3131,8 +3136,9 @@ static void test_aws_external_account_creds_failure_invalid_region_url(void) { GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Invalid region url: invalid_region_url."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); grpc_httpcli_set_override(aws_external_account_creds_httpcli_get_success, @@ -3147,7 +3153,7 @@ static void test_aws_external_account_creds_failure_invalid_url(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_aws_external_account_creds_options_credential_source_invalid_url, &error); @@ -3170,8 +3176,9 @@ static void test_aws_external_account_creds_failure_invalid_url(void) { GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid url: invalid_url."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); grpc_httpcli_set_override(aws_external_account_creds_httpcli_get_success, @@ -3186,7 +3193,7 @@ static void test_aws_external_account_creds_failure_missing_role_name(void) { grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_aws_external_account_creds_options_credential_source_missing_role_name, &error); @@ -3210,8 +3217,9 @@ static void test_aws_external_account_creds_failure_missing_role_name(void) { GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Missing role name when retrieving signing keys."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); grpc_httpcli_set_override(aws_external_account_creds_httpcli_get_success, @@ -3228,7 +3236,7 @@ test_aws_external_account_creds_failure_invalid_regional_cred_verification_url( grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json credential_source = grpc_core::Json::Parse( invalid_aws_external_account_creds_options_credential_source_invalid_regional_cred_verification_url, &error); @@ -3252,8 +3260,9 @@ test_aws_external_account_creds_failure_invalid_regional_cred_verification_url( GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Creating aws request signer failed."); - grpc_error* expected_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Error occurred when fetching oauth2 token.", &error, 1); + grpc_error_handle expected_error = + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token.", &error, 1); request_metadata_state* state = make_request_metadata_state(expected_error, nullptr, 0); grpc_httpcli_set_override(aws_external_account_creds_httpcli_get_success, diff --git a/test/core/security/grpc_tls_certificate_distributor_test.cc b/test/core/security/grpc_tls_certificate_distributor_test.cc index b0a04451c04..92123a182c1 100644 --- a/test/core/security/grpc_tls_certificate_distributor_test.cc +++ b/test/core/security/grpc_tls_certificate_distributor_test.cc @@ -129,8 +129,8 @@ class GrpcTlsCertificateDistributorTest : public ::testing::Test { std::move(updated_identity)); } - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override { + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override { GPR_ASSERT(root_cert_error != GRPC_ERROR_NONE || identity_cert_error != GRPC_ERROR_NONE); std::string root_error_str; diff --git a/test/core/security/grpc_tls_certificate_provider_test.cc b/test/core/security/grpc_tls_certificate_provider_test.cc index 50553577d9e..9d67556955a 100644 --- a/test/core/security/grpc_tls_certificate_provider_test.cc +++ b/test/core/security/grpc_tls_certificate_provider_test.cc @@ -131,8 +131,8 @@ class GrpcTlsCertificateProviderTest : public ::testing::Test { std::move(updated_identity)); } - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override { + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override { MutexLock lock(&state_->mu); GPR_ASSERT(root_cert_error != GRPC_ERROR_NONE || identity_cert_error != GRPC_ERROR_NONE); diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc index 6b032bb7430..99851e112d1 100644 --- a/test/core/security/json_token_test.cc +++ b/test/core/security/json_token_test.cc @@ -215,7 +215,7 @@ static Json parse_json_part_from_jwt(const char* str, size_t len) { grpc_slice slice = grpc_base64_decode(b64, 1); gpr_free(b64); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(slice)); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; absl::string_view string = grpc_core::StringViewFromSlice(slice); Json json = Json::Parse(string, &error); if (error != GRPC_ERROR_NONE) { diff --git a/test/core/security/jwt_verifier_test.cc b/test/core/security/jwt_verifier_test.cc index 71178cb657d..dec36acc656 100644 --- a/test/core/security/jwt_verifier_test.cc +++ b/test/core/security/jwt_verifier_test.cc @@ -207,7 +207,7 @@ static void test_jwt_issuer_email_domain(void) { static void test_claims_success(void) { grpc_jwt_claims* claims; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(claims_without_time_constraint, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); @@ -229,7 +229,7 @@ static void test_claims_success(void) { static void test_expired_claims_failure(void) { grpc_jwt_claims* claims; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(expired_claims, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); @@ -257,7 +257,7 @@ static void test_expired_claims_failure(void) { } static void test_invalid_claims_failure(void) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(invalid_claims, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); @@ -270,7 +270,7 @@ static void test_invalid_claims_failure(void) { static void test_bad_audience_claims_failure(void) { grpc_jwt_claims* claims; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(claims_without_time_constraint, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); @@ -287,7 +287,7 @@ static void test_bad_audience_claims_failure(void) { static void test_bad_subject_claims_failure(void) { grpc_jwt_claims* claims; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(claims_with_bad_subject, &error); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error)); diff --git a/test/core/security/oauth2_utils.cc b/test/core/security/oauth2_utils.cc index 0885a1ac876..03118cbc377 100644 --- a/test/core/security/oauth2_utils.cc +++ b/test/core/security/oauth2_utils.cc @@ -40,7 +40,7 @@ typedef struct { grpc_closure closure; } oauth2_request; -static void on_oauth2_response(void* arg, grpc_error* error) { +static void on_oauth2_response(void* arg, grpc_error_handle error) { oauth2_request* request = static_cast(arg); char* token = nullptr; grpc_slice token_slice; @@ -64,7 +64,7 @@ static void on_oauth2_response(void* arg, grpc_error* error) { gpr_mu_unlock(request->mu); } -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} char* grpc_test_fetch_oauth2_token_with_credentials( grpc_call_credentials* creds) { @@ -86,7 +86,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( GRPC_CLOSURE_INIT(&request.closure, on_oauth2_response, &request, grpc_schedule_on_exec_ctx); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; if (creds->get_request_metadata(&request.pops, null_ctx, &request.md_array, &request.closure, &error)) { // Synchronous result; invoke callback directly. diff --git a/test/core/security/print_google_default_creds_token.cc b/test/core/security/print_google_default_creds_token.cc index 398c58c6e17..41e3be89230 100644 --- a/test/core/security/print_google_default_creds_token.cc +++ b/test/core/security/print_google_default_creds_token.cc @@ -41,7 +41,7 @@ typedef struct { grpc_closure on_request_metadata; } synchronizer; -static void on_metadata_response(void* arg, grpc_error* error) { +static void on_metadata_response(void* arg, grpc_error_handle error) { synchronizer* sync = static_cast(arg); if (error != GRPC_ERROR_NONE) { fprintf(stderr, "Fetching token failed: %s\n", grpc_error_string(error)); @@ -70,7 +70,7 @@ int main(int argc, char** argv) { grpc_auth_metadata_context context; gpr_cmdline* cl = gpr_cmdline_create("print_google_default_creds_token"); grpc_pollset* pollset = nullptr; - grpc_error* error = nullptr; + grpc_error_handle error = GRPC_ERROR_NONE; gpr_cmdline_add_string(cl, "service_url", "Service URL for the token request.", &service_url); gpr_cmdline_parse(cl, argc, argv); diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index 50c3694d772..c5621d92420 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -166,7 +166,7 @@ static grpc_endpoint_test_config configs[] = { clean_up}, }; -static void inc_call_ctr(void* arg, grpc_error* /*error*/) { +static void inc_call_ctr(void* arg, grpc_error_handle /*error*/) { ++*static_cast(arg); } @@ -202,7 +202,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { clean_up(); } -static void destroy_pollset(void* p, grpc_error* /*error*/) { +static void destroy_pollset(void* p, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(p)); } diff --git a/test/core/security/security_connector_test.cc b/test/core/security/security_connector_test.cc index 0fcf21d6dfc..da7f2f0c5cc 100644 --- a/test/core/security/security_connector_test.cc +++ b/test/core/security/security_connector_test.cc @@ -717,7 +717,7 @@ static void test_peer_alpn_check(void) { GPR_ASSERT(tsi_construct_string_peer_property("wrong peer property name", alpn, strlen(alpn), &peer.properties[0]) == TSI_OK); - grpc_error* error = grpc_ssl_check_alpn(&peer); + grpc_error_handle error = grpc_ssl_check_alpn(&peer); GPR_ASSERT(error != GRPC_ERROR_NONE); tsi_peer_destruct(&peer); GRPC_ERROR_UNREF(error); diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc index cdd00e0633a..6401f8e2f6a 100644 --- a/test/core/security/ssl_server_fuzzer.cc +++ b/test/core/security/ssl_server_fuzzer.cc @@ -42,7 +42,7 @@ struct handshake_state { bool done_callback_called; }; -static void on_handshake_done(void* arg, grpc_error* error) { +static void on_handshake_done(void* arg, grpc_error_handle error) { grpc_core::HandshakerArgs* args = static_cast(arg); struct handshake_state* state = diff --git a/test/core/security/tls_security_connector_test.cc b/test/core/security/tls_security_connector_test.cc index 5c94e89c1d2..c041fd9242c 100644 --- a/test/core/security/tls_security_connector_test.cc +++ b/test/core/security/tls_security_connector_test.cc @@ -352,7 +352,8 @@ TEST_F(TlsSecurityConnectorTest, TlsCheckHostNameSuccess) { GPR_ASSERT(tsi_construct_string_peer_property_from_cstring( TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, target_name, &peer.properties[0]) == TSI_OK); - grpc_error* error = grpc_core::internal::TlsCheckHostName(target_name, &peer); + grpc_error_handle error = + grpc_core::internal::TlsCheckHostName(target_name, &peer); tsi_peer_destruct(&peer); EXPECT_EQ(error, GRPC_ERROR_NONE); GRPC_ERROR_UNREF(error); @@ -366,7 +367,8 @@ TEST_F(TlsSecurityConnectorTest, TlsCheckHostNameFail) { GPR_ASSERT(tsi_construct_string_peer_property_from_cstring( TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, another_name, &peer.properties[0]) == TSI_OK); - grpc_error* error = grpc_core::internal::TlsCheckHostName(target_name, &peer); + grpc_error_handle error = + grpc_core::internal::TlsCheckHostName(target_name, &peer); tsi_peer_destruct(&peer); EXPECT_NE(error, GRPC_ERROR_NONE); GRPC_ERROR_UNREF(error); diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc index 11bcaa0f5b1..e596b4654e6 100644 --- a/test/core/surface/concurrent_connectivity_test.cc +++ b/test/core/surface/concurrent_connectivity_test.cc @@ -137,7 +137,7 @@ void bad_server_thread(void* vargs) { grpc_sockaddr* addr = reinterpret_cast(resolved_addr.addr); int port; grpc_tcp_server* s; - grpc_error* error = grpc_tcp_server_create(nullptr, nullptr, &s); + grpc_error_handle error = grpc_tcp_server_create(nullptr, nullptr, &s); GPR_ASSERT(error == GRPC_ERROR_NONE); memset(&resolved_addr, 0, sizeof(resolved_addr)); addr->sa_family = GRPC_AF_INET; @@ -168,7 +168,7 @@ void bad_server_thread(void* vargs) { grpc_tcp_server_unref(s); } -static void done_pollset_shutdown(void* pollset, grpc_error* /*error*/) { +static void done_pollset_shutdown(void* pollset, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(pollset)); gpr_free(pollset); } diff --git a/test/core/surface/lame_client_test.cc b/test/core/surface/lame_client_test.cc index bac7ee008ee..bd443a769c9 100644 --- a/test/core/surface/lame_client_test.cc +++ b/test/core/surface/lame_client_test.cc @@ -40,7 +40,7 @@ static void* tag(intptr_t t) { return reinterpret_cast(t); } static grpc_closure transport_op_cb; -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} void test_transport_op(grpc_channel* channel) { grpc_core::ExecCtx exec_ctx; diff --git a/test/core/surface/server_test.cc b/test/core/surface/server_test.cc index 0e829c2cf84..2aa962a7027 100644 --- a/test/core/surface/server_test.cc +++ b/test/core/surface/server_test.cc @@ -132,7 +132,7 @@ void test_bind_server_to_addr(const char* host, bool secure) { static int external_dns_works(const char* host) { grpc_resolved_addresses* res = nullptr; - grpc_error* error = grpc_blocking_resolve_address(host, "80", &res); + grpc_error_handle error = grpc_blocking_resolve_address(host, "80", &res); GRPC_ERROR_UNREF(error); if (res != nullptr) { grpc_resolved_addresses_destroy(res); diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc index 16294079832..32ee73f39b7 100644 --- a/test/core/transport/byte_stream_test.cc +++ b/test/core/transport/byte_stream_test.cc @@ -37,7 +37,7 @@ namespace { // SliceBufferByteStream tests // -void NotCalledClosure(void* /*arg*/, grpc_error* /*error*/) { +void NotCalledClosure(void* /*arg*/, grpc_error_handle /*error*/) { GPR_ASSERT(false); } @@ -64,7 +64,7 @@ TEST(SliceBufferByteStream, Basic) { for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { ASSERT_TRUE(stream.Next(~(size_t)0, &closure)); grpc_slice output; - grpc_error* error = stream.Pull(&output); + grpc_error_handle error = stream.Pull(&output); EXPECT_TRUE(error == GRPC_ERROR_NONE); EXPECT_TRUE(grpc_slice_eq(input[i], output)); grpc_slice_unref_internal(output); @@ -95,12 +95,12 @@ TEST(SliceBufferByteStream, Shutdown) { // Read the first slice. ASSERT_TRUE(stream.Next(~(size_t)0, &closure)); grpc_slice output; - grpc_error* error = stream.Pull(&output); + grpc_error_handle error = stream.Pull(&output); EXPECT_TRUE(error == GRPC_ERROR_NONE); EXPECT_TRUE(grpc_slice_eq(input[0], output)); grpc_slice_unref_internal(output); // Now shutdown. - grpc_error* shutdown_error = + grpc_error_handle shutdown_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("shutdown error"); stream.Shutdown(GRPC_ERROR_REF(shutdown_error)); // After shutdown, the next pull() should return the error. @@ -142,7 +142,7 @@ TEST(CachingByteStream, Basic) { for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { ASSERT_TRUE(stream.Next(~(size_t)0, &closure)); grpc_slice output; - grpc_error* error = stream.Pull(&output); + grpc_error_handle error = stream.Pull(&output); EXPECT_TRUE(error == GRPC_ERROR_NONE); EXPECT_TRUE(grpc_slice_eq(input[i], output)); grpc_slice_unref_internal(output); @@ -175,7 +175,7 @@ TEST(CachingByteStream, Reset) { // Read one slice. ASSERT_TRUE(stream.Next(~(size_t)0, &closure)); grpc_slice output; - grpc_error* error = stream.Pull(&output); + grpc_error_handle error = stream.Pull(&output); EXPECT_TRUE(error == GRPC_ERROR_NONE); EXPECT_TRUE(grpc_slice_eq(input[0], output)); grpc_slice_unref_internal(output); @@ -218,7 +218,7 @@ TEST(CachingByteStream, SharedCache) { // Read one slice from stream1. EXPECT_TRUE(stream1.Next(~(size_t)0, &closure)); grpc_slice output; - grpc_error* error = stream1.Pull(&output); + grpc_error_handle error = stream1.Pull(&output); EXPECT_TRUE(error == GRPC_ERROR_NONE); EXPECT_TRUE(grpc_slice_eq(input[0], output)); grpc_slice_unref_internal(output); diff --git a/test/core/transport/chttp2/context_list_test.cc b/test/core/transport/chttp2/context_list_test.cc index 9f0ffeb54e6..d88d66c7cca 100644 --- a/test/core/transport/chttp2/context_list_test.cc +++ b/test/core/transport/chttp2/context_list_test.cc @@ -39,7 +39,7 @@ const uint32_t kByteOffset = 123; void* PhonyArgsCopier(void* arg) { return arg; } void TestExecuteFlushesListVerifier(void* arg, grpc_core::Timestamps* ts, - grpc_error* error) { + grpc_error_handle error) { ASSERT_NE(arg, nullptr); EXPECT_EQ(error, GRPC_ERROR_NONE); if (ts) { diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc index 22465db0db4..e86cdef98fe 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc @@ -30,7 +30,7 @@ bool squelch = true; bool leak_check = true; -static grpc_error* onhdr(void* /*ud*/, grpc_mdelem md) { +static grpc_error_handle onhdr(void* /*ud*/, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); return GRPC_ERROR_NONE; } diff --git a/test/core/transport/chttp2/hpack_parser_test.cc b/test/core/transport/chttp2/hpack_parser_test.cc index 4782d484d1b..bc488815306 100644 --- a/test/core/transport/chttp2/hpack_parser_test.cc +++ b/test/core/transport/chttp2/hpack_parser_test.cc @@ -34,7 +34,7 @@ typedef struct { va_list args; } test_checker; -static grpc_error* onhdr(void* ud, grpc_mdelem md) { +static grpc_error_handle onhdr(void* ud, grpc_mdelem md) { const char *ekey, *evalue; test_checker* chk = static_cast(ud); ekey = va_arg(chk->args, char*); diff --git a/test/core/transport/chttp2/settings_timeout_test.cc b/test/core/transport/chttp2/settings_timeout_test.cc index 81642315dec..28314b8235d 100644 --- a/test/core/transport/chttp2/settings_timeout_test.cc +++ b/test/core/transport/chttp2/settings_timeout_test.cc @@ -104,7 +104,7 @@ class Client { void Connect() { grpc_core::ExecCtx exec_ctx; grpc_resolved_addresses* server_addresses = nullptr; - grpc_error* error = + grpc_error_handle error = grpc_blocking_resolve_address(server_address_, "80", &server_addresses); ASSERT_EQ(GRPC_ERROR_NONE, error) << grpc_error_string(error); ASSERT_GE(server_addresses->naddrs, 1UL); @@ -177,10 +177,10 @@ class Client { bool done() const { return gpr_atm_acq_load(&done_atm_) != 0; } // Caller does NOT take ownership of the error. - grpc_error* error() const { return error_; } + grpc_error_handle error() const { return error_; } private: - static void OnEventDone(void* arg, grpc_error* error) { + static void OnEventDone(void* arg, grpc_error_handle error) { gpr_log(GPR_INFO, "OnEventDone(): %s", grpc_error_string(error)); EventState* state = static_cast(arg); state->error_ = GRPC_ERROR_REF(error); @@ -189,7 +189,7 @@ class Client { grpc_closure closure_; gpr_atm done_atm_ = 0; - grpc_error* error_ = GRPC_ERROR_NONE; + grpc_error_handle error_ = GRPC_ERROR_NONE; }; // Returns true if done, or false if deadline exceeded. @@ -209,7 +209,7 @@ class Client { } } - static void PollsetDestroy(void* arg, grpc_error* /*error*/) { + static void PollsetDestroy(void* arg, grpc_error_handle /*error*/) { grpc_pollset* pollset = static_cast(arg); grpc_pollset_destroy(pollset); gpr_free(pollset); diff --git a/test/core/transport/error_utils_test.cc b/test/core/transport/error_utils_test.cc index 4a730565b86..909a5b8a70a 100644 --- a/test/core/transport/error_utils_test.cc +++ b/test/core/transport/error_utils_test.cc @@ -26,7 +26,7 @@ namespace { // ---- Ok Status ---- TEST(ErrorUtilsTest, AbslOkToGrpcError) { - grpc_error* error = absl_status_to_grpc_error(absl::OkStatus()); + grpc_error_handle error = absl_status_to_grpc_error(absl::OkStatus()); ASSERT_EQ(GRPC_ERROR_NONE, error); GRPC_ERROR_UNREF(error); } @@ -39,7 +39,7 @@ TEST(ErrorUtilsTest, GrpcSpecialErrorNoneToAbslStatus) { // ---- Asymmetry of conversions of "Special" errors ---- TEST(ErrorUtilsTest, AbslStatusToGrpcErrorDoesNotReturnSpecialVariables) { - grpc_error* error = + grpc_error_handle error = absl_status_to_grpc_error(absl::CancelledError("Cancelled")); ASSERT_NE(error, GRPC_ERROR_CANCELLED); GRPC_ERROR_UNREF(error); @@ -59,7 +59,7 @@ TEST(ErrorUtilsTest, GrpcSpecialErrorOOMToAbslStatus) { // ---- Ordinary statuses ---- TEST(ErrorUtilsTest, AbslUnavailableToGrpcError) { - grpc_error* error = + grpc_error_handle error = absl_status_to_grpc_error(absl::UnavailableError("Making tea")); // Status code checks intptr_t code; @@ -75,7 +75,7 @@ TEST(ErrorUtilsTest, AbslUnavailableToGrpcError) { } TEST(ErrorUtilsTest, GrpcErrorUnavailableToAbslStatus) { - grpc_error* error = grpc_error_set_int( + grpc_error_handle error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "weighted_target: all children report state TRANSIENT_FAILURE"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); diff --git a/test/core/transport/stream_owned_slice_test.cc b/test/core/transport/stream_owned_slice_test.cc index 62ce964207a..ca8140ca388 100644 --- a/test/core/transport/stream_owned_slice_test.cc +++ b/test/core/transport/stream_owned_slice_test.cc @@ -23,7 +23,7 @@ #include #include -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} int main(int argc, char** argv) { grpc::testing::TestEnvironment env(argc, argv); diff --git a/test/core/tsi/transport_security_test_lib.cc b/test/core/tsi/transport_security_test_lib.cc index 0bfa27b8dfc..f0c428ab88b 100644 --- a/test/core/tsi/transport_security_test_lib.cc +++ b/test/core/tsi/transport_security_test_lib.cc @@ -50,7 +50,7 @@ typedef struct handshaker_args { bool is_client; bool transferred_data; bool appended_unused_bytes; - grpc_error* error; + grpc_error_handle error; } handshaker_args; static handshaker_args* handshaker_args_create(tsi_test_fixture* fixture, @@ -289,15 +289,14 @@ void tsi_test_frame_protector_receive_message_from_peer( gpr_free(message_buffer); } -grpc_error* on_handshake_next_done(tsi_result result, void* user_data, - const unsigned char* bytes_to_send, - size_t bytes_to_send_size, - tsi_handshaker_result* handshaker_result) { +grpc_error_handle on_handshake_next_done( + tsi_result result, void* user_data, const unsigned char* bytes_to_send, + size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) { handshaker_args* args = static_cast(user_data); GPR_ASSERT(args != nullptr); GPR_ASSERT(args->fixture != nullptr); tsi_test_fixture* fixture = args->fixture; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; /* Read more data if we need to. */ if (result == TSI_INCOMPLETE_DATA) { GPR_ASSERT(bytes_to_send_size == 0); diff --git a/test/core/util/mock_endpoint.cc b/test/core/util/mock_endpoint.cc index b62613b8d34..af24d5f9502 100644 --- a/test/core/util/mock_endpoint.cc +++ b/test/core/util/mock_endpoint.cc @@ -76,7 +76,7 @@ static void me_add_to_pollset_set(grpc_endpoint* /*ep*/, static void me_delete_from_pollset_set(grpc_endpoint* /*ep*/, grpc_pollset_set* /*pollset*/) {} -static void me_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void me_shutdown(grpc_endpoint* ep, grpc_error_handle why) { mock_endpoint* m = reinterpret_cast(ep); gpr_mu_lock(&m->mu); if (m->on_read) { diff --git a/test/core/util/passthru_endpoint.cc b/test/core/util/passthru_endpoint.cc index f856481bc65..635b0bac5f2 100644 --- a/test/core/util/passthru_endpoint.cc +++ b/test/core/util/passthru_endpoint.cc @@ -84,7 +84,7 @@ static void me_write(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb, void* /*arg*/) { half* m = other_half(reinterpret_cast(ep)); gpr_mu_lock(&m->parent->mu); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; gpr_atm_no_barrier_fetch_add(&m->parent->stats->num_writes, (gpr_atm)1); if (m->parent->shutdown) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown"); @@ -113,7 +113,7 @@ static void me_add_to_pollset_set(grpc_endpoint* /*ep*/, static void me_delete_from_pollset_set(grpc_endpoint* /*ep*/, grpc_pollset_set* /*pollset*/) {} -static void me_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void me_shutdown(grpc_endpoint* ep, grpc_error_handle why) { half* m = reinterpret_cast(ep); gpr_mu_lock(&m->parent->mu); m->parent->shutdown = true; diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 973068dcda2..91a0bc71f09 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -40,14 +40,14 @@ typedef struct freereq { int done = 0; } freereq; -static void destroy_pops_and_shutdown(void* p, grpc_error* /*error*/) { +static void destroy_pops_and_shutdown(void* p, grpc_error_handle /*error*/) { grpc_pollset* pollset = grpc_polling_entity_pollset(static_cast(p)); grpc_pollset_destroy(pollset); gpr_free(pollset); } -static void freed_port_from_server(void* arg, grpc_error* /*error*/) { +static void freed_port_from_server(void* arg, grpc_error_handle /*error*/) { freereq* pr = static_cast(arg); gpr_mu_lock(pr->mu); pr->done = 1; @@ -127,7 +127,7 @@ typedef struct portreq { grpc_httpcli_response response = {}; } portreq; -static void got_port_from_server(void* arg, grpc_error* error) { +static void got_port_from_server(void* arg, grpc_error_handle error) { size_t i; int port = 0; portreq* pr = static_cast(arg); diff --git a/test/core/util/resolve_localhost_ip46.cc b/test/core/util/resolve_localhost_ip46.cc index b465b754ba5..bf3f621c173 100644 --- a/test/core/util/resolve_localhost_ip46.cc +++ b/test/core/util/resolve_localhost_ip46.cc @@ -33,7 +33,7 @@ gpr_once g_resolve_localhost_ipv46 = GPR_ONCE_INIT; void InitResolveLocalhost() { grpc_resolved_addresses* addresses; - grpc_error* err = + grpc_error_handle err = grpc_blocking_resolve_address("localhost", "https", &addresses); GPR_ASSERT(err == GRPC_ERROR_NONE); for (size_t i = 0; i < addresses->naddrs; i++) { diff --git a/test/core/util/test_lb_policies.cc b/test/core/util/test_lb_policies.cc index 31b82a90fcb..452212e9a46 100644 --- a/test/core/util/test_lb_policies.cc +++ b/test/core/util/test_lb_policies.cc @@ -182,7 +182,7 @@ class TestPickArgsLbFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kTestPickArgsLbPolicyName; } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } @@ -280,7 +280,7 @@ class InterceptRecvTrailingMetadataLoadBalancingPolicy TrailingMetadataHandler(PickResult* result, InterceptRecvTrailingMetadataCallback cb) : cb_(std::move(cb)) { - result->recv_trailing_metadata_ready = [this](grpc_error* error, + result->recv_trailing_metadata_ready = [this](grpc_error_handle error, MetadataInterface* metadata, CallState* call_state) { RecordRecvTrailingMetadata(error, metadata, call_state); @@ -288,7 +288,7 @@ class InterceptRecvTrailingMetadataLoadBalancingPolicy } private: - void RecordRecvTrailingMetadata(grpc_error* /*error*/, + void RecordRecvTrailingMetadata(grpc_error_handle /*error*/, MetadataInterface* recv_trailing_metadata, CallState* call_state) { TrailingMetadataArgsSeen args_seen; @@ -326,7 +326,7 @@ class InterceptTrailingFactory : public LoadBalancingPolicyFactory { } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } @@ -407,7 +407,7 @@ class AddressTestFactory : public LoadBalancingPolicyFactory { const char* name() const override { return kAddressTestLbPolicyName; } RefCountedPtr ParseLoadBalancingConfig( - const Json& /*json*/, grpc_error** /*error*/) const override { + const Json& /*json*/, grpc_error_handle* /*error*/) const override { return MakeRefCounted(); } diff --git a/test/core/util/test_tcp_server.cc b/test/core/util/test_tcp_server.cc index 9dd1e2af36a..0004369dc9d 100644 --- a/test/core/util/test_tcp_server.cc +++ b/test/core/util/test_tcp_server.cc @@ -34,7 +34,7 @@ #include "test/core/util/port.h" #include "test/core/util/test_config.h" -static void on_server_destroyed(void* data, grpc_error* /*error*/) { +static void on_server_destroyed(void* data, grpc_error_handle /*error*/) { test_tcp_server* server = static_cast(data); server->shutdown = true; } @@ -64,8 +64,8 @@ void test_tcp_server_start(test_tcp_server* server, int port) { addr->sin_port = grpc_htons(static_cast(port)); memset(&addr->sin_addr, 0, sizeof(addr->sin_addr)); - grpc_error* error = grpc_tcp_server_create(&server->shutdown_complete, - nullptr, &server->tcp_server); + grpc_error_handle error = grpc_tcp_server_create( + &server->shutdown_complete, nullptr, &server->tcp_server); GPR_ASSERT(error == GRPC_ERROR_NONE); error = grpc_tcp_server_add_port(server->tcp_server, &resolved_addr, &port_added); @@ -88,8 +88,8 @@ void test_tcp_server_poll(test_tcp_server* server, int milliseconds) { gpr_mu_unlock(server->mu); } -static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} -static void finish_pollset(void* arg, grpc_error* /*error*/) { +static void do_nothing(void* /*arg*/, grpc_error_handle /*error*/) {} +static void finish_pollset(void* arg, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(arg)); } diff --git a/test/core/util/trickle_endpoint.cc b/test/core/util/trickle_endpoint.cc index 603b51ab80c..5b5199b7d7a 100644 --- a/test/core/util/trickle_endpoint.cc +++ b/test/core/util/trickle_endpoint.cc @@ -41,7 +41,7 @@ typedef struct { gpr_mu mu; grpc_slice_buffer write_buffer; grpc_slice_buffer writing_buffer; - grpc_error* error; + grpc_error_handle error; bool writing; grpc_closure* write_cb; } trickle_endpoint; @@ -96,7 +96,7 @@ static void te_delete_from_pollset_set(grpc_endpoint* ep, grpc_endpoint_delete_from_pollset_set(te->wrapped, pollset_set); } -static void te_shutdown(grpc_endpoint* ep, grpc_error* why) { +static void te_shutdown(grpc_endpoint* ep, grpc_error_handle why) { trickle_endpoint* te = reinterpret_cast(ep); gpr_mu_lock(&te->mu); if (te->error == GRPC_ERROR_NONE) { @@ -139,7 +139,7 @@ static int te_get_fd(grpc_endpoint* ep) { static bool te_can_track_err(grpc_endpoint* /*ep*/) { return false; } -static void te_finish_write(void* arg, grpc_error* /*error*/) { +static void te_finish_write(void* arg, grpc_error_handle /*error*/) { trickle_endpoint* te = static_cast(arg); gpr_mu_lock(&te->mu); te->writing = false; diff --git a/test/core/xds/certificate_provider_store_test.cc b/test/core/xds/certificate_provider_store_test.cc index 6df39ff321d..211e46ed357 100644 --- a/test/core/xds/certificate_provider_store_test.cc +++ b/test/core/xds/certificate_provider_store_test.cc @@ -58,7 +58,7 @@ class FakeCertificateProviderFactory1 : public CertificateProviderFactory { RefCountedPtr CreateCertificateProviderConfig(const Json& /*config_json*/, - grpc_error** /*error*/) override { + grpc_error_handle* /*error*/) override { return MakeRefCounted(); } @@ -81,7 +81,7 @@ class FakeCertificateProviderFactory2 : public CertificateProviderFactory { RefCountedPtr CreateCertificateProviderConfig(const Json& /*config_json*/, - grpc_error** /*error*/) override { + grpc_error_handle* /*error*/) override { return MakeRefCounted(); } diff --git a/test/core/xds/file_watcher_certificate_provider_factory_test.cc b/test/core/xds/file_watcher_certificate_provider_factory_test.cc index 0ecb0123cae..c82e8e30fed 100644 --- a/test/core/xds/file_watcher_certificate_provider_factory_test.cc +++ b/test/core/xds/file_watcher_certificate_provider_factory_test.cc @@ -45,7 +45,7 @@ TEST(FileWatcherConfigTest, Basic) { " \"refresh_interval\": \"%ds\"" "}", kIdentityCertFile, kPrivateKeyFile, kRootCertFile, kRefreshInterval); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -65,7 +65,7 @@ TEST(FileWatcherConfigTest, DefaultRefreshInterval) { " \"ca_certificate_file\": \"%s\"" "}", kIdentityCertFile, kPrivateKeyFile, kRootCertFile); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -83,7 +83,7 @@ TEST(FileWatcherConfigTest, OnlyRootCertificatesFileProvided) { " \"ca_certificate_file\": \"%s\"" "}", kRootCertFile); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -102,7 +102,7 @@ TEST(FileWatcherConfigTest, OnlyIdenityCertificatesAndPrivateKeyProvided) { " \"private_key_file\": \"%s\"" "}", kIdentityCertFile, kPrivateKeyFile); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -122,7 +122,7 @@ TEST(FileWatcherConfigTest, WrongTypes) { " \"ca_certificate_file\": 123," " \"refresh_interval\": 123" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -144,7 +144,7 @@ TEST(FileWatcherConfigTest, IdentityCertProvidedButPrivateKeyMissing) { " \"certificate_file\": \"%s\"" "}", kIdentityCertFile); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -162,7 +162,7 @@ TEST(FileWatcherConfigTest, PrivateKeyProvidedButIdentityCertMissing) { " \"private_key_file\": \"%s\"" "}", kPrivateKeyFile); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -176,7 +176,7 @@ TEST(FileWatcherConfigTest, PrivateKeyProvidedButIdentityCertMissing) { TEST(FileWatcherConfigTest, EmptyJsonObject) { std::string json_str = absl::StrFormat("{}"); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = diff --git a/test/core/xds/google_mesh_ca_certificate_provider_factory_test.cc b/test/core/xds/google_mesh_ca_certificate_provider_factory_test.cc index 8d336c3d3e9..62478aaecfe 100644 --- a/test/core/xds/google_mesh_ca_certificate_provider_factory_test.cc +++ b/test/core/xds/google_mesh_ca_certificate_provider_factory_test.cc @@ -67,7 +67,7 @@ TEST(GoogleMeshCaConfigTest, Basic) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -120,7 +120,7 @@ TEST(GoogleMeshCaConfigTest, Defaults) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -172,7 +172,7 @@ TEST(GoogleMeshCaConfigTest, WrongExpectedValues) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -215,7 +215,7 @@ TEST(GoogleMeshCaConfigTest, WrongTypes) { " \"key_size\": \"1024\"," " \"location\": 123" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -259,7 +259,7 @@ TEST(GoogleMeshCaConfigTest, GrpcServicesNotAnArray) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -284,7 +284,7 @@ TEST(GoogleMeshCaConfigTest, GoogleGrpcNotAnObject) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -311,7 +311,7 @@ TEST(GoogleMeshCaConfigTest, CallCredentialsNotAnArray) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = @@ -340,7 +340,7 @@ TEST(GoogleMeshCaConfigTest, StsServiceNotAnObject) { "\"https://container.googleapis.com/v1/project/test-project1/locations/" "test-zone2/clusters/test-cluster3\"" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); auto config = diff --git a/test/core/xds/xds_bootstrap_test.cc b/test/core/xds/xds_bootstrap_test.cc index 29b82773b53..753b58300e5 100644 --- a/test/core/xds/xds_bootstrap_test.cc +++ b/test/core/xds/xds_bootstrap_test.cc @@ -113,7 +113,7 @@ TEST_P(XdsBootstrapTest, Basic) { " \"server_listener_resource_name_template\": \"example/resource\"," " \"ignore\": {}" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -155,7 +155,7 @@ TEST_P(XdsBootstrapTest, ValidWithoutNode) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -175,7 +175,7 @@ TEST_P(XdsBootstrapTest, InsecureCreds) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -211,7 +211,7 @@ TEST_P(XdsBootstrapTest, GoogleDefaultCreds) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -230,7 +230,7 @@ TEST_P(XdsBootstrapTest, MissingChannelCreds) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -249,7 +249,7 @@ TEST_P(XdsBootstrapTest, NoKnownChannelCreds) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -260,7 +260,7 @@ TEST_P(XdsBootstrapTest, NoKnownChannelCreds) { } TEST_P(XdsBootstrapTest, MissingXdsServers) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse("{}", &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -277,7 +277,7 @@ TEST_P(XdsBootstrapTest, TopFieldsWrongTypes) { " \"server_listener_resource_name_template\":1," " \"certificate_providers\":1" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -299,7 +299,7 @@ TEST_P(XdsBootstrapTest, XdsServerMissingServerUri) { "{" " \"xds_servers\":[{}]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -320,7 +320,7 @@ TEST_P(XdsBootstrapTest, XdsServerUriAndCredsWrongTypes) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -348,7 +348,7 @@ TEST_P(XdsBootstrapTest, ChannelCredsFieldsWrongTypes) { " }" " ]" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -373,7 +373,7 @@ TEST_P(XdsBootstrapTest, NodeFieldsWrongTypes) { " \"metadata\":0" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -397,7 +397,7 @@ TEST_P(XdsBootstrapTest, LocalityFieldsWrongType) { " }" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -423,7 +423,7 @@ TEST_P(XdsBootstrapTest, CertificateProvidersElementWrongType) { " \"plugin\":1" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -453,7 +453,7 @@ TEST_P(XdsBootstrapTest, CertificateProvidersPluginNameWrongType) { " }" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -495,8 +495,8 @@ class FakeCertificateProviderFactory : public CertificateProviderFactory { RefCountedPtr CreateCertificateProviderConfig(const Json& config_json, - grpc_error** error) override { - std::vector error_list; + grpc_error_handle* error) override { + std::vector error_list; EXPECT_EQ(config_json.type(), Json::Type::OBJECT); auto it = config_json.object_value().find("value"); if (it == config_json.object_value().end()) { @@ -538,7 +538,7 @@ TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginParsingError) { " }" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -574,7 +574,7 @@ TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginParsingSuccess) { " }" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); @@ -611,7 +611,7 @@ TEST_P(XdsBootstrapTest, CertificateProvidersFakePluginEmptyConfig) { " }" " }" "}"; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; Json json = Json::Parse(json_str, &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); XdsBootstrap bootstrap(std::move(json), &error); diff --git a/test/core/xds/xds_certificate_provider_test.cc b/test/core/xds/xds_certificate_provider_test.cc index 8f6c8f3ab49..0ce748cf3fd 100644 --- a/test/core/xds/xds_certificate_provider_test.cc +++ b/test/core/xds/xds_certificate_provider_test.cc @@ -73,8 +73,8 @@ class TestCertificatesWatcher } } - void OnError(grpc_error* root_cert_error, - grpc_error* identity_cert_error) override { + void OnError(grpc_error_handle root_cert_error, + grpc_error_handle identity_cert_error) override { GRPC_ERROR_UNREF(root_cert_error_); root_cert_error_ = root_cert_error; GRPC_ERROR_UNREF(identity_cert_error_); @@ -87,15 +87,15 @@ class TestCertificatesWatcher return key_cert_pairs_; } - grpc_error* root_cert_error() const { return root_cert_error_; } + grpc_error_handle root_cert_error() const { return root_cert_error_; } - grpc_error* identity_cert_error() const { return identity_cert_error_; } + grpc_error_handle identity_cert_error() const { return identity_cert_error_; } private: absl::optional root_certs_; absl::optional key_cert_pairs_; - grpc_error* root_cert_error_ = GRPC_ERROR_NONE; - grpc_error* identity_cert_error_ = GRPC_ERROR_NONE; + grpc_error_handle root_cert_error_ = GRPC_ERROR_NONE; + grpc_error_handle identity_cert_error_ = GRPC_ERROR_NONE; }; TEST( diff --git a/test/cpp/client/client_channel_stress_test.cc b/test/cpp/client/client_channel_stress_test.cc index 011dd4f4330..5887ef9ad8a 100644 --- a/test/cpp/client/client_channel_stress_test.cc +++ b/test/cpp/client/client_channel_stress_test.cc @@ -242,7 +242,7 @@ class ClientChannelStressTest { static grpc_core::Resolver::Result MakeResolverResult( const std::vector& balancer_address_data) { grpc_core::Resolver::Result result; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; result.service_config = grpc_core::ServiceConfig::Create( nullptr, "{\"loadBalancingConfig\":[{\"grpclb\":{}}]}", &error); GPR_ASSERT(error == GRPC_ERROR_NONE); diff --git a/test/cpp/client/destroy_grpclb_channel_with_active_connect_stress_test.cc b/test/cpp/client/destroy_grpclb_channel_with_active_connect_stress_test.cc index f58db7ecdd2..5bbb29bc546 100644 --- a/test/cpp/client/destroy_grpclb_channel_with_active_connect_stress_test.cc +++ b/test/cpp/client/destroy_grpclb_channel_with_active_connect_stress_test.cc @@ -68,7 +68,7 @@ void TryConnectAndDestroy() { grpc_core::ServerAddressList addresses; addresses.emplace_back(address.addr, address.len, nullptr); grpc_core::Resolver::Result lb_address_result; - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; lb_address_result.service_config = grpc_core::ServiceConfig::Create( nullptr, "{\"loadBalancingConfig\":[{\"grpclb\":{}}]}", &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error); diff --git a/test/cpp/common/channel_filter_test.cc b/test/cpp/common/channel_filter_test.cc index 230737e4100..c077930be7a 100644 --- a/test/cpp/common/channel_filter_test.cc +++ b/test/cpp/common/channel_filter_test.cc @@ -28,8 +28,8 @@ class MyChannelData : public ChannelData { public: MyChannelData() {} - grpc_error* Init(grpc_channel_element* /*elem*/, - grpc_channel_element_args* args) override { + grpc_error_handle Init(grpc_channel_element* /*elem*/, + grpc_channel_element_args* args) override { (void)args->channel_args; // Make sure field is available. return GRPC_ERROR_NONE; } @@ -39,8 +39,8 @@ class MyCallData : public CallData { public: MyCallData() {} - grpc_error* Init(grpc_call_element* /*elem*/, - const grpc_call_element_args* args) override { + grpc_error_handle Init(grpc_call_element* /*elem*/, + const grpc_call_element_args* args) override { (void)args->path; // Make sure field is available. return GRPC_ERROR_NONE; } diff --git a/test/cpp/common/time_jump_test.cc b/test/cpp/common/time_jump_test.cc index 4836905bb9b..f6ff40feb69 100644 --- a/test/cpp/common/time_jump_test.cc +++ b/test/cpp/common/time_jump_test.cc @@ -90,7 +90,7 @@ TEST_P(TimeJumpTest, TimerRunning) { grpc_timer timer; grpc_timer_init(&timer, grpc_core::ExecCtx::Get()->Now() + 3000, GRPC_CLOSURE_CREATE( - [](void*, grpc_error* error) { + [](void*, grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_CANCELLED); }, nullptr, grpc_schedule_on_exec_ctx)); diff --git a/test/cpp/common/timer_test.cc b/test/cpp/common/timer_test.cc index 63c0757097f..dca02156820 100644 --- a/test/cpp/common/timer_test.cc +++ b/test/cpp/common/timer_test.cc @@ -84,7 +84,7 @@ TEST_F(TimerTest, OneTimerExpires) { int timer_fired = 0; grpc_timer_init(&timer, grpc_core::ExecCtx::Get()->Now() + 500, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error*) { + [](void* arg, grpc_error_handle) { int* timer_fired = static_cast(arg); ++*timer_fired; }, @@ -109,7 +109,7 @@ TEST_F(TimerTest, MultipleTimersExpire) { for (int i = 0; i < kNumTimers; ++i) { grpc_timer_init(&timers[i], grpc_core::ExecCtx::Get()->Now() + 500 + i, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error*) { + [](void* arg, grpc_error_handle) { int* timer_fired = static_cast(arg); ++*timer_fired; }, @@ -136,7 +136,7 @@ TEST_F(TimerTest, CancelSomeTimers) { for (int i = 0; i < kNumTimers; ++i) { grpc_timer_init(&timers[i], grpc_core::ExecCtx::Get()->Now() + 500 + i, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* error) { + [](void* arg, grpc_error_handle error) { if (error == GRPC_ERROR_CANCELLED) { return; } @@ -166,7 +166,7 @@ TEST_F(TimerTest, DISABLED_TimerNotCanceled) { grpc_core::ExecCtx exec_ctx; grpc_timer timer; grpc_timer_init(&timer, grpc_core::ExecCtx::Get()->Now() + 10000, - GRPC_CLOSURE_CREATE([](void*, grpc_error*) {}, nullptr, + GRPC_CLOSURE_CREATE([](void*, grpc_error_handle) {}, nullptr, grpc_schedule_on_exec_ctx)); } @@ -181,7 +181,7 @@ TEST_F(TimerTest, DISABLED_CancelRace) { grpc_timer* arg = (i != 0) ? &timers[i - 1] : nullptr; grpc_timer_init(&timers[i], grpc_core::ExecCtx::Get()->Now() + 100, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { grpc_timer* timer = static_cast(arg); if (timer) { grpc_timer_cancel(timer); @@ -211,7 +211,7 @@ TEST_F(TimerTest, DISABLED_CancelNextTimer) { } grpc_timer_init(&timers[i], grpc_core::ExecCtx::Get()->Now() + 100, GRPC_CLOSURE_CREATE( - [](void* arg, grpc_error* /*error*/) { + [](void* arg, grpc_error_handle /*error*/) { grpc_timer* timer = static_cast(arg); if (timer) { grpc_timer_cancel(timer); diff --git a/test/cpp/end2end/filter_end2end_test.cc b/test/cpp/end2end/filter_end2end_test.cc index 0d8f1d787bc..535ee295a62 100644 --- a/test/cpp/end2end/filter_end2end_test.cc +++ b/test/cpp/end2end/filter_end2end_test.cc @@ -101,8 +101,8 @@ int GetCallCounterValue() { class ChannelDataImpl : public ChannelData { public: - grpc_error* Init(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) override { + grpc_error_handle Init(grpc_channel_element* /*elem*/, + grpc_channel_element_args* /*args*/) override { IncrementConnectionCounter(); return GRPC_ERROR_NONE; } diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index d5ff33c3410..0af76a4229f 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -564,7 +564,7 @@ class GrpclbEnd2endTest : public ::testing::Test { grpc_core::Resolver::Result result; result.addresses = CreateLbAddressesFromAddressDataList(backend_address_data); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; result.service_config = grpc_core::ServiceConfig::Create(nullptr, service_config_json, &error); GPR_ASSERT(error == GRPC_ERROR_NONE); diff --git a/test/cpp/end2end/port_sharing_end2end_test.cc b/test/cpp/end2end/port_sharing_end2end_test.cc index f342bd00a85..e9fa8269bf9 100644 --- a/test/cpp/end2end/port_sharing_end2end_test.cc +++ b/test/cpp/end2end/port_sharing_end2end_test.cc @@ -148,7 +148,7 @@ class TestTcpServer { self->OnConnect(tcp, accepting_pollset, acceptor); } - static void OnFdReleased(void* arg, grpc_error* err) { + static void OnFdReleased(void* arg, grpc_error_handle err) { auto* self = static_cast(arg); self->OnFdReleased(err); } @@ -165,7 +165,7 @@ class TestTcpServer { grpc_tcp_destroy_and_release_fd(tcp, &fd_, &on_fd_released_); } - void OnFdReleased(grpc_error* err) { + void OnFdReleased(grpc_error_handle err) { EXPECT_EQ(GRPC_ERROR_NONE, err); experimental::ExternalConnectionAcceptor::NewConnectionParameters p; p.listener_fd = listener_fd_; diff --git a/test/cpp/end2end/xds_end2end_test.cc b/test/cpp/end2end/xds_end2end_test.cc index 74cc66da608..5406c7ddac5 100644 --- a/test/cpp/end2end/xds_end2end_test.cc +++ b/test/cpp/end2end/xds_end2end_test.cc @@ -1442,7 +1442,7 @@ class FakeCertificateProvider final : public grpc_tls_certificate_provider { if (!root_being_watched && !identity_being_watched) return; auto it = cert_data_map_.find(cert_name); if (it == cert_data_map_.end()) { - grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("No certificates available for cert_name \"", cert_name, "\"") .c_str()); @@ -1503,7 +1503,7 @@ class FakeCertificateProviderFactory grpc_core::RefCountedPtr CreateCertificateProviderConfig(const grpc_core::Json& /*config_json*/, - grpc_error** /*error*/) override { + grpc_error_handle* /*error*/) override { return grpc_core::MakeRefCounted(name_); } @@ -2039,7 +2039,7 @@ class XdsEnd2endTest : public ::testing::TestWithParam { grpc_core::ExecCtx exec_ctx; grpc_core::Resolver::Result result; result.addresses = CreateAddressListFromPortList(ports); - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; const char* service_config_json = GetParam().enable_load_reporting() ? kDefaultServiceConfig @@ -2074,7 +2074,7 @@ class XdsEnd2endTest : public ::testing::TestWithParam { grpc_core::Resolver::Result result; result.addresses = CreateAddressListFromPortList(ports); if (service_config_json != nullptr) { - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; result.service_config = grpc_core::ServiceConfig::Create( nullptr, service_config_json, &error); ASSERT_NE(result.service_config.get(), nullptr); diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index 236ab1cb343..81351f74a9c 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -312,9 +312,11 @@ static void BM_LameChannelCallCreateCoreSeparateBatch(benchmark::State& state) { } BENCHMARK(BM_LameChannelCallCreateCoreSeparateBatch); -static void FilterDestroy(void* arg, grpc_error* /*error*/) { gpr_free(arg); } +static void FilterDestroy(void* arg, grpc_error_handle /*error*/) { + gpr_free(arg); +} -static void DoNothing(void* /*arg*/, grpc_error* /*error*/) {} +static void DoNothing(void* /*arg*/, grpc_error_handle /*error*/) {} class FakeClientChannelFactory : public grpc_core::ClientChannelFactory { public: @@ -351,8 +353,8 @@ static void StartTransportStreamOp(grpc_call_element* /*elem*/, static void StartTransportOp(grpc_channel_element* /*elem*/, grpc_transport_op* /*op*/) {} -static grpc_error* InitCallElem(grpc_call_element* /*elem*/, - const grpc_call_element_args* /*args*/) { +static grpc_error_handle InitCallElem(grpc_call_element* /*elem*/, + const grpc_call_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -363,8 +365,8 @@ static void DestroyCallElem(grpc_call_element* /*elem*/, const grpc_call_final_info* /*final_info*/, grpc_closure* /*then_sched_closure*/) {} -grpc_error* InitChannelElem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +grpc_error_handle InitChannelElem(grpc_channel_element* /*elem*/, + grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } @@ -642,8 +644,8 @@ static void StartTransportOp(grpc_channel_element* /*elem*/, grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE); } -static grpc_error* InitCallElem(grpc_call_element* elem, - const grpc_call_element_args* args) { +static grpc_error_handle InitCallElem(grpc_call_element* elem, + const grpc_call_element_args* args) { call_data* calld = static_cast(elem->call_data); calld->call_combiner = args->call_combiner; return GRPC_ERROR_NONE; @@ -658,8 +660,8 @@ static void DestroyCallElem(grpc_call_element* /*elem*/, grpc_core::ExecCtx::Run(DEBUG_LOCATION, then_sched_closure, GRPC_ERROR_NONE); } -grpc_error* InitChannelElem(grpc_channel_element* /*elem*/, - grpc_channel_element_args* /*args*/) { +grpc_error_handle InitChannelElem(grpc_channel_element* /*elem*/, + grpc_channel_element_args* /*args*/) { return GRPC_ERROR_NONE; } diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index 063b7fca664..1a1de051da9 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -452,12 +452,12 @@ static void BM_HpackParserInitDestroy(benchmark::State& state) { } BENCHMARK(BM_HpackParserInitDestroy); -static grpc_error* UnrefHeader(void* /*user_data*/, grpc_mdelem md) { +static grpc_error_handle UnrefHeader(void* /*user_data*/, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); return GRPC_ERROR_NONE; } -template +template static void BM_HpackParserParseHeader(benchmark::State& state) { TrackCounters track_counters; grpc_core::ExecCtx exec_ctx; @@ -784,7 +784,7 @@ class RepresentativeServerTrailingMetadata { static void free_timeout(void* p) { gpr_free(p); } // Benchmark the current on_initial_header implementation -static grpc_error* OnInitialHeader(void* user_data, grpc_mdelem md) { +static grpc_error_handle OnInitialHeader(void* user_data, grpc_mdelem md) { // Setup for benchmark. This will bloat the absolute values of this benchmark grpc_chttp2_incoming_metadata_buffer buffer( static_cast(user_data)); @@ -825,7 +825,8 @@ static grpc_error* OnInitialHeader(void* user_data, grpc_mdelem md) { if (!seen_error) { buffer.size = new_size; } - grpc_error* error = grpc_chttp2_incoming_metadata_buffer_add(&buffer, md); + grpc_error_handle error = + grpc_chttp2_incoming_metadata_buffer_add(&buffer, md); if (error != GRPC_ERROR_NONE) { GPR_ASSERT(0); } @@ -834,7 +835,7 @@ static grpc_error* OnInitialHeader(void* user_data, grpc_mdelem md) { } // Benchmark timeout handling -static grpc_error* OnHeaderTimeout(void* /*user_data*/, grpc_mdelem md) { +static grpc_error_handle OnHeaderTimeout(void* /*user_data*/, grpc_mdelem md) { if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_GRPC_TIMEOUT)) { grpc_millis* cached_timeout = static_cast(grpc_mdelem_get_user_data(md, free_timeout)); diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index 2e16542928d..92c6ccd2ecf 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -111,7 +111,7 @@ class PhonyEndpoint : public grpc_endpoint { static void delete_from_pollset_set(grpc_endpoint* /*ep*/, grpc_pollset_set* /*pollset*/) {} - static void shutdown(grpc_endpoint* ep, grpc_error* why) { + static void shutdown(grpc_endpoint* ep, grpc_error_handle why) { grpc_resource_user_shutdown(static_cast(ep)->ru_); grpc_core::ExecCtx::Run(DEBUG_LOCATION, static_cast(ep)->read_cb_, why); @@ -171,7 +171,7 @@ std::unique_ptr MakeTestClosure(F f) { GRPC_CLOSURE_INIT(this, Execute, this, nullptr); } F f_; - static void Execute(void* arg, grpc_error* error) { + static void Execute(void* arg, grpc_error_handle error) { static_cast(arg)->f_(error); } }; @@ -183,7 +183,7 @@ grpc_closure* MakeOnceClosure(F f) { struct C : public grpc_closure { explicit C(const F& f) : f_(f) {} F f_; - static void Execute(void* arg, grpc_error* error) { + static void Execute(void* arg, grpc_error_handle error) { static_cast(arg)->f_(error); delete static_cast(arg); } @@ -239,7 +239,7 @@ class Stream { } private: - static void FinishDestroy(void* arg, grpc_error* /*error*/) { + static void FinishDestroy(void* arg, grpc_error_handle /*error*/) { auto stream = static_cast(arg); grpc_transport_destroy_stream(stream->f_->transport(), static_cast(stream->stream_), @@ -273,7 +273,7 @@ static void BM_StreamCreateDestroy(benchmark::State& state) { op.payload = &op_payload; op_payload.cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; std::unique_ptr next = - MakeTestClosure([&, s](grpc_error* /*error*/) { + MakeTestClosure([&, s](grpc_error_handle /*error*/) { if (!state.KeepRunning()) { delete s; return; @@ -339,7 +339,7 @@ static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { f.FlushExecCtx(); gpr_event bm_done; gpr_event_init(&bm_done); - start = MakeTestClosure([&, s](grpc_error* /*error*/) { + start = MakeTestClosure([&, s](grpc_error_handle /*error*/) { if (!state.KeepRunning()) { delete s; gpr_event_set(&bm_done, (void*)1); @@ -352,7 +352,7 @@ static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { op.payload->send_initial_metadata.send_initial_metadata = &b; s->Op(&op); }); - done = MakeTestClosure([&](grpc_error* /*error*/) { + done = MakeTestClosure([&](grpc_error_handle /*error*/) { reset_op(); op.cancel_stream = true; op.payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; @@ -380,12 +380,13 @@ static void BM_TransportEmptyOp(benchmark::State& state) { op = {}; op.payload = &op_payload; }; - std::unique_ptr c = MakeTestClosure([&](grpc_error* /*error*/) { - if (!state.KeepRunning()) return; - reset_op(); - op.on_complete = c.get(); - s->Op(&op); - }); + std::unique_ptr c = + MakeTestClosure([&](grpc_error_handle /*error*/) { + if (!state.KeepRunning()) return; + reset_op(); + op.on_complete = c.get(); + s->Op(&op); + }); grpc_core::ExecCtx::Run(DEBUG_LOCATION, c.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); reset_op(); @@ -394,7 +395,7 @@ static void BM_TransportEmptyOp(benchmark::State& state) { gpr_event* stream_cancel_done = new gpr_event; gpr_event_init(stream_cancel_done); std::unique_ptr stream_cancel_closure = - MakeTestClosure([&](grpc_error* error) { + MakeTestClosure([&](grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); gpr_event_set(stream_cancel_done, reinterpret_cast(1)); }); @@ -403,7 +404,8 @@ static void BM_TransportEmptyOp(benchmark::State& state) { f.FlushExecCtx(); gpr_event_wait(stream_cancel_done, gpr_inf_future(GPR_CLOCK_REALTIME)); done_events.emplace_back(stream_cancel_done); - s->DestroyThen(MakeOnceClosure([s](grpc_error* /*error*/) { delete s; })); + s->DestroyThen( + MakeOnceClosure([s](grpc_error_handle /*error*/) { delete s; })); f.FlushExecCtx(); track_counters.Finish(state); } @@ -442,25 +444,26 @@ static void BM_TransportStreamSend(benchmark::State& state) { gpr_event* bm_done = new gpr_event; gpr_event_init(bm_done); - std::unique_ptr c = MakeTestClosure([&](grpc_error* /*error*/) { - if (!state.KeepRunning()) { - gpr_event_set(bm_done, reinterpret_cast(1)); - return; - } - grpc_slice_buffer send_buffer; - grpc_slice_buffer_init(&send_buffer); - grpc_slice_buffer_add(&send_buffer, grpc_slice_ref(send_slice)); - send_stream.Init(&send_buffer, 0); - grpc_slice_buffer_destroy(&send_buffer); - // force outgoing window to be yuge - s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); - f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); - reset_op(); - op.on_complete = c.get(); - op.send_message = true; - op.payload->send_message.send_message.reset(send_stream.get()); - s->Op(&op); - }); + std::unique_ptr c = + MakeTestClosure([&](grpc_error_handle /*error*/) { + if (!state.KeepRunning()) { + gpr_event_set(bm_done, reinterpret_cast(1)); + return; + } + grpc_slice_buffer send_buffer; + grpc_slice_buffer_init(&send_buffer); + grpc_slice_buffer_add(&send_buffer, grpc_slice_ref(send_slice)); + send_stream.Init(&send_buffer, 0); + grpc_slice_buffer_destroy(&send_buffer); + // force outgoing window to be yuge + s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); + f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); + reset_op(); + op.on_complete = c.get(); + op.send_message = true; + op.payload->send_message.send_message.reset(send_stream.get()); + s->Op(&op); + }); reset_op(); op.send_initial_metadata = true; @@ -478,7 +481,7 @@ static void BM_TransportStreamSend(benchmark::State& state) { gpr_event* stream_cancel_done = new gpr_event; gpr_event_init(stream_cancel_done); std::unique_ptr stream_cancel_closure = - MakeTestClosure([&](grpc_error* error) { + MakeTestClosure([&](grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); gpr_event_set(stream_cancel_done, reinterpret_cast(1)); }); @@ -487,7 +490,8 @@ static void BM_TransportStreamSend(benchmark::State& state) { f.FlushExecCtx(); gpr_event_wait(stream_cancel_done, gpr_inf_future(GPR_CLOCK_REALTIME)); done_events.emplace_back(stream_cancel_done); - s->DestroyThen(MakeOnceClosure([s](grpc_error* /*error*/) { delete s; })); + s->DestroyThen( + MakeOnceClosure([s](grpc_error_handle /*error*/) { delete s; })); f.FlushExecCtx(); track_counters.Finish(state); grpc_metadata_batch_destroy(&b); @@ -582,7 +586,7 @@ static void BM_TransportStreamRecv(benchmark::State& state) { } std::unique_ptr do_nothing = - MakeTestClosure([](grpc_error* /*error*/) {}); + MakeTestClosure([](grpc_error_handle /*error*/) {}); uint32_t received; @@ -591,22 +595,23 @@ static void BM_TransportStreamRecv(benchmark::State& state) { std::unique_ptr drain_continue; grpc_slice recv_slice; - std::unique_ptr c = MakeTestClosure([&](grpc_error* /*error*/) { - if (!state.KeepRunning()) return; - // force outgoing window to be yuge - s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); - f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); - received = 0; - reset_op(); - op.on_complete = do_nothing.get(); - op.recv_message = true; - op.payload->recv_message.recv_message = &recv_stream; - op.payload->recv_message.recv_message_ready = drain_start.get(); - s->Op(&op); - f.PushInput(grpc_slice_ref(incoming_data)); - }); + std::unique_ptr c = + MakeTestClosure([&](grpc_error_handle /*error*/) { + if (!state.KeepRunning()) return; + // force outgoing window to be yuge + s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); + f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); + received = 0; + reset_op(); + op.on_complete = do_nothing.get(); + op.recv_message = true; + op.payload->recv_message.recv_message = &recv_stream; + op.payload->recv_message.recv_message_ready = drain_start.get(); + s->Op(&op); + f.PushInput(grpc_slice_ref(incoming_data)); + }); - drain_start = MakeTestClosure([&](grpc_error* /*error*/) { + drain_start = MakeTestClosure([&](grpc_error_handle /*error*/) { if (recv_stream == nullptr) { GPR_ASSERT(!state.KeepRunning()); return; @@ -614,7 +619,7 @@ static void BM_TransportStreamRecv(benchmark::State& state) { grpc_core::Closure::Run(DEBUG_LOCATION, drain.get(), GRPC_ERROR_NONE); }); - drain = MakeTestClosure([&](grpc_error* /*error*/) { + drain = MakeTestClosure([&](grpc_error_handle /*error*/) { do { if (received == recv_stream->length()) { recv_stream.reset(); @@ -628,7 +633,7 @@ static void BM_TransportStreamRecv(benchmark::State& state) { grpc_slice_unref_internal(recv_slice), true)); }); - drain_continue = MakeTestClosure([&](grpc_error* /*error*/) { + drain_continue = MakeTestClosure([&](grpc_error_handle /*error*/) { recv_stream->Pull(&recv_slice); received += GRPC_SLICE_LENGTH(recv_slice); grpc_slice_unref_internal(recv_slice); @@ -664,7 +669,7 @@ static void BM_TransportStreamRecv(benchmark::State& state) { gpr_event* stream_cancel_done = new gpr_event; gpr_event_init(stream_cancel_done); std::unique_ptr stream_cancel_closure = - MakeTestClosure([&](grpc_error* error) { + MakeTestClosure([&](grpc_error_handle error) { GPR_ASSERT(error == GRPC_ERROR_NONE); gpr_event_set(stream_cancel_done, reinterpret_cast(1)); }); @@ -673,7 +678,8 @@ static void BM_TransportStreamRecv(benchmark::State& state) { f.FlushExecCtx(); gpr_event_wait(stream_cancel_done, gpr_inf_future(GPR_CLOCK_REALTIME)); done_events.emplace_back(stream_cancel_done); - s->DestroyThen(MakeOnceClosure([s](grpc_error* /*error*/) { delete s; })); + s->DestroyThen( + MakeOnceClosure([s](grpc_error_handle /*error*/) { delete s; })); grpc_metadata_batch_destroy(&b); grpc_metadata_batch_destroy(&b_recv); f.FlushExecCtx(); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index 440eac02362..e38f95f742d 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -51,7 +51,7 @@ static void BM_WellFlushed(benchmark::State& state) { } BENCHMARK(BM_WellFlushed); -static void DoNothing(void* /*arg*/, grpc_error* /*error*/) {} +static void DoNothing(void* /*arg*/, grpc_error_handle /*error*/) {} static void BM_ClosureInitAgainstExecCtx(benchmark::State& state) { TrackCounters track_counters; @@ -369,7 +369,7 @@ class Rescheduler { benchmark::State& state_; grpc_closure closure_; - static void Step(void* arg, grpc_error* /*error*/) { + static void Step(void* arg, grpc_error_handle /*error*/) { Rescheduler* self = static_cast(arg); if (self->state_.KeepRunning()) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, &self->closure_, GRPC_ERROR_NONE); diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc index f0082491be3..d57a021cee7 100644 --- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc @@ -56,8 +56,8 @@ static void pollset_init(grpc_pollset* ps, gpr_mu** mu) { static void pollset_destroy(grpc_pollset* ps) { gpr_mu_destroy(&ps->mu); } -static grpc_error* pollset_kick(grpc_pollset* /*p*/, - grpc_pollset_worker* /*worker*/) { +static grpc_error_handle pollset_kick(grpc_pollset* /*p*/, + grpc_pollset_worker* /*worker*/) { return GRPC_ERROR_NONE; } @@ -68,9 +68,9 @@ static void cq_done_cb(void* /*done_arg*/, grpc_cq_completion* cq_completion) { /* Queues a completion tag if deadline is > 0. * Does nothing if deadline is 0 (i.e gpr_time_0(GPR_CLOCK_MONOTONIC)) */ -static grpc_error* pollset_work(grpc_pollset* ps, - grpc_pollset_worker** /*worker*/, - grpc_millis deadline) { +static grpc_error_handle pollset_work(grpc_pollset* ps, + grpc_pollset_worker** /*worker*/, + grpc_millis deadline) { if (deadline == 0) { gpr_log(GPR_DEBUG, "no-op"); return GRPC_ERROR_NONE; @@ -98,8 +98,10 @@ static const grpc_event_engine_vtable* init_engine_vtable(bool) { g_vtable.pollset_work = pollset_work; g_vtable.pollset_kick = pollset_kick; g_vtable.is_any_background_poller_thread = [] { return false; }; - g_vtable.add_closure_to_background_poller = - [](grpc_closure* /*closure*/, grpc_error* /*error*/) { return false; }; + g_vtable.add_closure_to_background_poller = [](grpc_closure* /*closure*/, + grpc_error_handle /*error*/) { + return false; + }; g_vtable.shutdown_background_closure = [] {}; g_vtable.shutdown_engine = [] {}; diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index ce42f334ff1..ecc39accfad 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -30,7 +30,7 @@ class ErrorDeleter { public: - void operator()(grpc_error* error) { GRPC_ERROR_UNREF(error); } + void operator()(grpc_error_handle error) { GRPC_ERROR_UNREF(error); } }; typedef std::unique_ptr ErrorPtr; @@ -78,7 +78,7 @@ BENCHMARK(BM_ErrorCreateAndSetIntAndStr); static void BM_ErrorCreateAndSetIntLoop(benchmark::State& state) { TrackCounters track_counters; - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); int n = 0; for (auto _ : state) { error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, n++); @@ -90,7 +90,7 @@ BENCHMARK(BM_ErrorCreateAndSetIntLoop); static void BM_ErrorCreateAndSetStrLoop(benchmark::State& state) { TrackCounters track_counters; - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); const char* str = "hello"; for (auto _ : state) { error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, @@ -103,7 +103,7 @@ BENCHMARK(BM_ErrorCreateAndSetStrLoop); static void BM_ErrorRefUnref(benchmark::State& state) { TrackCounters track_counters; - grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); + grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"); for (auto _ : state) { GRPC_ERROR_UNREF(GRPC_ERROR_REF(error)); } @@ -158,7 +158,7 @@ BENCHMARK(BM_ErrorGetPresentInt); class ErrorNone { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return GRPC_ERROR_NONE; } + grpc_error_handle error() const { return GRPC_ERROR_NONE; } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; @@ -167,7 +167,7 @@ class ErrorNone { class ErrorCancelled { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return GRPC_ERROR_CANCELLED; } + grpc_error_handle error() const { return GRPC_ERROR_CANCELLED; } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; @@ -176,7 +176,7 @@ class ErrorCancelled { class SimpleError { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return error_.get(); } + grpc_error_handle error() const { return error_.get(); } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; @@ -186,7 +186,7 @@ class SimpleError { class ErrorWithGrpcStatus { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return error_.get(); } + grpc_error_handle error() const { return error_.get(); } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; @@ -198,7 +198,7 @@ class ErrorWithGrpcStatus { class ErrorWithHttpError { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return error_.get(); } + grpc_error_handle error() const { return error_.get(); } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; @@ -210,14 +210,14 @@ class ErrorWithHttpError { class ErrorWithNestedGrpcStatus { public: grpc_millis deadline() const { return deadline_; } - grpc_error* error() const { return error_.get(); } + grpc_error_handle error() const { return error_.get(); } private: const grpc_millis deadline_ = GRPC_MILLIS_INF_FUTURE; ErrorPtr nested_error_{grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNIMPLEMENTED)}; - grpc_error* nested_errors_[1] = {nested_error_.get()}; + grpc_error_handle nested_errors_[1] = {nested_error_.get()}; ErrorPtr error_{GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Error", nested_errors_, 1)}; }; diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index 928b5877920..ee813aa3970 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -41,7 +41,7 @@ #include #endif -static void shutdown_ps(void* ps, grpc_error* /*error*/) { +static void shutdown_ps(void* ps, grpc_error_handle /*error*/) { grpc_pollset_destroy(static_cast(ps)); } @@ -167,7 +167,7 @@ template TestClosure* MakeTestClosure(F f) { struct C : public TestClosure { explicit C(F f) : f_(f) { GRPC_CLOSURE_INIT(this, C::cbfn, this, nullptr); } - static void cbfn(void* arg, grpc_error* /*error*/) { + static void cbfn(void* arg, grpc_error_handle /*error*/) { C* p = static_cast(arg); p->f_(); } diff --git a/test/cpp/microbenchmarks/bm_timer.cc b/test/cpp/microbenchmarks/bm_timer.cc index 3b0e0e250e4..60bf65da661 100644 --- a/test/cpp/microbenchmarks/bm_timer.cc +++ b/test/cpp/microbenchmarks/bm_timer.cc @@ -47,8 +47,9 @@ static void BM_InitCancelTimer(benchmark::State& state) { for (auto _ : state) { TimerClosure* timer_closure = &timer_closures[i++ % kTimerCount]; GRPC_CLOSURE_INIT( - &timer_closure->closure, [](void* /*args*/, grpc_error* /*err*/) {}, - nullptr, grpc_schedule_on_exec_ctx); + &timer_closure->closure, + [](void* /*args*/, grpc_error_handle /*err*/) {}, nullptr, + grpc_schedule_on_exec_ctx); grpc_timer_init(&timer_closure->timer, GRPC_MILLIS_INF_FUTURE, &timer_closure->closure); grpc_timer_cancel(&timer_closure->timer); @@ -76,8 +77,9 @@ static void BM_TimerBatch(benchmark::State& state) { for (grpc_millis deadline = start; deadline != end; deadline += increment) { TimerClosure* timer_closure = &timer_closures[deadline % kTimerCount]; GRPC_CLOSURE_INIT( - &timer_closure->closure, [](void* /*args*/, grpc_error* /*err*/) {}, - nullptr, grpc_schedule_on_exec_ctx); + &timer_closure->closure, + [](void* /*args*/, grpc_error_handle /*err*/) {}, nullptr, + grpc_schedule_on_exec_ctx); grpc_timer_init(&timer_closure->timer, deadline, &timer_closure->closure); } diff --git a/test/cpp/naming/cancel_ares_query_test.cc b/test/cpp/naming/cancel_ares_query_test.cc index 371e3e5eb4e..239d7d4429e 100644 --- a/test/cpp/naming/cancel_ares_query_test.cc +++ b/test/cpp/naming/cancel_ares_query_test.cc @@ -96,7 +96,7 @@ void ArgsInit(ArgsStruct* args) { args->channel_args = nullptr; } -void DoNothing(void* /*arg*/, grpc_error* /*error*/) {} +void DoNothing(void* /*arg*/, grpc_error_handle /*error*/) {} void ArgsFinish(ArgsStruct* args) { grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); @@ -146,7 +146,7 @@ class AssertFailureResultHandler : public grpc_core::Resolver::ResultHandler { GPR_ASSERT(false); } - void ReturnError(grpc_error* /*error*/) override { GPR_ASSERT(false); } + void ReturnError(grpc_error_handle /*error*/) override { GPR_ASSERT(false); } private: ArgsStruct* args_; diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 1fdc38d7a28..9f03222bd7f 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -210,7 +210,7 @@ void ArgsInit(ArgsStruct* args) { args->channel_args = nullptr; } -void DoNothing(void* /*arg*/, grpc_error* /*error*/) {} +void DoNothing(void* /*arg*/, grpc_error_handle /*error*/) {} void ArgsFinish(ArgsStruct* args) { GPR_ASSERT(gpr_event_wait(&args->ev, TestDeadline())); @@ -260,7 +260,7 @@ void PollPollsetUntilRequestDone(ArgsStruct* args) { } void CheckServiceConfigResultLocked(const char* service_config_json, - grpc_error* service_config_error, + grpc_error_handle service_config_error, ArgsStruct* args) { if (!args->expected_service_config_string.empty()) { GPR_ASSERT(service_config_json != nullptr); @@ -435,7 +435,7 @@ class ResultHandler : public grpc_core::Resolver::ResultHandler { gpr_mu_unlock(args_->mu); } - void ReturnError(grpc_error* error) override { + void ReturnError(grpc_error_handle error) override { gpr_log(GPR_ERROR, "resolver returned error: %s", grpc_error_string(error)); GPR_ASSERT(false); } diff --git a/test/cpp/util/channel_trace_proto_helper.cc b/test/cpp/util/channel_trace_proto_helper.cc index 88fb7e423dc..88b3bd15125 100644 --- a/test/cpp/util/channel_trace_proto_helper.cc +++ b/test/cpp/util/channel_trace_proto_helper.cc @@ -58,7 +58,7 @@ void VaidateProtoJsonTranslation(const std::string& json_str) { EXPECT_TRUE(s.ok()); // Parse JSON and re-dump to string, to make sure formatting is the // same as what would be generated by our JSON library. - grpc_error* error = GRPC_ERROR_NONE; + grpc_error_handle error = GRPC_ERROR_NONE; grpc_core::Json parsed_json = grpc_core::Json::Parse(proto_json_str.c_str(), &error); ASSERT_EQ(error, GRPC_ERROR_NONE) << grpc_error_string(error);