grpc 1.47.0 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -23,7 +23,6 @@
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
25
|
#include <algorithm>
|
26
|
-
#include <new>
|
27
26
|
#include <utility>
|
28
27
|
|
29
28
|
#include "absl/strings/cord.h"
|
@@ -40,6 +39,9 @@
|
|
40
39
|
|
41
40
|
#include <grpc/support/log.h>
|
42
41
|
|
42
|
+
#include "src/core/lib/slice/percent_encoding.h"
|
43
|
+
#include "src/core/lib/slice/slice.h"
|
44
|
+
|
43
45
|
namespace grpc_core {
|
44
46
|
|
45
47
|
namespace {
|
@@ -224,23 +226,10 @@ absl::optional<std::string> StatusGetStr(const absl::Status& status,
|
|
224
226
|
|
225
227
|
void StatusSetTime(absl::Status* status, StatusTimeProperty key,
|
226
228
|
absl::Time time) {
|
227
|
-
|
228
|
-
|
229
|
-
// from being is_trivially_copyable but it's still safe to be
|
230
|
-
// memcopied.
|
231
|
-
#elif defined(__GNUG__) && __GNUC__ < 5
|
232
|
-
// GCC versions < 5 do not support std::is_trivially_copyable
|
233
|
-
#else
|
234
|
-
static_assert(std::is_trivially_copyable<absl::Time>::value,
|
235
|
-
"absl::Time needs to be able to be memcopied");
|
236
|
-
#endif
|
237
|
-
// This is required not to get uninitialized padding of absl::Time.
|
238
|
-
alignas(absl::Time) char buf[sizeof(time)] = {
|
239
|
-
0,
|
240
|
-
};
|
241
|
-
new (buf) absl::Time(time);
|
229
|
+
std::string time_str =
|
230
|
+
absl::FormatTime(absl::RFC3339_full, time, absl::UTCTimeZone());
|
242
231
|
status->SetPayload(GetStatusTimePropertyUrl(key),
|
243
|
-
absl::Cord(
|
232
|
+
absl::Cord(std::move(time_str)));
|
244
233
|
}
|
245
234
|
|
246
235
|
absl::optional<absl::Time> StatusGetTime(const absl::Status& status,
|
@@ -249,14 +238,16 @@ absl::optional<absl::Time> StatusGetTime(const absl::Status& status,
|
|
249
238
|
status.GetPayload(GetStatusTimePropertyUrl(key));
|
250
239
|
if (p.has_value()) {
|
251
240
|
absl::optional<absl::string_view> sv = p->TryFlat();
|
241
|
+
absl::Time time;
|
252
242
|
if (sv.has_value()) {
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
return *reinterpret_cast<const absl::Time*>(buf);
|
243
|
+
if (absl::ParseTime(absl::RFC3339_full, sv.value(), &time, nullptr)) {
|
244
|
+
return time;
|
245
|
+
}
|
257
246
|
} else {
|
258
247
|
std::string s = std::string(*p);
|
259
|
-
|
248
|
+
if (absl::ParseTime(absl::RFC3339_full, s, &time, nullptr)) {
|
249
|
+
return time;
|
250
|
+
}
|
260
251
|
}
|
261
252
|
}
|
262
253
|
return {};
|
@@ -324,9 +315,14 @@ std::string StatusToString(const absl::Status& status) {
|
|
324
315
|
absl::CHexEscape(payload_view), "\""));
|
325
316
|
} else if (absl::StartsWith(type_url, kTypeTimeTag)) {
|
326
317
|
type_url.remove_prefix(kTypeTimeTag.size());
|
327
|
-
absl::Time t
|
328
|
-
|
329
|
-
|
318
|
+
absl::Time t;
|
319
|
+
if (absl::ParseTime(absl::RFC3339_full, payload_view, &t, nullptr)) {
|
320
|
+
kvs.push_back(
|
321
|
+
absl::StrCat(type_url, ":\"", absl::FormatTime(t), "\""));
|
322
|
+
} else {
|
323
|
+
kvs.push_back(absl::StrCat(type_url, ":\"",
|
324
|
+
absl::CHexEscape(payload_view), "\""));
|
325
|
+
}
|
330
326
|
} else {
|
331
327
|
kvs.push_back(absl::StrCat(type_url, ":\"",
|
332
328
|
absl::CHexEscape(payload_view), "\""));
|
@@ -357,9 +353,21 @@ namespace internal {
|
|
357
353
|
google_rpc_Status* StatusToProto(const absl::Status& status, upb_Arena* arena) {
|
358
354
|
google_rpc_Status* msg = google_rpc_Status_new(arena);
|
359
355
|
google_rpc_Status_set_code(msg, int32_t(status.code()));
|
356
|
+
// Protobuf string field requires to be utf-8 encoding but C++ string doesn't
|
357
|
+
// this requirement so it can be a non utf-8 string. So it should be converted
|
358
|
+
// to a percent-encoded string to keep it as a utf-8 string.
|
359
|
+
Slice message_percent_slice =
|
360
|
+
PercentEncodeSlice(Slice::FromExternalString(status.message()),
|
361
|
+
PercentEncodingType::Compatible);
|
362
|
+
char* message_percent = reinterpret_cast<char*>(
|
363
|
+
upb_Arena_Malloc(arena, message_percent_slice.length()));
|
364
|
+
if (message_percent_slice.length() > 0) {
|
365
|
+
memcpy(message_percent, message_percent_slice.data(),
|
366
|
+
message_percent_slice.length());
|
367
|
+
}
|
360
368
|
google_rpc_Status_set_message(
|
361
|
-
msg, upb_StringView_FromDataAndSize(
|
362
|
-
|
369
|
+
msg, upb_StringView_FromDataAndSize(message_percent,
|
370
|
+
message_percent_slice.length()));
|
363
371
|
status.ForEachPayload([&](absl::string_view type_url,
|
364
372
|
const absl::Cord& payload) {
|
365
373
|
google_protobuf_Any* any = google_rpc_Status_add_details(msg, arena);
|
@@ -389,9 +397,15 @@ google_rpc_Status* StatusToProto(const absl::Status& status, upb_Arena* arena) {
|
|
389
397
|
|
390
398
|
absl::Status StatusFromProto(google_rpc_Status* msg) {
|
391
399
|
int32_t code = google_rpc_Status_code(msg);
|
392
|
-
upb_StringView
|
393
|
-
|
394
|
-
|
400
|
+
upb_StringView message_percent_upb = google_rpc_Status_message(msg);
|
401
|
+
Slice message_percent_slice = Slice::FromExternalString(
|
402
|
+
absl::string_view(message_percent_upb.data, message_percent_upb.size));
|
403
|
+
Slice message_slice =
|
404
|
+
PermissivePercentDecodeSlice(std::move(message_percent_slice));
|
405
|
+
absl::Status status(
|
406
|
+
static_cast<absl::StatusCode>(code),
|
407
|
+
absl::string_view(reinterpret_cast<const char*>(message_slice.data()),
|
408
|
+
message_slice.size()));
|
395
409
|
size_t detail_len;
|
396
410
|
const google_protobuf_Any* const* details =
|
397
411
|
google_rpc_Status_details(msg, &detail_len);
|
data/src/core/lib/gprpp/time.cc
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
#include "src/core/lib/gprpp/time.h"
|
18
18
|
|
19
19
|
#include <atomic>
|
20
|
+
#include <chrono>
|
20
21
|
#include <cstdint>
|
21
22
|
#include <limits>
|
22
23
|
#include <string>
|
@@ -190,6 +191,13 @@ std::string Duration::ToJsonString() const {
|
|
190
191
|
return absl::StrFormat("%d.%09ds", ts.tv_sec, ts.tv_nsec);
|
191
192
|
}
|
192
193
|
|
194
|
+
Duration::operator grpc_event_engine::experimental::EventEngine::Duration()
|
195
|
+
const {
|
196
|
+
return std::chrono::milliseconds(
|
197
|
+
Clamp(millis_, std::numeric_limits<int64_t>::min() / GPR_NS_PER_MS,
|
198
|
+
std::numeric_limits<int64_t>::max() / GPR_NS_PER_MS));
|
199
|
+
}
|
200
|
+
|
193
201
|
void TestOnlySetProcessEpoch(gpr_timespec epoch) {
|
194
202
|
g_process_epoch_seconds.store(
|
195
203
|
gpr_convert_clock_type(epoch, GPR_CLOCK_MONOTONIC).tv_sec);
|
data/src/core/lib/gprpp/time.h
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <ostream>
|
24
24
|
#include <string>
|
25
25
|
|
26
|
+
#include <grpc/event_engine/event_engine.h>
|
26
27
|
#include <grpc/impl/codegen/gpr_types.h>
|
27
28
|
#include <grpc/support/time.h>
|
28
29
|
|
@@ -207,6 +208,9 @@ class Duration {
|
|
207
208
|
constexpr int64_t millis() const { return millis_; }
|
208
209
|
double seconds() const { return static_cast<double>(millis_) / 1000.0; }
|
209
210
|
|
211
|
+
// NOLINTNEXTLINE: google-explicit-constructor
|
212
|
+
operator grpc_event_engine::experimental::EventEngine::Duration() const;
|
213
|
+
|
210
214
|
gpr_timespec as_timespec() const;
|
211
215
|
|
212
216
|
std::string ToString() const;
|
@@ -20,20 +20,21 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/http/format_request.h"
|
22
22
|
|
23
|
-
#include <stdarg.h>
|
24
23
|
#include <stdio.h>
|
25
24
|
#include <string.h>
|
26
25
|
|
26
|
+
#include <algorithm>
|
27
|
+
#include <string>
|
27
28
|
#include <vector>
|
28
29
|
|
30
|
+
#include "absl/strings/str_cat.h"
|
29
31
|
#include "absl/strings/str_format.h"
|
30
32
|
#include "absl/strings/str_join.h"
|
33
|
+
#include "absl/strings/string_view.h"
|
31
34
|
|
32
35
|
#include <grpc/slice.h>
|
33
|
-
#include <grpc/support/alloc.h>
|
34
|
-
#include <grpc/support/string_util.h>
|
35
36
|
|
36
|
-
#include "src/core/lib/
|
37
|
+
#include "src/core/lib/http/httpcli.h"
|
37
38
|
|
38
39
|
static void fill_common_header(const grpc_http_request* request,
|
39
40
|
const char* host, const char* path,
|
@@ -21,32 +21,38 @@
|
|
21
21
|
#include "src/core/lib/http/httpcli.h"
|
22
22
|
|
23
23
|
#include <limits.h>
|
24
|
-
#include <string.h>
|
25
24
|
|
26
25
|
#include <string>
|
26
|
+
#include <utility>
|
27
27
|
|
28
|
+
#include "absl/container/inlined_vector.h"
|
28
29
|
#include "absl/functional/bind_front.h"
|
30
|
+
#include "absl/status/status.h"
|
29
31
|
#include "absl/strings/str_format.h"
|
30
|
-
#include "absl/strings/string_view.h"
|
31
32
|
|
32
33
|
#include <grpc/grpc.h>
|
34
|
+
#include <grpc/grpc_security.h>
|
35
|
+
#include <grpc/slice_buffer.h>
|
33
36
|
#include <grpc/support/alloc.h>
|
34
37
|
#include <grpc/support/log.h>
|
35
|
-
#include <grpc/support/string_util.h>
|
36
38
|
|
37
39
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
38
40
|
#include "src/core/lib/channel/channel_args.h"
|
39
|
-
#include "src/core/lib/
|
40
|
-
#include "src/core/lib/
|
41
|
+
#include "src/core/lib/channel/channel_args_preconditioning.h"
|
42
|
+
#include "src/core/lib/config/core_configuration.h"
|
41
43
|
#include "src/core/lib/http/format_request.h"
|
42
44
|
#include "src/core/lib/http/parser.h"
|
43
45
|
#include "src/core/lib/iomgr/endpoint.h"
|
44
46
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
47
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
45
48
|
#include "src/core/lib/iomgr/resolve_address.h"
|
46
|
-
#include "src/core/lib/iomgr/tcp_client.h"
|
47
49
|
#include "src/core/lib/resource_quota/api.h"
|
50
|
+
#include "src/core/lib/security/credentials/credentials.h"
|
51
|
+
#include "src/core/lib/security/security_connector/security_connector.h"
|
48
52
|
#include "src/core/lib/slice/slice_internal.h"
|
53
|
+
#include "src/core/lib/slice/slice_refcount.h"
|
49
54
|
#include "src/core/lib/transport/error_utils.h"
|
55
|
+
#include "src/core/lib/transport/handshaker_registry.h"
|
50
56
|
#include "src/core/lib/transport/tcp_connect_handshaker.h"
|
51
57
|
|
52
58
|
namespace grpc_core {
|
@@ -234,7 +240,7 @@ void HttpRequest::Orphan() {
|
|
234
240
|
}
|
235
241
|
|
236
242
|
void HttpRequest::AppendError(grpc_error_handle error) {
|
237
|
-
if (overall_error_
|
243
|
+
if (GRPC_ERROR_IS_NONE(overall_error_)) {
|
238
244
|
overall_error_ =
|
239
245
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
|
240
246
|
}
|
@@ -253,7 +259,7 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
|
|
253
259
|
have_read_byte_ = 1;
|
254
260
|
grpc_error_handle err =
|
255
261
|
grpc_http_parser_parse(&parser_, incoming_.slices[i], nullptr);
|
256
|
-
if (err
|
262
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
257
263
|
Finish(err);
|
258
264
|
return;
|
259
265
|
}
|
@@ -262,7 +268,7 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
|
|
262
268
|
if (cancelled_) {
|
263
269
|
Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
264
270
|
"HTTP1 request cancelled during read", &overall_error_, 1));
|
265
|
-
} else if (error
|
271
|
+
} else if (GRPC_ERROR_IS_NONE(error)) {
|
266
272
|
DoRead();
|
267
273
|
} else if (!have_read_byte_) {
|
268
274
|
NextAddress(GRPC_ERROR_REF(error));
|
@@ -275,7 +281,7 @@ void HttpRequest::ContinueDoneWriteAfterScheduleOnExecCtx(
|
|
275
281
|
void* arg, grpc_error_handle error) {
|
276
282
|
RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
|
277
283
|
MutexLock lock(&req->mu_);
|
278
|
-
if (error
|
284
|
+
if (GRPC_ERROR_IS_NONE(error) && !req->cancelled_) {
|
279
285
|
req->OnWritten();
|
280
286
|
} else {
|
281
287
|
req->NextAddress(GRPC_ERROR_REF(error));
|
@@ -300,7 +306,7 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
|
|
300
306
|
}
|
301
307
|
MutexLock lock(&req->mu_);
|
302
308
|
req->own_endpoint_ = true;
|
303
|
-
if (error
|
309
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
304
310
|
req->handshake_mgr_.reset();
|
305
311
|
req->NextAddress(GRPC_ERROR_REF(error));
|
306
312
|
return;
|
@@ -364,7 +370,7 @@ void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
|
|
364
370
|
}
|
365
371
|
|
366
372
|
void HttpRequest::NextAddress(grpc_error_handle error) {
|
367
|
-
if (error
|
373
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
368
374
|
AppendError(error);
|
369
375
|
}
|
370
376
|
if (cancelled_) {
|
data/src/core/lib/http/httpcli.h
CHANGED
@@ -23,17 +23,33 @@
|
|
23
23
|
|
24
24
|
#include <stddef.h>
|
25
25
|
|
26
|
-
#include <
|
26
|
+
#include <functional>
|
27
|
+
#include <vector>
|
27
28
|
|
29
|
+
#include "absl/base/thread_annotations.h"
|
30
|
+
#include "absl/status/statusor.h"
|
31
|
+
#include "absl/types/optional.h"
|
32
|
+
|
33
|
+
#include <grpc/grpc.h>
|
34
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
35
|
+
#include <grpc/slice.h>
|
36
|
+
|
37
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
28
38
|
#include "src/core/lib/gprpp/orphanable.h"
|
39
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
40
|
+
#include "src/core/lib/gprpp/sync.h"
|
41
|
+
#include "src/core/lib/gprpp/time.h"
|
29
42
|
#include "src/core/lib/http/parser.h"
|
43
|
+
#include "src/core/lib/iomgr/closure.h"
|
30
44
|
#include "src/core/lib/iomgr/endpoint.h"
|
45
|
+
#include "src/core/lib/iomgr/error.h"
|
46
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
47
|
+
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
31
48
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
32
49
|
#include "src/core/lib/iomgr/polling_entity.h"
|
33
|
-
#include "src/core/lib/iomgr/pollset_set.h"
|
34
50
|
#include "src/core/lib/iomgr/resolve_address.h"
|
51
|
+
#include "src/core/lib/iomgr/resolved_address.h"
|
35
52
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
36
|
-
#include "src/core/lib/security/credentials/credentials.h"
|
37
53
|
#include "src/core/lib/transport/handshaker.h"
|
38
54
|
#include "src/core/lib/uri/uri_parser.h"
|
39
55
|
|
@@ -20,24 +20,36 @@
|
|
20
20
|
|
21
21
|
#include <string.h>
|
22
22
|
|
23
|
+
#include "absl/status/status.h"
|
23
24
|
#include "absl/strings/str_cat.h"
|
24
25
|
#include "absl/strings/string_view.h"
|
25
26
|
|
27
|
+
#include <grpc/grpc.h>
|
28
|
+
#include <grpc/grpc_security.h>
|
29
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
26
30
|
#include <grpc/support/alloc.h>
|
27
31
|
#include <grpc/support/log.h>
|
28
32
|
#include <grpc/support/string_util.h>
|
29
33
|
|
30
34
|
#include "src/core/lib/channel/channel_args.h"
|
31
|
-
#include "src/core/lib/
|
32
|
-
#include "src/core/lib/gpr/string.h"
|
35
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
33
36
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
|
-
#include "src/core/lib/
|
37
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
38
|
+
#include "src/core/lib/iomgr/closure.h"
|
39
|
+
#include "src/core/lib/iomgr/endpoint.h"
|
40
|
+
#include "src/core/lib/iomgr/error.h"
|
41
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
42
|
+
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
43
|
+
#include "src/core/lib/promise/arena_promise.h"
|
44
|
+
#include "src/core/lib/promise/poll.h"
|
35
45
|
#include "src/core/lib/promise/promise.h"
|
36
46
|
#include "src/core/lib/security/credentials/credentials.h"
|
47
|
+
#include "src/core/lib/security/security_connector/security_connector.h"
|
37
48
|
#include "src/core/lib/security/security_connector/ssl_utils.h"
|
38
49
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
39
|
-
#include "src/core/lib/
|
50
|
+
#include "src/core/lib/transport/handshaker.h"
|
40
51
|
#include "src/core/tsi/ssl_transport_security.h"
|
52
|
+
#include "src/core/tsi/transport_security_interface.h"
|
41
53
|
|
42
54
|
namespace grpc_core {
|
43
55
|
|
data/src/core/lib/http/parser.cc
CHANGED
@@ -20,14 +20,13 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/http/parser.h"
|
22
22
|
|
23
|
-
#include <stdbool.h>
|
24
23
|
#include <string.h>
|
25
24
|
|
25
|
+
#include <algorithm>
|
26
|
+
|
26
27
|
#include <grpc/support/alloc.h>
|
27
28
|
#include <grpc/support/log.h>
|
28
29
|
|
29
|
-
#include "src/core/lib/gpr/useful.h"
|
30
|
-
|
31
30
|
grpc_core::TraceFlag grpc_http1_trace(false, "http1");
|
32
31
|
|
33
32
|
static char* buf2str(void* buffer, size_t length) {
|
@@ -236,7 +235,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
236
235
|
(*hdrs)[(*hdr_count)++] = hdr;
|
237
236
|
|
238
237
|
done:
|
239
|
-
if (error
|
238
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
240
239
|
gpr_free(hdr.key);
|
241
240
|
gpr_free(hdr.value);
|
242
241
|
}
|
@@ -249,7 +248,7 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
249
248
|
switch (parser->state) {
|
250
249
|
case GRPC_HTTP_FIRST_LINE:
|
251
250
|
err = handle_first_line(parser);
|
252
|
-
if (err
|
251
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
253
252
|
parser->state = GRPC_HTTP_HEADERS;
|
254
253
|
break;
|
255
254
|
case GRPC_HTTP_HEADERS:
|
@@ -264,7 +263,7 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
264
263
|
break;
|
265
264
|
} else {
|
266
265
|
err = add_header(parser);
|
267
|
-
if (err
|
266
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
268
267
|
return err;
|
269
268
|
}
|
270
269
|
}
|
@@ -449,7 +448,7 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
|
|
449
448
|
bool found_body_start = false;
|
450
449
|
grpc_error_handle err =
|
451
450
|
addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start);
|
452
|
-
if (err
|
451
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
453
452
|
if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1;
|
454
453
|
}
|
455
454
|
return GRPC_ERROR_NONE;
|
data/src/core/lib/http/parser.h
CHANGED
@@ -217,7 +217,7 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
|
|
217
217
|
grpc_error_handle original_error = DecodeCancelStateError(original_state);
|
218
218
|
// If error is set, invoke the cancellation closure immediately.
|
219
219
|
// Otherwise, store the new closure.
|
220
|
-
if (original_error
|
220
|
+
if (!GRPC_ERROR_IS_NONE(original_error)) {
|
221
221
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
|
222
222
|
gpr_log(GPR_INFO,
|
223
223
|
"call_combiner=%p: scheduling notify_on_cancel callback=%p "
|
@@ -263,7 +263,7 @@ void CallCombiner::Cancel(grpc_error_handle error) {
|
|
263
263
|
while (true) {
|
264
264
|
gpr_atm original_state = gpr_atm_acq_load(&cancel_state_);
|
265
265
|
grpc_error_handle original_error = DecodeCancelStateError(original_state);
|
266
|
-
if (original_error
|
266
|
+
if (!GRPC_ERROR_IS_NONE(original_error)) {
|
267
267
|
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
268
268
|
internal::StatusFreeHeapPtr(status_ptr);
|
269
269
|
#else
|
@@ -56,7 +56,7 @@ struct grpc_endpoint_vtable {
|
|
56
56
|
Callback success indicates that the endpoint can accept more reads, failure
|
57
57
|
indicates the endpoint is closed.
|
58
58
|
Valid slices may be placed into \a slices even when the callback is
|
59
|
-
invoked with error
|
59
|
+
invoked with !GRPC_ERROR_IS_NONE(error). */
|
60
60
|
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
61
61
|
grpc_closure* cb, bool urgent, int min_progress_size);
|
62
62
|
|
@@ -147,7 +147,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
|
|
147
147
|
static void ReadAction(void* arg, grpc_error_handle error) {
|
148
148
|
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
|
149
149
|
GPR_ASSERT(ep->read_cb != nullptr);
|
150
|
-
if (error
|
150
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
151
151
|
grpc_slice_buffer_reset_and_unref_internal(ep->read_slices);
|
152
152
|
CallReadCb(ep, GRPC_ERROR_REF(error));
|
153
153
|
EP_UNREF(ep, "read");
|
@@ -189,7 +189,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
|
|
189
189
|
static void WriteAction(void* arg, grpc_error_handle error) {
|
190
190
|
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
|
191
191
|
GPR_ASSERT(ep->write_cb != nullptr);
|
192
|
-
if (error
|
192
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
193
193
|
grpc_slice_buffer_reset_and_unref_internal(ep->write_slices);
|
194
194
|
CallWriteCb(ep, GRPC_ERROR_REF(error));
|
195
195
|
EP_UNREF(ep, "write");
|
data/src/core/lib/iomgr/error.cc
CHANGED
@@ -71,7 +71,7 @@ std::string grpc_error_std_string(absl::Status error) {
|
|
71
71
|
absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
|
72
72
|
const char* call_name) {
|
73
73
|
absl::Status s =
|
74
|
-
StatusCreate(absl::StatusCode::kUnknown,
|
74
|
+
StatusCreate(absl::StatusCode::kUnknown, strerror(err), location, {});
|
75
75
|
grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::kErrorNo, err);
|
76
76
|
grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
|
77
77
|
strerror(err));
|
@@ -87,6 +87,8 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
|
|
87
87
|
absl::Status s =
|
88
88
|
StatusCreate(absl::StatusCode::kUnavailable, "WSA Error", location, {});
|
89
89
|
StatusSetInt(&s, grpc_core::StatusIntProperty::kWsaError, err);
|
90
|
+
StatusSetInt(&s, grpc_core::StatusIntProperty::kRpcStatus,
|
91
|
+
GRPC_STATUS_UNAVAILABLE);
|
90
92
|
StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError, utf8_message);
|
91
93
|
StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall, call_name);
|
92
94
|
return s;
|
@@ -95,7 +97,7 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
|
|
95
97
|
|
96
98
|
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
|
97
99
|
grpc_error_ints which, intptr_t value) {
|
98
|
-
if (src
|
100
|
+
if (GRPC_ERROR_IS_NONE(src)) {
|
99
101
|
src = absl::UnknownError("");
|
100
102
|
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
|
101
103
|
GRPC_STATUS_OK);
|
@@ -136,7 +138,7 @@ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
|
|
136
138
|
grpc_error_handle grpc_error_set_str(grpc_error_handle src,
|
137
139
|
grpc_error_strs which,
|
138
140
|
absl::string_view str) {
|
139
|
-
if (src
|
141
|
+
if (GRPC_ERROR_IS_NONE(src)) {
|
140
142
|
src = absl::UnknownError("");
|
141
143
|
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
|
142
144
|
GRPC_STATUS_OK);
|
@@ -211,7 +213,7 @@ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
|
|
211
213
|
|
212
214
|
bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
|
213
215
|
int line) {
|
214
|
-
GPR_DEBUG_ASSERT(error
|
216
|
+
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
215
217
|
gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what,
|
216
218
|
grpc_core::StatusToString(error).c_str());
|
217
219
|
return false;
|
@@ -562,7 +564,7 @@ static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
|
|
562
564
|
grpc_error_handle out;
|
563
565
|
if (grpc_error_is_special(in)) {
|
564
566
|
out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
|
565
|
-
if (in
|
567
|
+
if (GRPC_ERROR_IS_NONE(in)) {
|
566
568
|
internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
|
567
569
|
grpc_slice_from_static_string("no error"));
|
568
570
|
internal_set_int(&out, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK);
|
@@ -675,8 +677,8 @@ bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
|
|
675
677
|
|
676
678
|
grpc_error_handle grpc_error_add_child(grpc_error_handle src,
|
677
679
|
grpc_error_handle child) {
|
678
|
-
if (src
|
679
|
-
if (child
|
680
|
+
if (!GRPC_ERROR_IS_NONE(src)) {
|
681
|
+
if (GRPC_ERROR_IS_NONE(child)) {
|
680
682
|
/* \a child is empty. Simply return the ref to \a src */
|
681
683
|
return src;
|
682
684
|
} else if (child != src) {
|
@@ -906,7 +908,7 @@ static char* finish_kvs(kv_pairs* kvs) {
|
|
906
908
|
}
|
907
909
|
|
908
910
|
const char* grpc_error_string(grpc_error_handle err) {
|
909
|
-
if (err
|
911
|
+
if (GRPC_ERROR_IS_NONE(err)) return no_error_string;
|
910
912
|
if (err == GRPC_ERROR_OOM) return oom_error_string;
|
911
913
|
if (err == GRPC_ERROR_CANCELLED) return cancelled_error_string;
|
912
914
|
|
@@ -978,7 +980,7 @@ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
|
|
978
980
|
|
979
981
|
bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
|
980
982
|
int line) {
|
981
|
-
GPR_DEBUG_ASSERT(error
|
983
|
+
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
982
984
|
const char* msg = grpc_error_string(error);
|
983
985
|
gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what, msg);
|
984
986
|
GRPC_ERROR_UNREF(error);
|
data/src/core/lib/iomgr/error.h
CHANGED
@@ -161,6 +161,8 @@ void grpc_enable_error_creation();
|
|
161
161
|
#define GRPC_ERROR_REF(err) (err)
|
162
162
|
#define GRPC_ERROR_UNREF(err) (void)(err)
|
163
163
|
|
164
|
+
#define GRPC_ERROR_IS_NONE(err) (err).ok()
|
165
|
+
|
164
166
|
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
|
165
167
|
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
166
168
|
#define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
|
@@ -208,7 +210,7 @@ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
|
|
208
210
|
const char* call_name) GRPC_MUST_USE_RESULT;
|
209
211
|
|
210
212
|
inline absl::Status grpc_assert_never_ok(absl::Status error) {
|
211
|
-
GPR_ASSERT(error
|
213
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
212
214
|
return error;
|
213
215
|
}
|
214
216
|
|
@@ -236,6 +238,8 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
|
|
236
238
|
#define GRPC_ERROR_CANCELLED ((grpc_error_handle)4)
|
237
239
|
#define GRPC_ERROR_SPECIAL_MAX GRPC_ERROR_CANCELLED
|
238
240
|
|
241
|
+
#define GRPC_ERROR_IS_NONE(err) ((err) == GRPC_ERROR_NONE)
|
242
|
+
|
239
243
|
inline bool grpc_error_is_special(grpc_error_handle err) {
|
240
244
|
return err <= GRPC_ERROR_SPECIAL_MAX;
|
241
245
|
}
|
@@ -340,7 +344,7 @@ grpc_error_handle grpc_os_error(const char* file, int line, int err,
|
|
340
344
|
const char* call_name) GRPC_MUST_USE_RESULT;
|
341
345
|
|
342
346
|
inline grpc_error_handle grpc_assert_never_ok(grpc_error_handle error) {
|
343
|
-
GPR_ASSERT(error
|
347
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
344
348
|
return error;
|
345
349
|
}
|
346
350
|
|
@@ -387,8 +391,8 @@ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
|
|
387
391
|
int line);
|
388
392
|
inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
|
389
393
|
const char* file, int line) {
|
390
|
-
return error
|
391
|
-
|
394
|
+
return GRPC_ERROR_IS_NONE(error) ? true
|
395
|
+
: grpc_log_error(what, error, file, line);
|
392
396
|
}
|
393
397
|
|
394
398
|
#define GRPC_LOG_IF_ERROR(what, error) \
|
@@ -413,7 +417,7 @@ class AtomicError {
|
|
413
417
|
/// returns get() == GRPC_ERROR_NONE
|
414
418
|
bool ok() {
|
415
419
|
gpr_spinlock_lock(&lock_);
|
416
|
-
bool ret = error_
|
420
|
+
bool ret = GRPC_ERROR_IS_NONE(error_);
|
417
421
|
gpr_spinlock_unlock(&lock_);
|
418
422
|
return ret;
|
419
423
|
}
|