grpc 1.64.3 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -20,14 +20,16 @@
|
|
20
20
|
#include <grpc/support/log.h>
|
21
21
|
#include <grpc/support/port_platform.h>
|
22
22
|
|
23
|
-
#include "src/core/lib/
|
23
|
+
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
24
24
|
#include "src/core/lib/promise/detail/status.h"
|
25
25
|
#include "src/core/lib/promise/if.h"
|
26
26
|
#include "src/core/lib/promise/latch.h"
|
27
27
|
#include "src/core/lib/promise/party.h"
|
28
28
|
#include "src/core/lib/promise/pipe.h"
|
29
|
+
#include "src/core/lib/promise/prioritized_race.h"
|
29
30
|
#include "src/core/lib/promise/promise.h"
|
30
31
|
#include "src/core/lib/promise/status_flag.h"
|
32
|
+
#include "src/core/lib/promise/try_seq.h"
|
31
33
|
#include "src/core/lib/transport/call_arena_allocator.h"
|
32
34
|
#include "src/core/lib/transport/call_filters.h"
|
33
35
|
#include "src/core/lib/transport/message.h"
|
@@ -38,13 +40,23 @@ namespace grpc_core {
|
|
38
40
|
// The common middle part of a call - a reference is held by each of
|
39
41
|
// CallInitiator and CallHandler - which provide interfaces that are appropriate
|
40
42
|
// for each side of a call.
|
41
|
-
//
|
42
|
-
|
43
|
-
// TODO(ctiller): eventually drop this when we don't need to reference into
|
44
|
-
// legacy promise calls anymore
|
45
|
-
class CallSpineInterface {
|
43
|
+
// Hosts context, call filters, and the arena.
|
44
|
+
class CallSpine final : public Party {
|
46
45
|
public:
|
47
|
-
|
46
|
+
static RefCountedPtr<CallSpine> Create(
|
47
|
+
ClientMetadataHandle client_initial_metadata,
|
48
|
+
grpc_event_engine::experimental::EventEngine* event_engine,
|
49
|
+
RefCountedPtr<Arena> arena) {
|
50
|
+
Arena* arena_ptr = arena.get();
|
51
|
+
return RefCountedPtr<CallSpine>(arena_ptr->New<CallSpine>(
|
52
|
+
std::move(client_initial_metadata), event_engine, std::move(arena)));
|
53
|
+
}
|
54
|
+
|
55
|
+
~CallSpine() override {}
|
56
|
+
|
57
|
+
CallFilters& call_filters() { return call_filters_; }
|
58
|
+
Arena* arena() { return arena_.get(); }
|
59
|
+
|
48
60
|
// Add a callback to be called when server trailing metadata is received.
|
49
61
|
void OnDone(absl::AnyInvocable<void()> fn) {
|
50
62
|
if (on_done_ == nullptr) {
|
@@ -59,38 +71,70 @@ class CallSpineInterface {
|
|
59
71
|
void CallOnDone() {
|
60
72
|
if (on_done_ != nullptr) std::exchange(on_done_, nullptr)();
|
61
73
|
}
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
74
|
+
|
75
|
+
auto PullServerInitialMetadata() {
|
76
|
+
return call_filters().PullServerInitialMetadata();
|
77
|
+
}
|
78
|
+
|
79
|
+
auto PullServerTrailingMetadata() {
|
80
|
+
return call_filters().PullServerTrailingMetadata();
|
81
|
+
}
|
82
|
+
|
83
|
+
auto PushClientToServerMessage(MessageHandle message) {
|
84
|
+
return call_filters().PushClientToServerMessage(std::move(message));
|
85
|
+
}
|
86
|
+
|
87
|
+
auto PullClientToServerMessage() {
|
88
|
+
return call_filters().PullClientToServerMessage();
|
89
|
+
}
|
90
|
+
|
91
|
+
auto PushServerToClientMessage(MessageHandle message) {
|
92
|
+
return call_filters().PushServerToClientMessage(std::move(message));
|
93
|
+
}
|
94
|
+
|
95
|
+
auto PullServerToClientMessage() {
|
96
|
+
return call_filters().PullServerToClientMessage();
|
97
|
+
}
|
98
|
+
|
99
|
+
void PushServerTrailingMetadata(ServerMetadataHandle md) {
|
100
|
+
call_filters().PushServerTrailingMetadata(std::move(md));
|
101
|
+
}
|
102
|
+
|
103
|
+
void FinishSends() { call_filters().FinishClientToServerSends(); }
|
104
|
+
|
105
|
+
auto PullClientInitialMetadata() {
|
106
|
+
return call_filters().PullClientInitialMetadata();
|
107
|
+
}
|
108
|
+
|
109
|
+
auto PushServerInitialMetadata(absl::optional<ServerMetadataHandle> md) {
|
110
|
+
bool has_md = md.has_value();
|
111
|
+
return If(
|
112
|
+
has_md,
|
113
|
+
[this, md = std::move(md)]() mutable {
|
114
|
+
return call_filters().PushServerInitialMetadata(std::move(*md));
|
115
|
+
},
|
116
|
+
[this]() {
|
117
|
+
call_filters().NoServerInitialMetadata();
|
118
|
+
return Immediate<StatusFlag>(Success{});
|
119
|
+
});
|
120
|
+
}
|
121
|
+
|
122
|
+
auto WasCancelled() { return call_filters().WasCancelled(); }
|
123
|
+
|
124
|
+
ClientMetadata& UnprocessedClientInitialMetadata() {
|
125
|
+
return *call_filters().unprocessed_client_initial_metadata();
|
126
|
+
}
|
127
|
+
|
128
|
+
grpc_event_engine::experimental::EventEngine* event_engine() const override {
|
129
|
+
return event_engine_;
|
130
|
+
}
|
87
131
|
|
88
132
|
// Wrap a promise so that if it returns failure it automatically cancels
|
89
133
|
// the rest of the call.
|
90
134
|
// The resulting (returned) promise will resolve to Empty.
|
91
135
|
template <typename Promise>
|
92
136
|
auto CancelIfFails(Promise promise) {
|
93
|
-
DCHECK(GetContext<Activity>() ==
|
137
|
+
DCHECK(GetContext<Activity>() == this);
|
94
138
|
using P = promise_detail::PromiseLike<Promise>;
|
95
139
|
using ResultType = typename P::Result;
|
96
140
|
return Map(std::move(promise), [this](ResultType r) {
|
@@ -105,7 +149,7 @@ class CallSpineInterface {
|
|
105
149
|
// that detail.
|
106
150
|
template <typename PromiseFactory>
|
107
151
|
void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) {
|
108
|
-
|
152
|
+
Spawn(name, std::move(promise_factory), [](Empty) {});
|
109
153
|
}
|
110
154
|
|
111
155
|
// Spawn a promise that returns some status-like type; if the status
|
@@ -121,284 +165,55 @@ class CallSpineInterface {
|
|
121
165
|
std::is_same<bool,
|
122
166
|
decltype(IsStatusOk(std::declval<ResultType>()))>::value,
|
123
167
|
"SpawnGuarded promise must return a status-like object");
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
status->Set(GrpcCallWasCancelled(), true);
|
133
|
-
PushServerTrailingMetadata(std::move(status));
|
134
|
-
}
|
135
|
-
});
|
136
|
-
}
|
137
|
-
|
138
|
-
private:
|
139
|
-
absl::AnyInvocable<void()> on_done_{nullptr};
|
140
|
-
};
|
141
|
-
|
142
|
-
// Implementation of CallSpine atop the v2 Pipe based arrangement.
|
143
|
-
// This implementation will go away in favor of an implementation atop
|
144
|
-
// CallFilters by the time v3 lands.
|
145
|
-
class PipeBasedCallSpine : public CallSpineInterface {
|
146
|
-
public:
|
147
|
-
virtual Pipe<ClientMetadataHandle>& client_initial_metadata() = 0;
|
148
|
-
virtual Pipe<ServerMetadataHandle>& server_initial_metadata() = 0;
|
149
|
-
virtual Pipe<MessageHandle>& client_to_server_messages() = 0;
|
150
|
-
virtual Pipe<MessageHandle>& server_to_client_messages() = 0;
|
151
|
-
virtual Latch<ServerMetadataHandle>& cancel_latch() = 0;
|
152
|
-
virtual Latch<bool>& was_cancelled_latch() = 0;
|
153
|
-
|
154
|
-
Promise<ValueOrFailure<absl::optional<ServerMetadataHandle>>>
|
155
|
-
PullServerInitialMetadata() final {
|
156
|
-
DCHECK(GetContext<Activity>() == &party());
|
157
|
-
return Map(server_initial_metadata().receiver.Next(),
|
158
|
-
[](NextResult<ServerMetadataHandle> md)
|
159
|
-
-> ValueOrFailure<absl::optional<ServerMetadataHandle>> {
|
160
|
-
if (!md.has_value()) {
|
161
|
-
if (md.cancelled()) return Failure{};
|
162
|
-
return absl::optional<ServerMetadataHandle>();
|
163
|
-
}
|
164
|
-
return absl::optional<ServerMetadataHandle>(std::move(*md));
|
165
|
-
});
|
166
|
-
}
|
167
|
-
|
168
|
-
Promise<ServerMetadataHandle> PullServerTrailingMetadata() final {
|
169
|
-
DCHECK(GetContext<Activity>() == &party());
|
170
|
-
return cancel_latch().Wait();
|
171
|
-
}
|
172
|
-
|
173
|
-
Promise<ValueOrFailure<absl::optional<MessageHandle>>>
|
174
|
-
PullServerToClientMessage() final {
|
175
|
-
DCHECK(GetContext<Activity>() == &party());
|
176
|
-
return Map(server_to_client_messages().receiver.Next(), MapNextMessage);
|
177
|
-
}
|
178
|
-
|
179
|
-
Promise<StatusFlag> PushClientToServerMessage(MessageHandle message) final {
|
180
|
-
DCHECK(GetContext<Activity>() == &party());
|
181
|
-
return Map(client_to_server_messages().sender.Push(std::move(message)),
|
182
|
-
[](bool r) { return StatusFlag(r); });
|
183
|
-
}
|
184
|
-
|
185
|
-
Promise<ValueOrFailure<absl::optional<MessageHandle>>>
|
186
|
-
PullClientToServerMessage() final {
|
187
|
-
DCHECK(GetContext<Activity>() == &party());
|
188
|
-
return Map(client_to_server_messages().receiver.Next(), MapNextMessage);
|
189
|
-
}
|
190
|
-
|
191
|
-
Promise<StatusFlag> PushServerToClientMessage(MessageHandle message) final {
|
192
|
-
DCHECK(GetContext<Activity>() == &party());
|
193
|
-
return Map(server_to_client_messages().sender.Push(std::move(message)),
|
194
|
-
[](bool r) { return StatusFlag(r); });
|
195
|
-
}
|
196
|
-
|
197
|
-
void FinishSends() final {
|
198
|
-
DCHECK(GetContext<Activity>() == &party());
|
199
|
-
client_to_server_messages().sender.Close();
|
200
|
-
}
|
201
|
-
|
202
|
-
void PushServerTrailingMetadata(ServerMetadataHandle metadata) final {
|
203
|
-
DCHECK(GetContext<Activity>() == &party());
|
204
|
-
auto& c = cancel_latch();
|
205
|
-
if (c.is_set()) return;
|
206
|
-
const bool was_cancelled =
|
207
|
-
metadata->get(GrpcCallWasCancelled()).value_or(false);
|
208
|
-
c.Set(std::move(metadata));
|
209
|
-
CallOnDone();
|
210
|
-
was_cancelled_latch().Set(was_cancelled);
|
211
|
-
client_initial_metadata().sender.CloseWithError();
|
212
|
-
server_initial_metadata().sender.Close();
|
213
|
-
client_to_server_messages().sender.CloseWithError();
|
214
|
-
server_to_client_messages().sender.Close();
|
215
|
-
}
|
216
|
-
|
217
|
-
Promise<bool> WasCancelled() final {
|
218
|
-
DCHECK(GetContext<Activity>() == &party());
|
219
|
-
return was_cancelled_latch().Wait();
|
220
|
-
}
|
221
|
-
|
222
|
-
Promise<ValueOrFailure<ClientMetadataHandle>> PullClientInitialMetadata()
|
223
|
-
final {
|
224
|
-
DCHECK(GetContext<Activity>() == &party());
|
225
|
-
return Map(client_initial_metadata().receiver.Next(),
|
226
|
-
[](NextResult<ClientMetadataHandle> md)
|
227
|
-
-> ValueOrFailure<ClientMetadataHandle> {
|
228
|
-
if (!md.has_value()) return Failure{};
|
229
|
-
return std::move(*md);
|
230
|
-
});
|
231
|
-
}
|
232
|
-
|
233
|
-
Promise<StatusFlag> PushServerInitialMetadata(
|
234
|
-
absl::optional<ServerMetadataHandle> md) final {
|
235
|
-
DCHECK(GetContext<Activity>() == &party());
|
236
|
-
return If(
|
237
|
-
md.has_value(),
|
238
|
-
[&md, this]() {
|
239
|
-
return Map(server_initial_metadata().sender.Push(std::move(*md)),
|
240
|
-
[](bool ok) { return StatusFlag(ok); });
|
241
|
-
},
|
242
|
-
[this]() {
|
243
|
-
server_initial_metadata().sender.Close();
|
244
|
-
return []() -> StatusFlag { return Success{}; };
|
245
|
-
});
|
246
|
-
}
|
247
|
-
|
248
|
-
private:
|
249
|
-
static ValueOrFailure<absl::optional<MessageHandle>> MapNextMessage(
|
250
|
-
NextResult<MessageHandle> r) {
|
251
|
-
if (!r.has_value()) {
|
252
|
-
if (r.cancelled()) return Failure{};
|
253
|
-
return absl::optional<MessageHandle>();
|
254
|
-
}
|
255
|
-
return absl::optional<MessageHandle>(std::move(*r));
|
256
|
-
}
|
257
|
-
};
|
258
|
-
|
259
|
-
class CallSpine final : public CallSpineInterface, public Party {
|
260
|
-
public:
|
261
|
-
static RefCountedPtr<CallSpine> Create(
|
262
|
-
ClientMetadataHandle client_initial_metadata,
|
263
|
-
grpc_event_engine::experimental::EventEngine* event_engine, Arena* arena,
|
264
|
-
RefCountedPtr<CallArenaAllocator> call_arena_allocator_if_arena_is_owned,
|
265
|
-
grpc_call_context_element* legacy_context) {
|
266
|
-
return RefCountedPtr<CallSpine>(arena->New<CallSpine>(
|
267
|
-
std::move(client_initial_metadata), event_engine, arena,
|
268
|
-
std::move(call_arena_allocator_if_arena_is_owned), legacy_context));
|
269
|
-
}
|
270
|
-
|
271
|
-
~CallSpine() override {
|
272
|
-
if (legacy_context_is_owned_) {
|
273
|
-
for (size_t i = 0; i < GRPC_CONTEXT_COUNT; i++) {
|
274
|
-
grpc_call_context_element& elem = legacy_context_[i];
|
275
|
-
if (elem.destroy != nullptr) elem.destroy(&elem);
|
168
|
+
Spawn(name, std::move(promise_factory), [this, whence](ResultType r) {
|
169
|
+
if (!IsStatusOk(r)) {
|
170
|
+
GRPC_TRACE_LOG(promise_primitives, INFO)
|
171
|
+
<< "SpawnGuarded sees failure: " << r
|
172
|
+
<< " (source: " << whence.file() << ":" << whence.line() << ")";
|
173
|
+
auto status = StatusCast<ServerMetadataHandle>(std::move(r));
|
174
|
+
status->Set(GrpcCallWasCancelled(), true);
|
175
|
+
PushServerTrailingMetadata(std::move(status));
|
276
176
|
}
|
277
|
-
}
|
278
|
-
}
|
279
|
-
|
280
|
-
CallFilters& call_filters() { return call_filters_; }
|
281
|
-
|
282
|
-
Party& party() override { return *this; }
|
283
|
-
|
284
|
-
Arena* arena() override { return arena_; }
|
285
|
-
|
286
|
-
void IncrementRefCount() override { Party::IncrementRefCount(); }
|
287
|
-
|
288
|
-
void Unref() override { Party::Unref(); }
|
289
|
-
|
290
|
-
Promise<ValueOrFailure<absl::optional<ServerMetadataHandle>>>
|
291
|
-
PullServerInitialMetadata() override {
|
292
|
-
return call_filters().PullServerInitialMetadata();
|
293
|
-
}
|
294
|
-
|
295
|
-
Promise<ServerMetadataHandle> PullServerTrailingMetadata() override {
|
296
|
-
return call_filters().PullServerTrailingMetadata();
|
297
|
-
}
|
298
|
-
|
299
|
-
Promise<StatusFlag> PushClientToServerMessage(
|
300
|
-
MessageHandle message) override {
|
301
|
-
return call_filters().PushClientToServerMessage(std::move(message));
|
302
|
-
}
|
303
|
-
|
304
|
-
Promise<ValueOrFailure<absl::optional<MessageHandle>>>
|
305
|
-
PullClientToServerMessage() override {
|
306
|
-
return call_filters().PullClientToServerMessage();
|
307
|
-
}
|
308
|
-
|
309
|
-
Promise<StatusFlag> PushServerToClientMessage(
|
310
|
-
MessageHandle message) override {
|
311
|
-
return call_filters().PushServerToClientMessage(std::move(message));
|
312
|
-
}
|
313
|
-
|
314
|
-
Promise<ValueOrFailure<absl::optional<MessageHandle>>>
|
315
|
-
PullServerToClientMessage() override {
|
316
|
-
return call_filters().PullServerToClientMessage();
|
317
|
-
}
|
318
|
-
|
319
|
-
void PushServerTrailingMetadata(ServerMetadataHandle md) override {
|
320
|
-
call_filters().PushServerTrailingMetadata(std::move(md));
|
321
|
-
}
|
322
|
-
|
323
|
-
void FinishSends() override { call_filters().FinishClientToServerSends(); }
|
324
|
-
|
325
|
-
Promise<ValueOrFailure<ClientMetadataHandle>> PullClientInitialMetadata()
|
326
|
-
override {
|
327
|
-
return call_filters().PullClientInitialMetadata();
|
328
|
-
}
|
329
|
-
|
330
|
-
Promise<StatusFlag> PushServerInitialMetadata(
|
331
|
-
absl::optional<ServerMetadataHandle> md) override {
|
332
|
-
if (md.has_value()) {
|
333
|
-
return call_filters().PushServerInitialMetadata(std::move(*md));
|
334
|
-
} else {
|
335
|
-
call_filters().NoServerInitialMetadata();
|
336
|
-
return Immediate<StatusFlag>(Success{});
|
337
|
-
}
|
338
|
-
}
|
339
|
-
|
340
|
-
Promise<bool> WasCancelled() override {
|
341
|
-
return call_filters().WasCancelled();
|
342
|
-
}
|
343
|
-
|
344
|
-
ClientMetadata& UnprocessedClientInitialMetadata() override {
|
345
|
-
return *call_filters().unprocessed_client_initial_metadata();
|
346
|
-
}
|
347
|
-
|
348
|
-
// TODO(ctiller): re-evaluate legacy context apis
|
349
|
-
grpc_call_context_element& legacy_context(grpc_context_index index) const {
|
350
|
-
return legacy_context_[index];
|
177
|
+
});
|
351
178
|
}
|
352
179
|
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
180
|
+
// Wrap a promise so that if the call completes that promise is cancelled.
|
181
|
+
template <typename Promise>
|
182
|
+
auto UntilCallCompletes(Promise promise) {
|
183
|
+
using Result = PromiseResult<Promise>;
|
184
|
+
return PrioritizedRace(std::move(promise), Map(WasCancelled(), [](bool) {
|
185
|
+
return FailureStatusCast<Result>(Failure{});
|
186
|
+
}));
|
357
187
|
}
|
358
188
|
|
359
|
-
|
360
|
-
|
361
|
-
|
189
|
+
template <typename PromiseFactory>
|
190
|
+
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
191
|
+
PromiseFactory promise_factory) {
|
192
|
+
SpawnGuarded(name, [this, promise_factory]() mutable {
|
193
|
+
return UntilCallCompletes(promise_factory());
|
194
|
+
});
|
362
195
|
}
|
363
196
|
|
364
197
|
private:
|
365
198
|
friend class Arena;
|
366
199
|
CallSpine(ClientMetadataHandle client_initial_metadata,
|
367
200
|
grpc_event_engine::experimental::EventEngine* event_engine,
|
368
|
-
Arena
|
369
|
-
RefCountedPtr<CallArenaAllocator> call_arena_allocator,
|
370
|
-
grpc_call_context_element* legacy_context)
|
201
|
+
RefCountedPtr<Arena> arena)
|
371
202
|
: Party(1),
|
203
|
+
arena_(std::move(arena)),
|
372
204
|
call_filters_(std::move(client_initial_metadata)),
|
373
|
-
|
374
|
-
event_engine_(event_engine),
|
375
|
-
call_arena_allocator_if_arena_is_owned_(
|
376
|
-
std::move(call_arena_allocator)) {
|
377
|
-
if (legacy_context == nullptr) {
|
378
|
-
legacy_context_ = static_cast<grpc_call_context_element*>(
|
379
|
-
arena->Alloc(sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT));
|
380
|
-
memset(legacy_context_, 0,
|
381
|
-
sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT);
|
382
|
-
legacy_context_is_owned_ = true;
|
383
|
-
} else {
|
384
|
-
legacy_context_ = legacy_context;
|
385
|
-
legacy_context_is_owned_ = false;
|
386
|
-
}
|
387
|
-
}
|
205
|
+
event_engine_(event_engine) {}
|
388
206
|
|
389
|
-
class ScopedContext
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
grpc_event_engine::experimental::EventEngine>,
|
394
|
-
public promise_detail::Context<grpc_call_context_element> {
|
207
|
+
class ScopedContext : public ScopedActivity,
|
208
|
+
public promise_detail::Context<Arena>,
|
209
|
+
public promise_detail::Context<
|
210
|
+
grpc_event_engine::experimental::EventEngine> {
|
395
211
|
public:
|
396
212
|
explicit ScopedContext(CallSpine* spine)
|
397
213
|
: ScopedActivity(spine),
|
398
|
-
Context<Arena>(spine->arena_),
|
214
|
+
Context<Arena>(spine->arena_.get()),
|
399
215
|
Context<grpc_event_engine::experimental::EventEngine>(
|
400
|
-
spine->event_engine())
|
401
|
-
Context<grpc_call_context_element>(spine->legacy_context_) {}
|
216
|
+
spine->event_engine()) {}
|
402
217
|
};
|
403
218
|
|
404
219
|
bool RunParty() override {
|
@@ -407,35 +222,27 @@ class CallSpine final : public CallSpineInterface, public Party {
|
|
407
222
|
}
|
408
223
|
|
409
224
|
void PartyOver() override {
|
410
|
-
|
411
|
-
RefCountedPtr<CallArenaAllocator> call_arena_allocator_if_arena_is_owned =
|
412
|
-
std::move(call_arena_allocator_if_arena_is_owned_);
|
225
|
+
auto arena = arena_;
|
413
226
|
{
|
414
227
|
ScopedContext context(this);
|
415
228
|
CancelRemainingParticipants();
|
416
|
-
|
229
|
+
arena->DestroyManagedNewObjects();
|
417
230
|
}
|
418
231
|
this->~CallSpine();
|
419
|
-
if (call_arena_allocator_if_arena_is_owned != nullptr) {
|
420
|
-
call_arena_allocator_if_arena_is_owned->Destroy(a);
|
421
|
-
}
|
422
232
|
}
|
423
233
|
|
234
|
+
const RefCountedPtr<Arena> arena_;
|
424
235
|
// Call filters/pipes part of the spine
|
425
236
|
CallFilters call_filters_;
|
426
|
-
Arena* const arena_;
|
427
237
|
// Event engine associated with this call
|
428
238
|
grpc_event_engine::experimental::EventEngine* const event_engine_;
|
429
|
-
|
430
|
-
// TODO(ctiller): remove
|
431
|
-
grpc_call_context_element* legacy_context_;
|
432
|
-
RefCountedPtr<CallArenaAllocator> call_arena_allocator_if_arena_is_owned_;
|
433
|
-
bool legacy_context_is_owned_;
|
239
|
+
absl::AnyInvocable<void()> on_done_{nullptr};
|
434
240
|
};
|
435
241
|
|
436
242
|
class CallInitiator {
|
437
243
|
public:
|
438
|
-
|
244
|
+
CallInitiator() = default;
|
245
|
+
explicit CallInitiator(RefCountedPtr<CallSpine> spine)
|
439
246
|
: spine_(std::move(spine)) {}
|
440
247
|
|
441
248
|
template <typename Promise>
|
@@ -459,8 +266,9 @@ class CallInitiator {
|
|
459
266
|
return spine_->PullServerTrailingMetadata();
|
460
267
|
}
|
461
268
|
|
462
|
-
void Cancel() {
|
463
|
-
|
269
|
+
void Cancel(absl::Status error = absl::CancelledError()) {
|
270
|
+
CHECK(!error.ok());
|
271
|
+
auto status = ServerMetadataFromStatus(error);
|
464
272
|
status->Set(GrpcCallWasCancelled(), true);
|
465
273
|
spine_->PushServerTrailingMetadata(std::move(status));
|
466
274
|
}
|
@@ -472,6 +280,12 @@ class CallInitiator {
|
|
472
280
|
spine_->SpawnGuarded(name, std::move(promise_factory));
|
473
281
|
}
|
474
282
|
|
283
|
+
template <typename PromiseFactory>
|
284
|
+
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
285
|
+
PromiseFactory promise_factory) {
|
286
|
+
spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory));
|
287
|
+
}
|
288
|
+
|
475
289
|
template <typename PromiseFactory>
|
476
290
|
void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) {
|
477
291
|
spine_->SpawnInfallible(name, std::move(promise_factory));
|
@@ -479,18 +293,22 @@ class CallInitiator {
|
|
479
293
|
|
480
294
|
template <typename PromiseFactory>
|
481
295
|
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
482
|
-
return spine_->
|
296
|
+
return spine_->SpawnWaitable(name, std::move(promise_factory));
|
483
297
|
}
|
484
298
|
|
485
299
|
Arena* arena() { return spine_->arena(); }
|
486
300
|
|
301
|
+
grpc_event_engine::experimental::EventEngine* event_engine() const {
|
302
|
+
return spine_->event_engine();
|
303
|
+
}
|
304
|
+
|
487
305
|
private:
|
488
|
-
RefCountedPtr<
|
306
|
+
RefCountedPtr<CallSpine> spine_;
|
489
307
|
};
|
490
308
|
|
491
309
|
class CallHandler {
|
492
310
|
public:
|
493
|
-
explicit CallHandler(RefCountedPtr<
|
311
|
+
explicit CallHandler(RefCountedPtr<CallSpine> spine)
|
494
312
|
: spine_(std::move(spine)) {}
|
495
313
|
|
496
314
|
auto PullClientInitialMetadata() {
|
@@ -518,12 +336,20 @@ class CallHandler {
|
|
518
336
|
|
519
337
|
auto PullMessage() { return spine_->PullClientToServerMessage(); }
|
520
338
|
|
339
|
+
auto WasCancelled() { return spine_->WasCancelled(); }
|
340
|
+
|
521
341
|
template <typename PromiseFactory>
|
522
342
|
void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory,
|
523
343
|
DebugLocation whence = {}) {
|
524
344
|
spine_->SpawnGuarded(name, std::move(promise_factory), whence);
|
525
345
|
}
|
526
346
|
|
347
|
+
template <typename PromiseFactory>
|
348
|
+
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
349
|
+
PromiseFactory promise_factory) {
|
350
|
+
spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory));
|
351
|
+
}
|
352
|
+
|
527
353
|
template <typename PromiseFactory>
|
528
354
|
void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) {
|
529
355
|
spine_->SpawnInfallible(name, std::move(promise_factory));
|
@@ -531,27 +357,22 @@ class CallHandler {
|
|
531
357
|
|
532
358
|
template <typename PromiseFactory>
|
533
359
|
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
534
|
-
return spine_->
|
360
|
+
return spine_->SpawnWaitable(name, std::move(promise_factory));
|
535
361
|
}
|
536
362
|
|
537
363
|
Arena* arena() { return spine_->arena(); }
|
538
364
|
|
539
|
-
grpc_event_engine::experimental::EventEngine* event_engine() {
|
540
|
-
return
|
541
|
-
}
|
542
|
-
|
543
|
-
// TODO(ctiller): re-evaluate this API
|
544
|
-
grpc_call_context_element* legacy_context() {
|
545
|
-
return DownCast<CallSpine*>(spine_.get())->legacy_context();
|
365
|
+
grpc_event_engine::experimental::EventEngine* event_engine() const {
|
366
|
+
return spine_->event_engine();
|
546
367
|
}
|
547
368
|
|
548
369
|
private:
|
549
|
-
RefCountedPtr<
|
370
|
+
RefCountedPtr<CallSpine> spine_;
|
550
371
|
};
|
551
372
|
|
552
373
|
class UnstartedCallHandler {
|
553
374
|
public:
|
554
|
-
explicit UnstartedCallHandler(RefCountedPtr<
|
375
|
+
explicit UnstartedCallHandler(RefCountedPtr<CallSpine> spine)
|
555
376
|
: spine_(std::move(spine)) {}
|
556
377
|
|
557
378
|
void PushServerTrailingMetadata(ServerMetadataHandle status) {
|
@@ -571,6 +392,12 @@ class UnstartedCallHandler {
|
|
571
392
|
spine_->SpawnGuarded(name, std::move(promise_factory), whence);
|
572
393
|
}
|
573
394
|
|
395
|
+
template <typename PromiseFactory>
|
396
|
+
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
397
|
+
PromiseFactory promise_factory) {
|
398
|
+
spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory));
|
399
|
+
}
|
400
|
+
|
574
401
|
template <typename PromiseFactory>
|
575
402
|
void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) {
|
576
403
|
spine_->SpawnInfallible(name, std::move(promise_factory));
|
@@ -578,29 +405,28 @@ class UnstartedCallHandler {
|
|
578
405
|
|
579
406
|
template <typename PromiseFactory>
|
580
407
|
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
581
|
-
return spine_->
|
408
|
+
return spine_->SpawnWaitable(name, std::move(promise_factory));
|
582
409
|
}
|
583
410
|
|
584
411
|
ClientMetadata& UnprocessedClientInitialMetadata() {
|
585
412
|
return spine_->UnprocessedClientInitialMetadata();
|
586
413
|
}
|
587
414
|
|
588
|
-
|
589
|
-
|
590
|
-
|
415
|
+
// Helper for the very common situation in tests where we want to start a call
|
416
|
+
// with an empty filter stack.
|
417
|
+
CallHandler StartWithEmptyFilterStack() {
|
418
|
+
return StartCall(CallFilters::StackBuilder().Build());
|
591
419
|
}
|
592
420
|
|
593
421
|
CallHandler StartCall(RefCountedPtr<CallFilters::Stack> call_filters) {
|
594
|
-
|
595
|
-
->call_filters()
|
596
|
-
.SetStack(std::move(call_filters));
|
422
|
+
spine_->call_filters().SetStack(std::move(call_filters));
|
597
423
|
return CallHandler(std::move(spine_));
|
598
424
|
}
|
599
425
|
|
600
426
|
Arena* arena() { return spine_->arena(); }
|
601
427
|
|
602
428
|
private:
|
603
|
-
RefCountedPtr<
|
429
|
+
RefCountedPtr<CallSpine> spine_;
|
604
430
|
};
|
605
431
|
|
606
432
|
struct CallInitiatorAndHandler {
|
@@ -610,9 +436,8 @@ struct CallInitiatorAndHandler {
|
|
610
436
|
|
611
437
|
CallInitiatorAndHandler MakeCallPair(
|
612
438
|
ClientMetadataHandle client_initial_metadata,
|
613
|
-
grpc_event_engine::experimental::EventEngine* event_engine,
|
614
|
-
RefCountedPtr<
|
615
|
-
grpc_call_context_element* legacy_context);
|
439
|
+
grpc_event_engine::experimental::EventEngine* event_engine,
|
440
|
+
RefCountedPtr<Arena> arena);
|
616
441
|
|
617
442
|
template <typename CallHalf>
|
618
443
|
auto OutgoingMessages(CallHalf h) {
|