grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux
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 +49 -97
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +45 -10
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +8 -4
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +6 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +29 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +3 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +41 -26
- data/src/core/lib/surface/call.h +16 -2
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +69 -56
- data/src/core/lib/surface/server.h +39 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +4 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- metadata +36 -29
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -378,7 +378,7 @@ struct grpc_tcp {
|
|
378
378
|
/* garbage after the last read */
|
379
379
|
grpc_slice_buffer last_read_buffer;
|
380
380
|
|
381
|
-
|
381
|
+
grpc_core::Mutex read_mu;
|
382
382
|
grpc_slice_buffer* incoming_buffer ABSL_GUARDED_BY(read_mu) = nullptr;
|
383
383
|
int inq; /* bytes pending on the socket from the last read. */
|
384
384
|
bool inq_capable; /* cache whether kernel supports inq */
|
@@ -426,9 +426,6 @@ struct grpc_tcp {
|
|
426
426
|
on errors anymore */
|
427
427
|
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
428
428
|
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
429
|
-
|
430
|
-
bool curr_read_completed;
|
431
|
-
int curr_min_read_chunk_size;
|
432
429
|
};
|
433
430
|
|
434
431
|
struct backup_poller {
|
@@ -779,12 +776,10 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
779
776
|
/* NB: After calling call_read_cb a parallel call of the read handler may
|
780
777
|
* be running. */
|
781
778
|
if (errno == EAGAIN) {
|
782
|
-
tcp->curr_read_completed = true;
|
783
779
|
finish_estimate(tcp);
|
784
780
|
tcp->inq = 0;
|
785
781
|
return false;
|
786
782
|
} else {
|
787
|
-
tcp->curr_read_completed = false;
|
788
783
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
789
784
|
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp);
|
790
785
|
return true;
|
@@ -796,7 +791,6 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
796
791
|
* We may have read something, i.e., total_read_bytes > 0, but
|
797
792
|
* since the connection is closed we will drop the data here, because we
|
798
793
|
* can't call the callback multiple times. */
|
799
|
-
tcp->curr_read_completed = true;
|
800
794
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
801
795
|
*error = tcp_annotate_error(
|
802
796
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp);
|
@@ -853,8 +847,6 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
853
847
|
finish_estimate(tcp);
|
854
848
|
}
|
855
849
|
|
856
|
-
// There may be more data to be read because recvmsg did not return EAGAIN.
|
857
|
-
tcp->curr_read_completed = false;
|
858
850
|
GPR_DEBUG_ASSERT(total_read_bytes > 0);
|
859
851
|
if (total_read_bytes < tcp->incoming_buffer->length) {
|
860
852
|
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
|
@@ -879,21 +871,11 @@ static void maybe_make_read_slices(grpc_tcp* tcp)
|
|
879
871
|
int target_length = static_cast<int>(tcp->target_length);
|
880
872
|
int extra_wanted =
|
881
873
|
target_length - static_cast<int>(tcp->incoming_buffer->length);
|
882
|
-
if (tcp->curr_read_completed) {
|
883
|
-
// Set it to false again to start the next block of reads
|
884
|
-
tcp->curr_read_completed = false;
|
885
|
-
// Reset curr_min_read_chunk_size for the next block of reads
|
886
|
-
tcp->curr_min_read_chunk_size = tcp->min_read_chunk_size;
|
887
|
-
} else {
|
888
|
-
// Last read is not completed yet. Double the last min read chunk size.
|
889
|
-
tcp->curr_min_read_chunk_size =
|
890
|
-
std::min(2 * tcp->curr_min_read_chunk_size, tcp->max_read_chunk_size);
|
891
|
-
}
|
892
874
|
grpc_slice_buffer_add_indexed(
|
893
875
|
tcp->incoming_buffer,
|
894
876
|
tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
895
|
-
tcp->
|
896
|
-
grpc_core::Clamp(extra_wanted, tcp->
|
877
|
+
tcp->min_read_chunk_size,
|
878
|
+
grpc_core::Clamp(extra_wanted, tcp->min_read_chunk_size,
|
897
879
|
tcp->max_read_chunk_size))));
|
898
880
|
maybe_post_reclaimer(tcp);
|
899
881
|
}
|
@@ -930,7 +912,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
930
912
|
}
|
931
913
|
|
932
914
|
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
933
|
-
grpc_closure* cb, bool urgent) {
|
915
|
+
grpc_closure* cb, bool urgent, int /*min_progress_size*/) {
|
934
916
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
935
917
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
936
918
|
tcp->read_cb = cb;
|
@@ -1593,7 +1575,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1593
1575
|
}
|
1594
1576
|
|
1595
1577
|
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
1596
|
-
grpc_closure* cb, void* arg) {
|
1578
|
+
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
1597
1579
|
GPR_TIMER_SCOPE("tcp_write", 0);
|
1598
1580
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1599
1581
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
@@ -1785,12 +1767,14 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1785
1767
|
grpc_resolved_address resolved_local_addr;
|
1786
1768
|
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
1787
1769
|
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
1770
|
+
absl::StatusOr<std::string> addr_uri;
|
1788
1771
|
if (getsockname(tcp->fd,
|
1789
1772
|
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
1790
|
-
&resolved_local_addr.len) < 0
|
1773
|
+
&resolved_local_addr.len) < 0 ||
|
1774
|
+
!(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
|
1791
1775
|
tcp->local_address = "";
|
1792
1776
|
} else {
|
1793
|
-
tcp->local_address =
|
1777
|
+
tcp->local_address = addr_uri.value();
|
1794
1778
|
}
|
1795
1779
|
tcp->read_cb = nullptr;
|
1796
1780
|
tcp->write_cb = nullptr;
|
@@ -1808,8 +1792,6 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1808
1792
|
tcp->socket_ts_enabled = false;
|
1809
1793
|
tcp->ts_capable = true;
|
1810
1794
|
tcp->outgoing_buffer_arg = nullptr;
|
1811
|
-
tcp->curr_read_completed = true;
|
1812
|
-
tcp->curr_min_read_chunk_size = tcp->min_read_chunk_size;
|
1813
1795
|
if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1814
1796
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1815
1797
|
const int enable = 1;
|
@@ -224,8 +224,9 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
224
224
|
}
|
225
225
|
|
226
226
|
if (sp->server->memory_quota->IsMemoryPressureHigh()) {
|
227
|
-
int64_t dropped_connections_count =
|
228
|
-
|
227
|
+
int64_t dropped_connections_count =
|
228
|
+
num_dropped_connections.fetch_add(1, std::memory_order_relaxed) + 1;
|
229
|
+
if (dropped_connections_count % 1000 == 1) {
|
229
230
|
gpr_log(GPR_INFO,
|
230
231
|
"Dropped >= %" PRId64
|
231
232
|
" new connection attempts due to high memory pressure",
|
@@ -256,13 +257,18 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
256
257
|
goto error;
|
257
258
|
}
|
258
259
|
|
259
|
-
|
260
|
+
auto addr_uri = grpc_sockaddr_to_uri(&addr);
|
261
|
+
if (!addr_uri.ok()) {
|
262
|
+
gpr_log(GPR_ERROR, "Invalid address: %s",
|
263
|
+
addr_uri.status().ToString().c_str());
|
264
|
+
goto error;
|
265
|
+
}
|
260
266
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
261
267
|
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s",
|
262
|
-
|
268
|
+
addr_uri->c_str());
|
263
269
|
}
|
264
270
|
|
265
|
-
std::string name = absl::StrCat("tcp-server-connection:",
|
271
|
+
std::string name = absl::StrCat("tcp-server-connection:", addr_uri.value());
|
266
272
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
267
273
|
|
268
274
|
read_notifier_pollset = (*(sp->server->pollsets))
|
@@ -281,7 +287,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
281
287
|
acceptor->external_connection = false;
|
282
288
|
sp->server->on_accept_cb(
|
283
289
|
sp->server->on_accept_cb_arg,
|
284
|
-
grpc_tcp_create(fdobj, sp->server->channel_args,
|
290
|
+
grpc_tcp_create(fdobj, sp->server->channel_args, addr_uri.value()),
|
285
291
|
read_notifier_pollset, acceptor);
|
286
292
|
}
|
287
293
|
|
@@ -366,7 +372,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
366
372
|
static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
367
373
|
unsigned count) {
|
368
374
|
grpc_tcp_listener* sp = nullptr;
|
369
|
-
std::string addr_str;
|
375
|
+
absl::StatusOr<std::string> addr_str;
|
370
376
|
grpc_error_handle err;
|
371
377
|
|
372
378
|
for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) {
|
@@ -385,6 +391,9 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
385
391
|
if (err != GRPC_ERROR_NONE) return err;
|
386
392
|
listener->server->nports++;
|
387
393
|
addr_str = grpc_sockaddr_to_string(&listener->addr, true);
|
394
|
+
if (!addr_str.ok()) {
|
395
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
396
|
+
}
|
388
397
|
sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
|
389
398
|
sp->next = listener->next;
|
390
399
|
listener->next = sp;
|
@@ -397,7 +406,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
397
406
|
sp->fd = fd;
|
398
407
|
sp->emfd = grpc_fd_create(
|
399
408
|
fd,
|
400
|
-
absl::StrFormat("tcp-server-listener:%s/clone-%d", addr_str
|
409
|
+
absl::StrFormat("tcp-server-listener:%s/clone-%d", *addr_str, i)
|
401
410
|
.c_str(),
|
402
411
|
true);
|
403
412
|
memcpy(&sp->addr, &listener->addr, sizeof(grpc_resolved_address));
|
@@ -604,12 +613,17 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
604
613
|
return;
|
605
614
|
}
|
606
615
|
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
|
607
|
-
|
616
|
+
auto addr_uri = grpc_sockaddr_to_uri(&addr);
|
617
|
+
if (!addr_uri.ok()) {
|
618
|
+
gpr_log(GPR_ERROR, "Invalid address: %s",
|
619
|
+
addr_uri.status().ToString().c_str());
|
620
|
+
return;
|
621
|
+
}
|
608
622
|
if (grpc_tcp_trace.enabled()) {
|
609
623
|
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
|
610
|
-
|
624
|
+
addr_uri->c_str());
|
611
625
|
}
|
612
|
-
std::string name = absl::StrCat("tcp-server-connection:",
|
626
|
+
std::string name = absl::StrCat("tcp-server-connection:", addr_uri.value());
|
613
627
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
614
628
|
read_notifier_pollset =
|
615
629
|
(*(s_->pollsets))[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
|
@@ -625,7 +639,7 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
625
639
|
acceptor->listener_fd = listener_fd;
|
626
640
|
acceptor->pending_data = buf;
|
627
641
|
s_->on_accept_cb(s_->on_accept_cb_arg,
|
628
|
-
grpc_tcp_create(fdobj, s_->channel_args,
|
642
|
+
grpc_tcp_create(fdobj, s_->channel_args, addr_uri.value()),
|
629
643
|
read_notifier_pollset, acceptor);
|
630
644
|
}
|
631
645
|
|
@@ -85,38 +85,41 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
|
|
85
85
|
unsigned port_index,
|
86
86
|
unsigned fd_index,
|
87
87
|
grpc_tcp_listener** listener) {
|
88
|
-
|
88
|
+
*listener = nullptr;
|
89
89
|
int port = -1;
|
90
90
|
|
91
91
|
grpc_error_handle err =
|
92
92
|
grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
|
93
|
-
if (err
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
s->
|
108
|
-
|
109
|
-
|
110
|
-
sp->emfd = grpc_fd_create(fd, name.c_str(), true);
|
111
|
-
memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
|
112
|
-
sp->port = port;
|
113
|
-
sp->port_index = port_index;
|
114
|
-
sp->fd_index = fd_index;
|
115
|
-
sp->is_sibling = 0;
|
116
|
-
sp->sibling = nullptr;
|
117
|
-
GPR_ASSERT(sp->emfd);
|
118
|
-
gpr_mu_unlock(&s->mu);
|
93
|
+
if (err != GRPC_ERROR_NONE) return err;
|
94
|
+
GPR_ASSERT(port > 0);
|
95
|
+
absl::StatusOr<std::string> addr_str = grpc_sockaddr_to_string(addr, true);
|
96
|
+
if (!addr_str.ok()) {
|
97
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
98
|
+
}
|
99
|
+
std::string name = absl::StrCat("tcp-server-listener:", addr_str.value());
|
100
|
+
gpr_mu_lock(&s->mu);
|
101
|
+
s->nports++;
|
102
|
+
GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
|
103
|
+
grpc_tcp_listener* sp =
|
104
|
+
static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
|
105
|
+
sp->next = nullptr;
|
106
|
+
if (s->head == nullptr) {
|
107
|
+
s->head = sp;
|
108
|
+
} else {
|
109
|
+
s->tail->next = sp;
|
119
110
|
}
|
111
|
+
s->tail = sp;
|
112
|
+
sp->server = s;
|
113
|
+
sp->fd = fd;
|
114
|
+
sp->emfd = grpc_fd_create(fd, name.c_str(), true);
|
115
|
+
memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
|
116
|
+
sp->port = port;
|
117
|
+
sp->port_index = port_index;
|
118
|
+
sp->fd_index = fd_index;
|
119
|
+
sp->is_sibling = 0;
|
120
|
+
sp->sibling = nullptr;
|
121
|
+
GPR_ASSERT(sp->emfd);
|
122
|
+
gpr_mu_unlock(&s->mu);
|
120
123
|
|
121
124
|
*listener = sp;
|
122
125
|
return err;
|
@@ -133,21 +133,24 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
133
133
|
err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set port");
|
134
134
|
break;
|
135
135
|
}
|
136
|
-
|
136
|
+
auto addr_str = grpc_sockaddr_to_string(&addr, false);
|
137
|
+
if (!addr_str.ok()) {
|
138
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
139
|
+
}
|
137
140
|
gpr_log(GPR_DEBUG,
|
138
141
|
"Adding local addr from interface %s flags 0x%x to server: %s",
|
139
|
-
ifa_name, ifa_it->ifa_flags, addr_str
|
142
|
+
ifa_name, ifa_it->ifa_flags, addr_str->c_str());
|
140
143
|
/* We could have multiple interfaces with the same address (e.g., bonding),
|
141
144
|
so look for duplicates. */
|
142
145
|
if (find_listener_with_addr(s, &addr) != nullptr) {
|
143
146
|
gpr_log(GPR_DEBUG, "Skipping duplicate addr %s on interface %s",
|
144
|
-
addr_str
|
147
|
+
addr_str->c_str(), ifa_name);
|
145
148
|
continue;
|
146
149
|
}
|
147
150
|
if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
|
148
151
|
&new_sp)) != GRPC_ERROR_NONE) {
|
149
152
|
grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
150
|
-
absl::StrCat("Failed to add listener: ", addr_str));
|
153
|
+
absl::StrCat("Failed to add listener: ", addr_str.value()));
|
151
154
|
err = grpc_error_add_child(root_err, err);
|
152
155
|
break;
|
153
156
|
} else {
|
@@ -225,11 +225,13 @@ static grpc_error_handle prepare_socket(SOCKET sock,
|
|
225
225
|
|
226
226
|
failure:
|
227
227
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
228
|
+
auto addr_uri = grpc_sockaddr_to_uri(addr);
|
228
229
|
grpc_error_set_int(
|
229
|
-
grpc_error_set_str(
|
230
|
-
|
231
|
-
|
232
|
-
|
230
|
+
grpc_error_set_str(
|
231
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
232
|
+
"Failed to prepare server socket", &error, 1),
|
233
|
+
GRPC_ERROR_STR_TARGET_ADDRESS,
|
234
|
+
addr_uri.ok() ? *addr_uri : addr_uri.status().ToString()),
|
233
235
|
GRPC_ERROR_INT_FD, (intptr_t)sock);
|
234
236
|
GRPC_ERROR_UNREF(error);
|
235
237
|
if (sock != INVALID_SOCKET) closesocket(sock);
|
@@ -347,7 +349,13 @@ static void on_accept(void* arg, grpc_error_handle error) {
|
|
347
349
|
peer_name.len = (size_t)peer_name_len;
|
348
350
|
std::string peer_name_string;
|
349
351
|
if (!err) {
|
350
|
-
|
352
|
+
auto addr_uri = grpc_sockaddr_to_uri(&peer_name);
|
353
|
+
if (addr_uri.ok()) {
|
354
|
+
peer_name_string = addr_uri.value();
|
355
|
+
} else {
|
356
|
+
gpr_log(GPR_ERROR, "invalid peer name: %s",
|
357
|
+
addr_uri.status().ToString().c_str());
|
358
|
+
}
|
351
359
|
} else {
|
352
360
|
char* utf8_message = gpr_format_message(WSAGetLastError());
|
353
361
|
gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message);
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include <grpc/support/string_util.h>
|
32
32
|
|
33
33
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
34
|
+
#include "src/core/lib/gpr/string.h"
|
34
35
|
#include "src/core/lib/gpr/useful.h"
|
35
36
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
36
37
|
#include "src/core/lib/iomgr/sockaddr.h"
|
@@ -237,7 +238,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
237
238
|
#define DEFAULT_TARGET_READ_SIZE 8192
|
238
239
|
#define MAX_WSABUF_COUNT 16
|
239
240
|
static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
240
|
-
grpc_closure* cb, bool urgent) {
|
241
|
+
grpc_closure* cb, bool urgent, int /*min_progress_size*/) {
|
241
242
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
242
243
|
grpc_winsocket* handle = tcp->socket;
|
243
244
|
grpc_winsocket_callback_info* info = &handle->read_info;
|
@@ -344,7 +345,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
|
|
344
345
|
|
345
346
|
/* Initiates a write. */
|
346
347
|
static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
347
|
-
grpc_closure* cb, void* arg) {
|
348
|
+
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
348
349
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
349
350
|
grpc_winsocket* socket = tcp->socket;
|
350
351
|
grpc_winsocket_callback_info* info = &socket->write_info;
|
@@ -517,12 +518,14 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
|
|
517
518
|
GRPC_CLOSURE_INIT(&tcp->on_write, on_write, tcp, grpc_schedule_on_exec_ctx);
|
518
519
|
grpc_resolved_address resolved_local_addr;
|
519
520
|
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
521
|
+
absl::StatusOr<std::string> addr_uri;
|
520
522
|
if (getsockname(tcp->socket->socket,
|
521
523
|
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
522
|
-
&resolved_local_addr.len) < 0
|
524
|
+
&resolved_local_addr.len) < 0 ||
|
525
|
+
!(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
|
523
526
|
tcp->local_address = "";
|
524
527
|
} else {
|
525
|
-
tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
|
528
|
+
tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr).value();
|
526
529
|
}
|
527
530
|
tcp->peer_string = std::string(peer_string);
|
528
531
|
grpc_slice_buffer_init(&tcp->last_read_buffer);
|
data/src/core/lib/json/json.h
CHANGED
@@ -18,15 +18,23 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include <
|
21
|
+
#include <inttypes.h>
|
22
|
+
#include <stdlib.h>
|
22
23
|
|
24
|
+
#include <algorithm>
|
25
|
+
#include <map>
|
23
26
|
#include <string>
|
27
|
+
#include <utility>
|
28
|
+
#include <vector>
|
24
29
|
|
30
|
+
#include "absl/base/attributes.h"
|
25
31
|
#include "absl/strings/str_cat.h"
|
26
32
|
#include "absl/strings/str_format.h"
|
33
|
+
#include "absl/strings/string_view.h"
|
27
34
|
|
28
35
|
#include <grpc/support/log.h>
|
29
36
|
|
37
|
+
#include "src/core/lib/iomgr/error.h"
|
30
38
|
#include "src/core/lib/json/json.h"
|
31
39
|
|
32
40
|
#define GRPC_JSON_MAX_DEPTH 255
|
@@ -20,9 +20,12 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/json/json_util.h"
|
22
22
|
|
23
|
+
#include <string.h>
|
24
|
+
|
23
25
|
#include <grpc/support/string_util.h>
|
24
26
|
|
25
27
|
#include "src/core/lib/gpr/string.h"
|
28
|
+
#include "src/core/lib/gprpp/memory.h"
|
26
29
|
|
27
30
|
namespace grpc_core {
|
28
31
|
|
@@ -30,6 +33,10 @@ bool ParseDurationFromJson(const Json& field, Duration* duration) {
|
|
30
33
|
if (field.type() != Json::Type::STRING) return false;
|
31
34
|
size_t len = field.string_value().size();
|
32
35
|
if (field.string_value()[len - 1] != 's') return false;
|
36
|
+
if (field.string_value() == Duration::Infinity().ToJsonString()) {
|
37
|
+
*duration = Duration::Infinity();
|
38
|
+
return true;
|
39
|
+
}
|
33
40
|
UniquePtr<char> buf(gpr_strdup(field.string_value().c_str()));
|
34
41
|
*(buf.get() + len - 1) = '\0'; // Remove trailing 's'.
|
35
42
|
char* decimal_point = strchr(buf.get(), '.');
|
@@ -21,10 +21,19 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <algorithm>
|
25
|
+
#include <map>
|
26
|
+
#include <string>
|
27
|
+
#include <type_traits>
|
28
|
+
#include <utility>
|
29
|
+
#include <vector>
|
30
|
+
|
24
31
|
#include "absl/strings/numbers.h"
|
25
32
|
#include "absl/strings/str_cat.h"
|
33
|
+
#include "absl/strings/string_view.h"
|
26
34
|
|
27
|
-
#include "src/core/lib/
|
35
|
+
#include "src/core/lib/gprpp/time.h"
|
36
|
+
#include "src/core/lib/iomgr/error.h"
|
28
37
|
#include "src/core/lib/json/json.h"
|
29
38
|
|
30
39
|
namespace grpc_core {
|
@@ -18,8 +18,13 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <stdint.h>
|
21
22
|
#include <stdlib.h>
|
22
|
-
|
23
|
+
|
24
|
+
#include <map>
|
25
|
+
#include <string>
|
26
|
+
#include <utility>
|
27
|
+
#include <vector>
|
23
28
|
|
24
29
|
#include "absl/strings/string_view.h"
|
25
30
|
|
@@ -17,14 +17,11 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
-
#include <stddef.h>
|
21
20
|
#include <stdint.h>
|
22
21
|
|
23
22
|
#include <algorithm>
|
24
23
|
#include <atomic>
|
25
|
-
#include <functional>
|
26
24
|
#include <memory>
|
27
|
-
#include <type_traits>
|
28
25
|
#include <utility>
|
29
26
|
|
30
27
|
#include "absl/base/thread_annotations.h"
|
@@ -150,13 +147,16 @@ class Activity : public Orphanable {
|
|
150
147
|
// Set the current activity at construction, clean it up at destruction.
|
151
148
|
class ScopedActivity {
|
152
149
|
public:
|
153
|
-
explicit ScopedActivity(Activity* activity)
|
154
|
-
|
150
|
+
explicit ScopedActivity(Activity* activity)
|
151
|
+
: prior_activity_(g_current_activity_) {
|
155
152
|
g_current_activity_ = activity;
|
156
153
|
}
|
157
|
-
~ScopedActivity() { g_current_activity_ =
|
154
|
+
~ScopedActivity() { g_current_activity_ = prior_activity_; }
|
158
155
|
ScopedActivity(const ScopedActivity&) = delete;
|
159
156
|
ScopedActivity& operator=(const ScopedActivity&) = delete;
|
157
|
+
|
158
|
+
private:
|
159
|
+
Activity* const prior_activity_;
|
160
160
|
};
|
161
161
|
|
162
162
|
private:
|
@@ -17,8 +17,14 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
-
#include <
|
20
|
+
#include <stdlib.h>
|
21
21
|
|
22
|
+
#include <type_traits>
|
23
|
+
#include <utility>
|
24
|
+
|
25
|
+
#include "absl/meta/type_traits.h"
|
26
|
+
|
27
|
+
#include "src/core/lib/promise/context.h"
|
22
28
|
#include "src/core/lib/promise/poll.h"
|
23
29
|
#include "src/core/lib/resource_quota/arena.h"
|
24
30
|
|
@@ -177,6 +183,10 @@ class ArenaPromise {
|
|
177
183
|
// Expose the promise interface: a call operator that returns Poll<T>.
|
178
184
|
Poll<T> operator()() { return impl_->PollOnce(); }
|
179
185
|
|
186
|
+
bool has_value() const {
|
187
|
+
return impl_ != arena_promise_detail::NullImpl<T>::Get();
|
188
|
+
}
|
189
|
+
|
180
190
|
private:
|
181
191
|
// Underlying impl object.
|
182
192
|
arena_promise_detail::ImplInterface<T>* impl_ =
|
@@ -29,7 +29,7 @@ namespace grpc_core {
|
|
29
29
|
// not contain any members, only exist.
|
30
30
|
// The reason for avoiding this is that context types each use a thread local.
|
31
31
|
template <typename T>
|
32
|
-
struct ContextType;
|
32
|
+
struct ContextType; // IWYU pragma: keep
|
33
33
|
|
34
34
|
namespace promise_detail {
|
35
35
|
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#include <cassert>
|
22
22
|
#include <new>
|
23
23
|
#include <tuple>
|
24
|
+
#include <type_traits>
|
24
25
|
#include <utility>
|
25
26
|
|
26
27
|
#include "absl/meta/type_traits.h"
|
@@ -29,13 +30,12 @@
|
|
29
30
|
|
30
31
|
#include "src/core/lib/gprpp/construct_destruct.h"
|
31
32
|
#include "src/core/lib/promise/detail/promise_factory.h"
|
33
|
+
#include "src/core/lib/promise/detail/promise_like.h"
|
32
34
|
#include "src/core/lib/promise/detail/switch.h"
|
33
35
|
#include "src/core/lib/promise/poll.h"
|
34
36
|
|
35
37
|
namespace grpc_core {
|
36
38
|
namespace promise_detail {
|
37
|
-
template <typename F>
|
38
|
-
class PromiseLike;
|
39
39
|
|
40
40
|
// Helper for SeqState to evaluate some common types to all partial
|
41
41
|
// specializations.
|
data/src/core/lib/promise/loop.h
CHANGED
data/src/core/lib/promise/race.h
CHANGED