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
@@ -242,8 +242,8 @@ struct grpc_pollset_set {
|
|
242
242
|
|
243
243
|
static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
|
244
244
|
const char* desc) {
|
245
|
-
if (error
|
246
|
-
if (*composite
|
245
|
+
if (GRPC_ERROR_IS_NONE(error)) return true;
|
246
|
+
if (GRPC_ERROR_IS_NONE(*composite)) {
|
247
247
|
*composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
|
248
248
|
}
|
249
249
|
*composite = grpc_error_add_child(*composite, error);
|
@@ -517,7 +517,7 @@ static grpc_error_handle pollset_global_init(void) {
|
|
517
517
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
518
518
|
global_wakeup_fd.read_fd = -1;
|
519
519
|
grpc_error_handle err = grpc_wakeup_fd_init(&global_wakeup_fd);
|
520
|
-
if (err
|
520
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
521
521
|
struct epoll_event ev;
|
522
522
|
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
523
523
|
ev.data.ptr = &global_wakeup_fd;
|
@@ -1268,7 +1268,9 @@ static void shutdown_engine(void) {
|
|
1268
1268
|
}
|
1269
1269
|
}
|
1270
1270
|
|
1271
|
-
static
|
1271
|
+
static bool init_epoll1_linux();
|
1272
|
+
|
1273
|
+
const grpc_event_engine_vtable grpc_ev_epoll1_posix = {
|
1272
1274
|
sizeof(grpc_pollset),
|
1273
1275
|
true,
|
1274
1276
|
false,
|
@@ -1302,8 +1304,11 @@ static const grpc_event_engine_vtable vtable = {
|
|
1302
1304
|
pollset_set_del_fd,
|
1303
1305
|
|
1304
1306
|
is_any_background_poller_thread,
|
1307
|
+
/* name = */ "epoll1",
|
1308
|
+
/* check_engine_available = */ [](bool) { return init_epoll1_linux(); },
|
1309
|
+
/* init_engine = */ []() {},
|
1305
1310
|
shutdown_background_closure,
|
1306
|
-
shutdown_engine,
|
1311
|
+
/* shutdown_engine = */ []() {},
|
1307
1312
|
add_closure_to_background_poller,
|
1308
1313
|
};
|
1309
1314
|
|
@@ -1319,21 +1324,20 @@ static void reset_event_manager_on_fork() {
|
|
1319
1324
|
}
|
1320
1325
|
gpr_mu_unlock(&fork_fd_list_mu);
|
1321
1326
|
shutdown_engine();
|
1322
|
-
|
1327
|
+
init_epoll1_linux();
|
1323
1328
|
}
|
1324
1329
|
|
1325
1330
|
/* It is possible that GLIBC has epoll but the underlying kernel doesn't.
|
1326
1331
|
* Create epoll_fd (epoll_set_init() takes care of that) to make sure epoll
|
1327
1332
|
* support is available */
|
1328
|
-
|
1329
|
-
bool /*explicit_request*/) {
|
1333
|
+
static bool init_epoll1_linux() {
|
1330
1334
|
if (!grpc_has_wakeup_fd()) {
|
1331
1335
|
gpr_log(GPR_ERROR, "Skipping epoll1 because of no wakeup fd.");
|
1332
|
-
return
|
1336
|
+
return false;
|
1333
1337
|
}
|
1334
1338
|
|
1335
1339
|
if (!epoll_set_init()) {
|
1336
|
-
return
|
1340
|
+
return false;
|
1337
1341
|
}
|
1338
1342
|
|
1339
1343
|
fd_global_init();
|
@@ -1341,7 +1345,7 @@ const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
|
1341
1345
|
if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
|
1342
1346
|
fd_global_shutdown();
|
1343
1347
|
epoll_set_shutdown();
|
1344
|
-
return
|
1348
|
+
return false;
|
1345
1349
|
}
|
1346
1350
|
|
1347
1351
|
if (grpc_core::Fork::Enabled()) {
|
@@ -1349,17 +1353,52 @@ const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
|
1349
1353
|
grpc_core::Fork::SetResetChildPollingEngineFunc(
|
1350
1354
|
reset_event_manager_on_fork);
|
1351
1355
|
}
|
1352
|
-
return
|
1356
|
+
return true;
|
1353
1357
|
}
|
1354
1358
|
|
1355
1359
|
#else /* defined(GRPC_LINUX_EPOLL) */
|
1356
1360
|
#if defined(GRPC_POSIX_SOCKET_EV_EPOLL1)
|
1357
1361
|
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1362
|
+
const grpc_event_engine_vtable grpc_ev_epoll1_posix = {
|
1363
|
+
1,
|
1364
|
+
true,
|
1365
|
+
false,
|
1366
|
+
|
1367
|
+
nullptr,
|
1368
|
+
nullptr,
|
1369
|
+
nullptr,
|
1370
|
+
nullptr,
|
1371
|
+
nullptr,
|
1372
|
+
nullptr,
|
1373
|
+
nullptr,
|
1374
|
+
nullptr,
|
1375
|
+
nullptr,
|
1376
|
+
nullptr,
|
1377
|
+
nullptr,
|
1378
|
+
|
1379
|
+
nullptr,
|
1380
|
+
nullptr,
|
1381
|
+
nullptr,
|
1382
|
+
nullptr,
|
1383
|
+
nullptr,
|
1384
|
+
nullptr,
|
1385
|
+
|
1386
|
+
nullptr,
|
1387
|
+
nullptr,
|
1388
|
+
nullptr,
|
1389
|
+
nullptr,
|
1390
|
+
nullptr,
|
1391
|
+
nullptr,
|
1392
|
+
nullptr,
|
1393
|
+
nullptr,
|
1394
|
+
|
1395
|
+
nullptr,
|
1396
|
+
/* name = */ "epoll1",
|
1397
|
+
/* check_engine_available = */ [](bool) { return false; },
|
1398
|
+
nullptr,
|
1399
|
+
nullptr,
|
1400
|
+
nullptr,
|
1401
|
+
nullptr,
|
1402
|
+
};
|
1364
1403
|
#endif /* defined(GRPC_POSIX_SOCKET_EV_EPOLL1) */
|
1365
1404
|
#endif /* !defined(GRPC_LINUX_EPOLL) */
|
@@ -26,6 +26,6 @@
|
|
26
26
|
|
27
27
|
// a polling engine that utilizes a singleton epoll set and turnstile polling
|
28
28
|
|
29
|
-
const grpc_event_engine_vtable
|
29
|
+
extern const grpc_event_engine_vtable grpc_ev_epoll1_posix;
|
30
30
|
|
31
31
|
#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLL1_LINUX_H */
|
@@ -757,8 +757,8 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
|
|
757
757
|
|
758
758
|
static void kick_append_error(grpc_error_handle* composite,
|
759
759
|
grpc_error_handle error) {
|
760
|
-
if (error
|
761
|
-
if (*composite
|
760
|
+
if (GRPC_ERROR_IS_NONE(error)) return;
|
761
|
+
if (GRPC_ERROR_IS_NONE(*composite)) {
|
762
762
|
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure");
|
763
763
|
}
|
764
764
|
*composite = grpc_error_add_child(*composite, error);
|
@@ -840,8 +840,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
|
|
840
840
|
|
841
841
|
static grpc_error_handle pollset_global_init(void) { return GRPC_ERROR_NONE; }
|
842
842
|
|
843
|
-
static void pollset_global_shutdown(void) {}
|
844
|
-
|
845
843
|
/* main interface */
|
846
844
|
|
847
845
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
@@ -904,8 +902,8 @@ static void finish_shutdown(grpc_pollset* pollset) {
|
|
904
902
|
|
905
903
|
static void work_combine_error(grpc_error_handle* composite,
|
906
904
|
grpc_error_handle error) {
|
907
|
-
if (error
|
908
|
-
if (*composite
|
905
|
+
if (GRPC_ERROR_IS_NONE(error)) return;
|
906
|
+
if (GRPC_ERROR_IS_NONE(*composite)) {
|
909
907
|
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work");
|
910
908
|
}
|
911
909
|
*composite = grpc_error_add_child(*composite, error);
|
@@ -940,7 +938,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
940
938
|
gpr_malloc(sizeof(*worker.wakeup_fd)));
|
941
939
|
error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
|
942
940
|
fork_fd_list_add_wakeup_fd(worker.wakeup_fd);
|
943
|
-
if (error
|
941
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
944
942
|
GRPC_LOG_IF_ERROR("pollset_work", GRPC_ERROR_REF(error));
|
945
943
|
return error;
|
946
944
|
}
|
@@ -1100,7 +1098,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1100
1098
|
/* If we're forced to re-evaluate polling (via pollset_kick with
|
1101
1099
|
GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
|
1102
1100
|
a loop */
|
1103
|
-
if (worker.reevaluate_polling_on_wakeup && error
|
1101
|
+
if (worker.reevaluate_polling_on_wakeup && GRPC_ERROR_IS_NONE(error)) {
|
1104
1102
|
worker.reevaluate_polling_on_wakeup = 0;
|
1105
1103
|
pollset->kicked_without_pollers = 0;
|
1106
1104
|
if (queued_work || worker.kicked_specifically) {
|
@@ -1340,15 +1338,29 @@ static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
|
1340
1338
|
return false;
|
1341
1339
|
}
|
1342
1340
|
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1341
|
+
/* Called by the child process's post-fork handler to close open fds, including
|
1342
|
+
* worker wakeup fds. This allows gRPC to shutdown in the child process without
|
1343
|
+
* interfering with connections or RPCs ongoing in the parent. */
|
1344
|
+
static void reset_event_manager_on_fork() {
|
1345
|
+
gpr_mu_lock(&fork_fd_list_mu);
|
1346
|
+
while (fork_fd_list_head != nullptr) {
|
1347
|
+
if (fork_fd_list_head->fd != nullptr) {
|
1348
|
+
if (!fork_fd_list_head->fd->closed) {
|
1349
|
+
close(fork_fd_list_head->fd->fd);
|
1350
|
+
}
|
1351
|
+
fork_fd_list_head->fd->fd = -1;
|
1352
|
+
} else {
|
1353
|
+
close(fork_fd_list_head->cached_wakeup_fd->fd.read_fd);
|
1354
|
+
fork_fd_list_head->cached_wakeup_fd->fd.read_fd = -1;
|
1355
|
+
close(fork_fd_list_head->cached_wakeup_fd->fd.write_fd);
|
1356
|
+
fork_fd_list_head->cached_wakeup_fd->fd.write_fd = -1;
|
1357
|
+
}
|
1358
|
+
fork_fd_list_head = fork_fd_list_head->next;
|
1348
1359
|
}
|
1360
|
+
gpr_mu_unlock(&fork_fd_list_mu);
|
1349
1361
|
}
|
1350
1362
|
|
1351
|
-
|
1363
|
+
const grpc_event_engine_vtable grpc_ev_poll_posix = {
|
1352
1364
|
sizeof(grpc_pollset),
|
1353
1365
|
false,
|
1354
1366
|
false,
|
@@ -1382,49 +1394,62 @@ static const grpc_event_engine_vtable vtable = {
|
|
1382
1394
|
pollset_set_del_fd,
|
1383
1395
|
|
1384
1396
|
is_any_background_poller_thread,
|
1385
|
-
|
1386
|
-
|
1397
|
+
/* name = */ "poll",
|
1398
|
+
/* check_engine_available = */
|
1399
|
+
[](bool) {
|
1400
|
+
if (!grpc_has_wakeup_fd()) {
|
1401
|
+
gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd.");
|
1402
|
+
return false;
|
1403
|
+
}
|
1404
|
+
if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
|
1405
|
+
return false;
|
1406
|
+
}
|
1407
|
+
if (grpc_core::Fork::Enabled()) {
|
1408
|
+
track_fds_for_fork = true;
|
1409
|
+
gpr_mu_init(&fork_fd_list_mu);
|
1410
|
+
grpc_core::Fork::SetResetChildPollingEngineFunc(
|
1411
|
+
reset_event_manager_on_fork);
|
1412
|
+
}
|
1413
|
+
return true;
|
1414
|
+
},
|
1415
|
+
/* init_engine = */ []() {},
|
1416
|
+
/* shutdown_engine = */ shutdown_background_closure,
|
1417
|
+
[]() {},
|
1387
1418
|
add_closure_to_background_poller,
|
1388
1419
|
};
|
1389
1420
|
|
1390
|
-
|
1391
|
-
* worker wakeup fds. This allows gRPC to shutdown in the child process without
|
1392
|
-
* interfering with connections or RPCs ongoing in the parent. */
|
1393
|
-
static void reset_event_manager_on_fork() {
|
1394
|
-
gpr_mu_lock(&fork_fd_list_mu);
|
1395
|
-
while (fork_fd_list_head != nullptr) {
|
1396
|
-
if (fork_fd_list_head->fd != nullptr) {
|
1397
|
-
if (!fork_fd_list_head->fd->closed) {
|
1398
|
-
close(fork_fd_list_head->fd->fd);
|
1399
|
-
}
|
1400
|
-
fork_fd_list_head->fd->fd = -1;
|
1401
|
-
} else {
|
1402
|
-
close(fork_fd_list_head->cached_wakeup_fd->fd.read_fd);
|
1403
|
-
fork_fd_list_head->cached_wakeup_fd->fd.read_fd = -1;
|
1404
|
-
close(fork_fd_list_head->cached_wakeup_fd->fd.write_fd);
|
1405
|
-
fork_fd_list_head->cached_wakeup_fd->fd.write_fd = -1;
|
1406
|
-
}
|
1407
|
-
fork_fd_list_head = fork_fd_list_head->next;
|
1408
|
-
}
|
1409
|
-
gpr_mu_unlock(&fork_fd_list_mu);
|
1410
|
-
}
|
1421
|
+
namespace {
|
1411
1422
|
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
return
|
1417
|
-
}
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
if (grpc_core::Fork::Enabled()) {
|
1422
|
-
track_fds_for_fork = true;
|
1423
|
-
gpr_mu_init(&fork_fd_list_mu);
|
1424
|
-
grpc_core::Fork::SetResetChildPollingEngineFunc(
|
1425
|
-
reset_event_manager_on_fork);
|
1423
|
+
grpc_poll_function_type real_poll_function;
|
1424
|
+
|
1425
|
+
int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
|
1426
|
+
if (timeout == 0) {
|
1427
|
+
return real_poll_function(fds, nfds, 0);
|
1428
|
+
} else {
|
1429
|
+
gpr_log(GPR_ERROR, "Attempted a blocking poll when declared non-polling.");
|
1430
|
+
GPR_ASSERT(false);
|
1431
|
+
return -1;
|
1426
1432
|
}
|
1427
|
-
return &vtable;
|
1428
1433
|
}
|
1429
1434
|
|
1435
|
+
} // namespace
|
1436
|
+
|
1437
|
+
const grpc_event_engine_vtable grpc_ev_none_posix = []() {
|
1438
|
+
grpc_event_engine_vtable v = grpc_ev_poll_posix;
|
1439
|
+
v.check_engine_available = [](bool explicit_request) {
|
1440
|
+
if (!explicit_request) return false;
|
1441
|
+
// return the simplest engine as a phony but also override the poller
|
1442
|
+
if (!grpc_ev_poll_posix.check_engine_available(explicit_request)) {
|
1443
|
+
return false;
|
1444
|
+
}
|
1445
|
+
real_poll_function = grpc_poll_function;
|
1446
|
+
grpc_poll_function = phony_poll;
|
1447
|
+
return true;
|
1448
|
+
};
|
1449
|
+
v.name = "none";
|
1450
|
+
v.init_engine = []() {};
|
1451
|
+
v.shutdown_engine = []() {};
|
1452
|
+
return v;
|
1453
|
+
}();
|
1454
|
+
|
1430
1455
|
#endif /* GRPC_POSIX_SOCKET_EV_POLL */
|
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/iomgr/ev_posix.h"
|
25
25
|
|
26
|
-
const grpc_event_engine_vtable
|
27
|
-
const grpc_event_engine_vtable
|
26
|
+
extern const grpc_event_engine_vtable grpc_ev_poll_posix;
|
27
|
+
extern const grpc_event_engine_vtable grpc_ev_none_posix;
|
28
28
|
|
29
29
|
#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H */
|
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <grpc/grpc.h>
|
22
|
+
|
21
23
|
#include "src/core/lib/iomgr/port.h"
|
22
24
|
|
23
25
|
#ifdef GRPC_POSIX_SOCKET_EV
|
@@ -74,44 +76,7 @@ grpc_poll_function_type grpc_poll_function = aix_poll;
|
|
74
76
|
grpc_wakeup_fd grpc_global_wakeup_fd;
|
75
77
|
|
76
78
|
static const grpc_event_engine_vtable* g_event_engine = nullptr;
|
77
|
-
static
|
78
|
-
|
79
|
-
typedef const grpc_event_engine_vtable* (*event_engine_factory_fn)(
|
80
|
-
bool explicit_request);
|
81
|
-
|
82
|
-
struct event_engine_factory {
|
83
|
-
const char* name;
|
84
|
-
event_engine_factory_fn factory;
|
85
|
-
};
|
86
|
-
namespace {
|
87
|
-
|
88
|
-
grpc_poll_function_type real_poll_function;
|
89
|
-
|
90
|
-
int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
|
91
|
-
if (timeout == 0) {
|
92
|
-
return real_poll_function(fds, nfds, 0);
|
93
|
-
} else {
|
94
|
-
gpr_log(GPR_ERROR, "Attempted a blocking poll when declared non-polling.");
|
95
|
-
GPR_ASSERT(false);
|
96
|
-
return -1;
|
97
|
-
}
|
98
|
-
}
|
99
|
-
|
100
|
-
const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
|
101
|
-
if (!explicit_request) {
|
102
|
-
return nullptr;
|
103
|
-
}
|
104
|
-
// return the simplest engine as a phony but also override the poller
|
105
|
-
auto ret = grpc_init_poll_posix(explicit_request);
|
106
|
-
real_poll_function = grpc_poll_function;
|
107
|
-
grpc_poll_function = phony_poll;
|
108
|
-
|
109
|
-
return ret;
|
110
|
-
}
|
111
|
-
} // namespace
|
112
|
-
|
113
|
-
#define ENGINE_HEAD_CUSTOM "head_custom"
|
114
|
-
#define ENGINE_TAIL_CUSTOM "tail_custom"
|
79
|
+
static gpr_once g_choose_engine = GPR_ONCE_INIT;
|
115
80
|
|
116
81
|
// The global array of event-engine factories. Each entry is a pair with a name
|
117
82
|
// and an event-engine generator function (nullptr if there is no generator
|
@@ -124,13 +89,18 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
|
|
124
89
|
// specific poller that is requested by name in the GRPC_POLL_STRATEGY
|
125
90
|
// environment variable if that variable is set (which should be a
|
126
91
|
// comma-separated list of one or more event engine names)
|
127
|
-
static
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
92
|
+
static const grpc_event_engine_vtable* g_vtables[] = {
|
93
|
+
nullptr,
|
94
|
+
nullptr,
|
95
|
+
nullptr,
|
96
|
+
nullptr,
|
97
|
+
&grpc_ev_epoll1_posix,
|
98
|
+
&grpc_ev_poll_posix,
|
99
|
+
&grpc_ev_none_posix,
|
100
|
+
nullptr,
|
101
|
+
nullptr,
|
102
|
+
nullptr,
|
103
|
+
nullptr,
|
134
104
|
};
|
135
105
|
|
136
106
|
static void add(const char* beg, const char* end, char*** ss, size_t* ns) {
|
@@ -163,77 +133,69 @@ static bool is(const char* want, const char* have) {
|
|
163
133
|
}
|
164
134
|
|
165
135
|
static void try_engine(const char* engine) {
|
166
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(
|
167
|
-
if (
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
}
|
136
|
+
for (size_t i = 0; i < GPR_ARRAY_SIZE(g_vtables); i++) {
|
137
|
+
if (g_vtables[i] != nullptr && is(engine, g_vtables[i]->name) &&
|
138
|
+
g_vtables[i]->check_engine_available(
|
139
|
+
0 == strcmp(engine, g_vtables[i]->name))) {
|
140
|
+
g_event_engine = g_vtables[i];
|
141
|
+
gpr_log(GPR_DEBUG, "Using polling engine: %s", g_event_engine->name);
|
142
|
+
return;
|
174
143
|
}
|
175
144
|
}
|
176
145
|
}
|
177
146
|
|
178
147
|
/* Call this before calling grpc_event_engine_init() */
|
179
|
-
void grpc_register_event_engine_factory(const
|
180
|
-
event_engine_factory_fn factory,
|
148
|
+
void grpc_register_event_engine_factory(const grpc_event_engine_vtable* vtable,
|
181
149
|
bool add_at_head) {
|
182
|
-
const
|
183
|
-
|
150
|
+
const grpc_event_engine_vtable** first_null = nullptr;
|
151
|
+
const grpc_event_engine_vtable** last_null = nullptr;
|
184
152
|
|
185
153
|
// Overwrite an existing registration if already registered
|
186
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(
|
187
|
-
if (
|
188
|
-
|
154
|
+
for (size_t i = 0; i < GPR_ARRAY_SIZE(g_vtables); i++) {
|
155
|
+
if (g_vtables[i] == nullptr) {
|
156
|
+
if (first_null == nullptr) first_null = &g_vtables[i];
|
157
|
+
last_null = &g_vtables[i];
|
158
|
+
} else if (0 == strcmp(g_vtables[i]->name, vtable->name)) {
|
159
|
+
g_vtables[i] = vtable;
|
189
160
|
return;
|
190
161
|
}
|
191
162
|
}
|
192
163
|
|
193
|
-
|
194
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
|
195
|
-
if (0 == strcmp(g_factories[i].name, custom_match)) {
|
196
|
-
g_factories[i].name = name;
|
197
|
-
g_factories[i].factory = factory;
|
198
|
-
return;
|
199
|
-
}
|
200
|
-
}
|
201
|
-
|
202
|
-
// Otherwise fail
|
203
|
-
GPR_ASSERT(false);
|
164
|
+
*(add_at_head ? first_null : last_null) = vtable;
|
204
165
|
}
|
205
166
|
|
206
167
|
/*If grpc_event_engine_init() has been called, returns the poll_strategy_name.
|
207
168
|
* Otherwise, returns nullptr. */
|
208
|
-
const char* grpc_get_poll_strategy_name() { return
|
169
|
+
const char* grpc_get_poll_strategy_name() { return g_event_engine->name; }
|
209
170
|
|
210
171
|
void grpc_event_engine_init(void) {
|
211
|
-
|
172
|
+
gpr_once_init(&g_choose_engine, []() {
|
173
|
+
grpc_core::UniquePtr<char> value =
|
174
|
+
GPR_GLOBAL_CONFIG_GET(grpc_poll_strategy);
|
212
175
|
|
213
|
-
|
214
|
-
|
215
|
-
|
176
|
+
char** strings = nullptr;
|
177
|
+
size_t nstrings = 0;
|
178
|
+
split(value.get(), &strings, &nstrings);
|
216
179
|
|
217
|
-
|
218
|
-
|
219
|
-
|
180
|
+
for (size_t i = 0; g_event_engine == nullptr && i < nstrings; i++) {
|
181
|
+
try_engine(strings[i]);
|
182
|
+
}
|
220
183
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
184
|
+
for (size_t i = 0; i < nstrings; i++) {
|
185
|
+
gpr_free(strings[i]);
|
186
|
+
}
|
187
|
+
gpr_free(strings);
|
225
188
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
189
|
+
if (g_event_engine == nullptr) {
|
190
|
+
gpr_log(GPR_ERROR, "No event engine could be initialized from %s",
|
191
|
+
value.get());
|
192
|
+
abort();
|
193
|
+
}
|
194
|
+
});
|
195
|
+
g_event_engine->init_engine();
|
231
196
|
}
|
232
197
|
|
233
|
-
void grpc_event_engine_shutdown(void) {
|
234
|
-
g_event_engine->shutdown_engine();
|
235
|
-
g_event_engine = nullptr;
|
236
|
-
}
|
198
|
+
void grpc_event_engine_shutdown(void) { g_event_engine->shutdown_engine(); }
|
237
199
|
|
238
200
|
bool grpc_event_engine_can_track_errors(void) {
|
239
201
|
/* Only track errors if platform supports errqueue. */
|
@@ -85,6 +85,9 @@ typedef struct grpc_event_engine_vtable {
|
|
85
85
|
void (*pollset_set_del_fd)(grpc_pollset_set* pollset_set, grpc_fd* fd);
|
86
86
|
|
87
87
|
bool (*is_any_background_poller_thread)(void);
|
88
|
+
const char* name;
|
89
|
+
bool (*check_engine_available)(bool explicit_request);
|
90
|
+
void (*init_engine)();
|
88
91
|
void (*shutdown_background_closure)(void);
|
89
92
|
void (*shutdown_engine)(void);
|
90
93
|
bool (*add_closure_to_background_poller)(grpc_closure* closure,
|
@@ -92,9 +95,8 @@ typedef struct grpc_event_engine_vtable {
|
|
92
95
|
} grpc_event_engine_vtable;
|
93
96
|
|
94
97
|
/* register a new event engine factory */
|
95
|
-
void grpc_register_event_engine_factory(
|
96
|
-
|
97
|
-
bool add_at_head);
|
98
|
+
void grpc_register_event_engine_factory(const grpc_event_engine_vtable* vtable,
|
99
|
+
bool add_at_head);
|
98
100
|
|
99
101
|
void grpc_event_engine_init(void);
|
100
102
|
void grpc_event_engine_shutdown(void);
|
data/src/core/lib/iomgr/iomgr.cc
CHANGED
@@ -45,6 +45,13 @@ GPR_GLOBAL_CONFIG_DEFINE_BOOL(grpc_abort_on_leaks, false,
|
|
45
45
|
"A debugging aid to cause a call to abort() when "
|
46
46
|
"gRPC objects are leaked past grpc_shutdown()");
|
47
47
|
|
48
|
+
GPR_GLOBAL_CONFIG_DEFINE_BOOL(
|
49
|
+
grpc_experimental_enable_tcp_frame_size_tuning, false,
|
50
|
+
"If set, enables TCP to use RPC size estimation made by higher layers. TCP "
|
51
|
+
"would not indicate completion of a read operation until a specified "
|
52
|
+
"number of bytes have been read over the socket. Buffers are also "
|
53
|
+
"allocated according to estimated RPC sizes.");
|
54
|
+
|
48
55
|
static gpr_mu g_mu;
|
49
56
|
static gpr_cv g_rcv;
|
50
57
|
static int g_shutdown;
|
@@ -80,6 +80,7 @@ void grpc_set_default_iomgr_platform() {
|
|
80
80
|
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
81
81
|
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
82
82
|
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
83
|
+
grpc_tcp_client_global_init();
|
83
84
|
grpc_set_iomgr_platform_vtable(&vtable);
|
84
85
|
}
|
85
86
|
|
@@ -177,6 +177,7 @@ void grpc_set_default_iomgr_platform() {
|
|
177
177
|
grpc_set_pollset_set_vtable(&grpc_apple_pollset_set_vtable);
|
178
178
|
grpc_set_iomgr_platform_vtable(&apple_vtable);
|
179
179
|
}
|
180
|
+
grpc_tcp_client_global_init();
|
180
181
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
181
182
|
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
182
183
|
}
|
@@ -66,7 +66,7 @@ grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator,
|
|
66
66
|
end:
|
67
67
|
*output = result;
|
68
68
|
if (file != nullptr) fclose(file);
|
69
|
-
if (error
|
69
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
70
70
|
grpc_error_handle error_out =
|
71
71
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
72
72
|
"Failed to load file", &error, 1),
|
@@ -22,13 +22,18 @@
|
|
22
22
|
|
23
23
|
grpc_tcp_client_vtable* grpc_tcp_client_impl;
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
int64_t grpc_tcp_client_connect(grpc_closure* on_connect,
|
26
|
+
grpc_endpoint** endpoint,
|
27
|
+
grpc_pollset_set* interested_parties,
|
28
|
+
const grpc_channel_args* channel_args,
|
29
|
+
const grpc_resolved_address* addr,
|
30
|
+
grpc_core::Timestamp deadline) {
|
31
|
+
return grpc_tcp_client_impl->connect(on_connect, endpoint, interested_parties,
|
32
|
+
channel_args, addr, deadline);
|
33
|
+
}
|
34
|
+
|
35
|
+
bool grpc_tcp_client_cancel_connect(int64_t connection_handle) {
|
36
|
+
return grpc_tcp_client_impl->cancel_connect(connection_handle);
|
32
37
|
}
|
33
38
|
|
34
39
|
void grpc_set_tcp_client_impl(grpc_tcp_client_vtable* impl) {
|