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
@@ -32,6 +32,7 @@
|
|
32
32
|
#include "absl/container/inlined_vector.h"
|
33
33
|
#include "absl/functional/function_ref.h"
|
34
34
|
#include "absl/log/check.h"
|
35
|
+
#include "absl/log/log.h"
|
35
36
|
#include "absl/meta/type_traits.h"
|
36
37
|
#include "absl/status/status.h"
|
37
38
|
#include "absl/strings/string_view.h"
|
@@ -39,14 +40,12 @@
|
|
39
40
|
|
40
41
|
#include <grpc/event_engine/event_engine.h>
|
41
42
|
#include <grpc/grpc.h>
|
42
|
-
#include <grpc/support/log.h>
|
43
43
|
#include <grpc/support/port_platform.h>
|
44
44
|
|
45
45
|
#include "src/core/lib/channel/call_finalization.h"
|
46
46
|
#include "src/core/lib/channel/channel_args.h"
|
47
47
|
#include "src/core/lib/channel/channel_fwd.h"
|
48
48
|
#include "src/core/lib/channel/channel_stack.h"
|
49
|
-
#include "src/core/lib/channel/context.h"
|
50
49
|
#include "src/core/lib/event_engine/default_event_engine.h"
|
51
50
|
#include "src/core/lib/event_engine/event_engine_context.h" // IWYU pragma: keep
|
52
51
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -59,6 +58,7 @@
|
|
59
58
|
#include "src/core/lib/iomgr/polling_entity.h"
|
60
59
|
#include "src/core/lib/promise/activity.h"
|
61
60
|
#include "src/core/lib/promise/arena_promise.h"
|
61
|
+
#include "src/core/lib/promise/cancel_callback.h"
|
62
62
|
#include "src/core/lib/promise/context.h"
|
63
63
|
#include "src/core/lib/promise/pipe.h"
|
64
64
|
#include "src/core/lib/promise/poll.h"
|
@@ -75,12 +75,6 @@
|
|
75
75
|
|
76
76
|
namespace grpc_core {
|
77
77
|
|
78
|
-
// HACK: If a filter has this type as a base class it will be skipped in
|
79
|
-
// v3 filter stacks. This is a temporary measure to allow the v3 filter stack
|
80
|
-
// to be bought up whilst some tests inadvertently rely on hard to convert
|
81
|
-
// filters.
|
82
|
-
class HackyHackyHackySkipInV3FilterStacks {};
|
83
|
-
|
84
78
|
class ChannelFilter {
|
85
79
|
public:
|
86
80
|
class Args {
|
@@ -354,31 +348,56 @@ template <typename Promise, typename Derived>
|
|
354
348
|
auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
355
349
|
FilterCallData<Derived>* call_data) {
|
356
350
|
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
357
|
-
return Map(std::move(x),
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
351
|
+
return OnCancel(Map(std::move(x),
|
352
|
+
[call_data](ServerMetadataHandle md) {
|
353
|
+
auto status =
|
354
|
+
call_data->call.OnServerTrailingMetadata(*md);
|
355
|
+
if (!status.ok()) {
|
356
|
+
return ServerMetadataFromStatus(status);
|
357
|
+
}
|
358
|
+
return md;
|
359
|
+
}),
|
360
|
+
[call_data]() {
|
361
|
+
grpc_metadata_batch b;
|
362
|
+
b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
|
363
|
+
b.Set(GrpcCallWasCancelled(), true);
|
364
|
+
call_data->call.OnServerTrailingMetadata(b).IgnoreError();
|
365
|
+
});
|
362
366
|
}
|
363
367
|
|
364
368
|
template <typename Promise, typename Derived>
|
365
369
|
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
366
370
|
FilterCallData<Derived>* call_data) {
|
367
371
|
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
368
|
-
return Map(std::move(x),
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
+
return OnCancel(Map(std::move(x),
|
373
|
+
[call_data](ServerMetadataHandle md) {
|
374
|
+
call_data->call.OnServerTrailingMetadata(*md);
|
375
|
+
return md;
|
376
|
+
}),
|
377
|
+
[call_data]() {
|
378
|
+
grpc_metadata_batch b;
|
379
|
+
b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
|
380
|
+
b.Set(GrpcCallWasCancelled(), true);
|
381
|
+
call_data->call.OnServerTrailingMetadata(b);
|
382
|
+
});
|
372
383
|
}
|
373
384
|
|
374
385
|
template <typename Promise, typename Derived>
|
375
386
|
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
|
376
387
|
FilterCallData<Derived>* call_data) {
|
377
388
|
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
378
|
-
return
|
379
|
-
|
380
|
-
|
381
|
-
|
389
|
+
return OnCancel(
|
390
|
+
Map(std::move(x),
|
391
|
+
[call_data](ServerMetadataHandle md) {
|
392
|
+
call_data->call.OnServerTrailingMetadata(*md, call_data->channel);
|
393
|
+
return md;
|
394
|
+
}),
|
395
|
+
[call_data]() {
|
396
|
+
grpc_metadata_batch b;
|
397
|
+
b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
|
398
|
+
b.Set(GrpcCallWasCancelled(), true);
|
399
|
+
call_data->call.OnServerTrailingMetadata(b, call_data->channel);
|
400
|
+
});
|
382
401
|
}
|
383
402
|
|
384
403
|
template <typename Interceptor, typename Derived, typename SfinaeVoid = void>
|
@@ -492,247 +511,96 @@ auto RunCall(Interceptor interceptor, CallArgs call_args,
|
|
492
511
|
std::move(call_args), std::move(next_promise_factory), call_data);
|
493
512
|
}
|
494
513
|
|
495
|
-
inline void InterceptClientToServerMessage(const NoInterceptor*, void*,
|
496
|
-
const CallArgs&) {}
|
497
|
-
|
498
|
-
template <typename Derived>
|
499
|
-
inline void InterceptClientToServerMessage(
|
500
|
-
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
|
501
|
-
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
|
502
|
-
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
503
|
-
call_args.client_to_server_messages->InterceptAndMap(
|
504
|
-
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
505
|
-
auto return_md = call_data->call.OnClientToServerMessage(*msg);
|
506
|
-
if (return_md == nullptr) return std::move(msg);
|
507
|
-
if (call_data->error_latch.is_set()) return absl::nullopt;
|
508
|
-
call_data->error_latch.Set(std::move(return_md));
|
509
|
-
return absl::nullopt;
|
510
|
-
});
|
511
|
-
}
|
512
|
-
|
513
|
-
template <typename Derived>
|
514
|
-
inline void InterceptClientToServerMessage(
|
515
|
-
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
|
516
|
-
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
|
517
|
-
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
518
|
-
call_args.client_to_server_messages->InterceptAndMap(
|
519
|
-
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
520
|
-
auto return_md =
|
521
|
-
call_data->call.OnClientToServerMessage(*msg, call_data->channel);
|
522
|
-
if (return_md == nullptr) return std::move(msg);
|
523
|
-
if (call_data->error_latch.is_set()) return absl::nullopt;
|
524
|
-
call_data->error_latch.Set(std::move(return_md));
|
525
|
-
return absl::nullopt;
|
526
|
-
});
|
527
|
-
}
|
528
|
-
|
529
|
-
template <typename Derived>
|
530
|
-
inline void InterceptClientToServerMessage(
|
531
|
-
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
|
532
|
-
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
|
533
|
-
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
534
|
-
call_args.client_to_server_messages->InterceptAndMap(
|
535
|
-
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
536
|
-
return call_data->call.OnClientToServerMessage(std::move(msg),
|
537
|
-
call_data->channel);
|
538
|
-
});
|
539
|
-
}
|
540
|
-
|
541
514
|
template <typename Derived>
|
542
|
-
inline
|
543
|
-
|
544
|
-
FilterCallData<Derived>* call_data, const CallArgs&
|
515
|
+
inline auto InterceptClientToServerMessageHandler(
|
516
|
+
void (Derived::Call::*fn)(const Message&),
|
517
|
+
FilterCallData<Derived>* call_data, const CallArgs&) {
|
545
518
|
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
if (r.ok()) return std::move(*r);
|
551
|
-
if (call_data->error_latch.is_set()) return absl::nullopt;
|
552
|
-
call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
|
553
|
-
return absl::nullopt;
|
554
|
-
});
|
519
|
+
return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
520
|
+
call_data->call.OnClientToServerMessage(*msg);
|
521
|
+
return std::move(msg);
|
522
|
+
};
|
555
523
|
}
|
556
524
|
|
557
|
-
inline void InterceptClientToServerMessage(const NoInterceptor*, void*, void*,
|
558
|
-
CallSpineInterface*) {}
|
559
|
-
|
560
525
|
template <typename Derived>
|
561
|
-
inline
|
526
|
+
inline auto InterceptClientToServerMessageHandler(
|
562
527
|
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
|
563
|
-
|
528
|
+
FilterCallData<Derived>* call_data, const CallArgs&) {
|
564
529
|
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
530
|
+
return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
531
|
+
auto return_md = call_data->call.OnClientToServerMessage(*msg);
|
532
|
+
if (return_md == nullptr) return std::move(msg);
|
533
|
+
if (call_data->error_latch.is_set()) return absl::nullopt;
|
534
|
+
call_data->error_latch.Set(std::move(return_md));
|
535
|
+
return absl::nullopt;
|
536
|
+
};
|
572
537
|
}
|
573
538
|
|
574
539
|
template <typename Derived>
|
575
|
-
inline
|
540
|
+
inline auto InterceptClientToServerMessageHandler(
|
576
541
|
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
|
577
|
-
|
578
|
-
PipeBasedCallSpine* call_spine) {
|
542
|
+
FilterCallData<Derived>* call_data, const CallArgs&) {
|
579
543
|
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
544
|
+
return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
545
|
+
auto return_md =
|
546
|
+
call_data->call.OnClientToServerMessage(*msg, call_data->channel);
|
547
|
+
if (return_md == nullptr) return std::move(msg);
|
548
|
+
if (call_data->error_latch.is_set()) return absl::nullopt;
|
549
|
+
call_data->error_latch.Set(std::move(return_md));
|
550
|
+
return absl::nullopt;
|
551
|
+
};
|
588
552
|
}
|
589
553
|
|
590
554
|
template <typename Derived>
|
591
|
-
inline
|
555
|
+
inline auto InterceptClientToServerMessageHandler(
|
592
556
|
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
|
593
|
-
|
594
|
-
PipeBasedCallSpine* call_spine) {
|
557
|
+
FilterCallData<Derived>* call_data, const CallArgs&) {
|
595
558
|
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
559
|
+
return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
560
|
+
return call_data->call.OnClientToServerMessage(std::move(msg),
|
561
|
+
call_data->channel);
|
562
|
+
};
|
600
563
|
}
|
601
564
|
|
602
565
|
template <typename Derived>
|
603
|
-
inline
|
566
|
+
inline auto InterceptClientToServerMessageHandler(
|
604
567
|
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
|
605
|
-
|
606
|
-
PipeBasedCallSpine* call_spine) {
|
568
|
+
FilterCallData<Derived>* call_data, const CallArgs&) {
|
607
569
|
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
});
|
617
|
-
}
|
618
|
-
|
619
|
-
inline void InterceptClientInitialMetadata(const NoInterceptor*, void*, void*,
|
620
|
-
PipeBasedCallSpine*) {}
|
621
|
-
|
622
|
-
template <typename Derived>
|
623
|
-
inline void InterceptClientInitialMetadata(
|
624
|
-
void (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call,
|
625
|
-
Derived*, PipeBasedCallSpine* call_spine) {
|
626
|
-
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
|
627
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
628
|
-
[call](ClientMetadataHandle md) {
|
629
|
-
call->OnClientInitialMetadata(*md);
|
630
|
-
return md;
|
631
|
-
});
|
632
|
-
}
|
633
|
-
|
634
|
-
template <typename Derived>
|
635
|
-
inline void InterceptClientInitialMetadata(
|
636
|
-
void (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
|
637
|
-
typename Derived::Call* call, Derived* channel,
|
638
|
-
PipeBasedCallSpine* call_spine) {
|
639
|
-
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
|
640
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
641
|
-
[call, channel](ClientMetadataHandle md) {
|
642
|
-
call->OnClientInitialMetadata(*md, channel);
|
643
|
-
return md;
|
644
|
-
});
|
645
|
-
}
|
646
|
-
|
647
|
-
template <typename Derived>
|
648
|
-
inline void InterceptClientInitialMetadata(
|
649
|
-
ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md),
|
650
|
-
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
|
651
|
-
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
|
652
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
653
|
-
[call_spine,
|
654
|
-
call](ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
|
655
|
-
auto return_md = call->OnClientInitialMetadata(*md);
|
656
|
-
if (return_md == nullptr) return std::move(md);
|
657
|
-
call_spine->PushServerTrailingMetadata(std::move(return_md));
|
658
|
-
return absl::nullopt;
|
659
|
-
});
|
570
|
+
return [call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
571
|
+
auto r = call_data->call.OnClientToServerMessage(std::move(msg),
|
572
|
+
call_data->channel);
|
573
|
+
if (r.ok()) return std::move(*r);
|
574
|
+
if (call_data->error_latch.is_set()) return absl::nullopt;
|
575
|
+
call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
|
576
|
+
return absl::nullopt;
|
577
|
+
};
|
660
578
|
}
|
661
579
|
|
662
|
-
template <typename Derived>
|
663
|
-
inline void
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
670
|
-
[call_spine, call, channel](
|
671
|
-
ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
|
672
|
-
auto return_md = call->OnClientInitialMetadata(*md, channel);
|
673
|
-
if (return_md == nullptr) return std::move(md);
|
674
|
-
call_spine->PushServerTrailingMetadata(std::move(return_md));
|
675
|
-
return absl::nullopt;
|
676
|
-
});
|
580
|
+
template <typename Derived, typename HookFunction>
|
581
|
+
inline void InterceptClientToServerMessage(HookFunction hook,
|
582
|
+
const NoInterceptor*,
|
583
|
+
FilterCallData<Derived>* call_data,
|
584
|
+
const CallArgs& call_args) {
|
585
|
+
call_args.client_to_server_messages->InterceptAndMap(
|
586
|
+
InterceptClientToServerMessageHandler(hook, call_data, call_args));
|
677
587
|
}
|
678
588
|
|
679
|
-
template <typename Derived>
|
680
|
-
inline void
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
auto status = call->OnClientInitialMetadata(*md);
|
688
|
-
if (status.ok()) return std::move(md);
|
689
|
-
call_spine->PushServerTrailingMetadata(
|
690
|
-
ServerMetadataFromStatus(status));
|
691
|
-
return absl::nullopt;
|
692
|
-
});
|
589
|
+
template <typename Derived, typename HookFunction>
|
590
|
+
inline void InterceptClientToServerMessage(HookFunction hook,
|
591
|
+
void (Derived::Call::*)(),
|
592
|
+
FilterCallData<Derived>* call_data,
|
593
|
+
const CallArgs& call_args) {
|
594
|
+
call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
|
595
|
+
InterceptClientToServerMessageHandler(hook, call_data, call_args),
|
596
|
+
[call_data]() { call_data->call.OnClientToServerHalfClose(); });
|
693
597
|
}
|
694
598
|
|
695
599
|
template <typename Derived>
|
696
|
-
inline void
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
|
701
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
702
|
-
[call_spine, call, channel](
|
703
|
-
ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
|
704
|
-
auto status = call->OnClientInitialMetadata(*md, channel);
|
705
|
-
if (status.ok()) return std::move(md);
|
706
|
-
call_spine->PushServerTrailingMetadata(
|
707
|
-
ServerMetadataFromStatus(status));
|
708
|
-
return absl::nullopt;
|
709
|
-
});
|
710
|
-
}
|
711
|
-
|
712
|
-
// Returning a promise that resolves to something that can be cast to
|
713
|
-
// ServerMetadataHandle also counts
|
714
|
-
template <typename Promise, typename Derived>
|
715
|
-
absl::void_t<decltype(StatusCast<ServerMetadataHandle>(
|
716
|
-
std::declval<PromiseResult<Promise>>))>
|
717
|
-
InterceptClientInitialMetadata(Promise (Derived::Call::*promise_factory)(
|
718
|
-
ClientMetadata& md, Derived* channel),
|
719
|
-
typename Derived::Call* call, Derived* channel,
|
720
|
-
PipeBasedCallSpine* call_spine) {
|
721
|
-
DCHECK(promise_factory == &Derived::Call::OnClientInitialMetadata);
|
722
|
-
call_spine->client_initial_metadata().receiver.InterceptAndMap(
|
723
|
-
[call, call_spine, channel](ClientMetadataHandle md) {
|
724
|
-
ClientMetadata& md_ref = *md;
|
725
|
-
return Map(call->OnClientInitialMetadata(md_ref, channel),
|
726
|
-
[md = std::move(md),
|
727
|
-
call_spine](PromiseResult<Promise> status) mutable
|
728
|
-
-> absl::optional<ClientMetadataHandle> {
|
729
|
-
if (IsStatusOk(status)) return std::move(md);
|
730
|
-
call_spine->PushServerTrailingMetadata(
|
731
|
-
StatusCast<ServerMetadataHandle>(std::move(status)));
|
732
|
-
return absl::nullopt;
|
733
|
-
});
|
734
|
-
});
|
735
|
-
}
|
600
|
+
inline void InterceptClientToServerMessage(const NoInterceptor*,
|
601
|
+
const NoInterceptor*,
|
602
|
+
FilterCallData<Derived>*,
|
603
|
+
const CallArgs&) {}
|
736
604
|
|
737
605
|
template <typename CallArgs>
|
738
606
|
inline void InterceptServerInitialMetadata(const NoInterceptor*, void*,
|
@@ -797,70 +665,21 @@ inline void InterceptServerInitialMetadata(
|
|
797
665
|
});
|
798
666
|
}
|
799
667
|
|
800
|
-
inline void
|
801
|
-
|
802
|
-
|
803
|
-
template <typename Derived>
|
804
|
-
inline void InterceptServerInitialMetadata(
|
805
|
-
void (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call,
|
806
|
-
Derived*, PipeBasedCallSpine* call_spine) {
|
807
|
-
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
|
808
|
-
call_spine->server_initial_metadata().sender.InterceptAndMap(
|
809
|
-
[call](ServerMetadataHandle md) {
|
810
|
-
call->OnServerInitialMetadata(*md);
|
811
|
-
return md;
|
812
|
-
});
|
813
|
-
}
|
814
|
-
|
815
|
-
template <typename Derived>
|
816
|
-
inline void InterceptServerInitialMetadata(
|
817
|
-
absl::Status (Derived::Call::*fn)(ServerMetadata&),
|
818
|
-
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
|
819
|
-
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
|
820
|
-
call_spine->server_initial_metadata().sender.InterceptAndMap(
|
821
|
-
[call, call_spine](
|
822
|
-
ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
|
823
|
-
auto status = call->OnServerInitialMetadata(*md);
|
824
|
-
if (status.ok()) return std::move(md);
|
825
|
-
call_spine->PushServerTrailingMetadata(
|
826
|
-
ServerMetadataFromStatus(status));
|
827
|
-
return absl::nullopt;
|
828
|
-
});
|
829
|
-
}
|
830
|
-
|
831
|
-
template <typename Derived>
|
832
|
-
inline void InterceptServerInitialMetadata(
|
833
|
-
void (Derived::Call::*fn)(ServerMetadata&, Derived*),
|
834
|
-
typename Derived::Call* call, Derived* channel,
|
835
|
-
PipeBasedCallSpine* call_spine) {
|
836
|
-
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
|
837
|
-
call_spine->server_initial_metadata().sender.InterceptAndMap(
|
838
|
-
[call, channel](ServerMetadataHandle md) {
|
839
|
-
call->OnServerInitialMetadata(*md, channel);
|
840
|
-
return md;
|
841
|
-
});
|
842
|
-
}
|
668
|
+
inline void InterceptServerToClientMessage(const NoInterceptor*, void*,
|
669
|
+
const CallArgs&) {}
|
843
670
|
|
844
671
|
template <typename Derived>
|
845
|
-
inline void
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
auto status = call->OnServerInitialMetadata(*md, channel);
|
854
|
-
if (status.ok()) return std::move(md);
|
855
|
-
call_spine->PullServerTrailingMetadata(
|
856
|
-
ServerMetadataFromStatus(status));
|
857
|
-
return absl::nullopt;
|
672
|
+
inline void InterceptServerToClientMessage(
|
673
|
+
void (Derived::Call::*fn)(const Message&),
|
674
|
+
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
|
675
|
+
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
|
676
|
+
call_args.server_to_client_messages->InterceptAndMap(
|
677
|
+
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
|
678
|
+
call_data->call.OnServerToClientMessage(*msg);
|
679
|
+
return std::move(msg);
|
858
680
|
});
|
859
681
|
}
|
860
682
|
|
861
|
-
inline void InterceptServerToClientMessage(const NoInterceptor*, void*,
|
862
|
-
const CallArgs&) {}
|
863
|
-
|
864
683
|
template <typename Derived>
|
865
684
|
inline void InterceptServerToClientMessage(
|
866
685
|
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
|
@@ -920,94 +739,6 @@ inline void InterceptServerToClientMessage(
|
|
920
739
|
});
|
921
740
|
}
|
922
741
|
|
923
|
-
inline void InterceptServerToClientMessage(const NoInterceptor*, void*, void*,
|
924
|
-
CallSpineInterface*) {}
|
925
|
-
|
926
|
-
template <typename Derived>
|
927
|
-
inline void InterceptServerToClientMessage(
|
928
|
-
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
|
929
|
-
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
|
930
|
-
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
|
931
|
-
call_spine->server_to_client_messages().sender.InterceptAndMap(
|
932
|
-
[call, call_spine](MessageHandle msg) -> absl::optional<MessageHandle> {
|
933
|
-
auto return_md = call->OnServerToClientMessage(*msg);
|
934
|
-
if (return_md == nullptr) return std::move(msg);
|
935
|
-
call_spine->PushServerTrailingMetadata(std::move(return_md));
|
936
|
-
return absl::nullopt;
|
937
|
-
});
|
938
|
-
}
|
939
|
-
|
940
|
-
template <typename Derived>
|
941
|
-
inline void InterceptServerToClientMessage(
|
942
|
-
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
|
943
|
-
typename Derived::Call* call, Derived* channel,
|
944
|
-
PipeBasedCallSpine* call_spine) {
|
945
|
-
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
|
946
|
-
call_spine->server_to_client_messages().sender.InterceptAndMap(
|
947
|
-
[call, call_spine,
|
948
|
-
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
|
949
|
-
auto return_md = call->OnServerToClientMessage(*msg, channel);
|
950
|
-
if (return_md == nullptr) return std::move(msg);
|
951
|
-
call_spine->PushServerTrailingMetadata(std::move(return_md));
|
952
|
-
return absl::nullopt;
|
953
|
-
});
|
954
|
-
}
|
955
|
-
|
956
|
-
template <typename Derived>
|
957
|
-
inline void InterceptServerToClientMessage(
|
958
|
-
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
|
959
|
-
typename Derived::Call* call, Derived* channel,
|
960
|
-
PipeBasedCallSpine* call_spine) {
|
961
|
-
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
|
962
|
-
call_spine->server_to_client_messages().sender.InterceptAndMap(
|
963
|
-
[call, channel](MessageHandle msg) {
|
964
|
-
return call->OnServerToClientMessage(std::move(msg), channel);
|
965
|
-
});
|
966
|
-
}
|
967
|
-
|
968
|
-
template <typename Derived>
|
969
|
-
inline void InterceptServerToClientMessage(
|
970
|
-
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
|
971
|
-
typename Derived::Call* call, Derived* channel,
|
972
|
-
PipeBasedCallSpine* call_spine) {
|
973
|
-
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
|
974
|
-
call_spine->server_to_client_messages().sender.InterceptAndMap(
|
975
|
-
[call, call_spine,
|
976
|
-
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
|
977
|
-
auto r = call->OnServerToClientMessage(std::move(msg), channel);
|
978
|
-
if (r.ok()) return std::move(*r);
|
979
|
-
call_spine->PushServerTrailingMetadata(
|
980
|
-
ServerMetadataFromStatus(r.status()));
|
981
|
-
return absl::nullopt;
|
982
|
-
});
|
983
|
-
}
|
984
|
-
|
985
|
-
inline void InterceptServerTrailingMetadata(const NoInterceptor*, void*, void*,
|
986
|
-
CallSpineInterface*) {}
|
987
|
-
|
988
|
-
template <typename Derived>
|
989
|
-
inline void InterceptServerTrailingMetadata(
|
990
|
-
void (Derived::Call::*)(ServerMetadata&), typename Derived::Call*, Derived*,
|
991
|
-
PipeBasedCallSpine*) {
|
992
|
-
gpr_log(GPR_ERROR,
|
993
|
-
"InterceptServerTrailingMetadata not available for call v2.5");
|
994
|
-
}
|
995
|
-
template <typename Derived>
|
996
|
-
inline void InterceptServerTrailingMetadata(
|
997
|
-
void (Derived::Call::*)(ServerMetadata&, Derived*), typename Derived::Call*,
|
998
|
-
Derived*, PipeBasedCallSpine*) {
|
999
|
-
gpr_log(GPR_ERROR,
|
1000
|
-
"InterceptServerTrailingMetadata not available for call v2.5");
|
1001
|
-
}
|
1002
|
-
|
1003
|
-
template <typename Derived>
|
1004
|
-
inline void InterceptServerTrailingMetadata(
|
1005
|
-
absl::Status (Derived::Call::*)(ServerMetadata&), typename Derived::Call*,
|
1006
|
-
Derived*, PipeBasedCallSpine*) {
|
1007
|
-
gpr_log(GPR_ERROR,
|
1008
|
-
"InterceptServerTrailingMetadata not available for call v2.5");
|
1009
|
-
}
|
1010
|
-
|
1011
742
|
inline void InterceptFinalize(const NoInterceptor*, void*, void*) {}
|
1012
743
|
|
1013
744
|
template <class Call>
|
@@ -1109,28 +840,6 @@ template <typename Derived>
|
|
1109
840
|
class ImplementChannelFilter : public ChannelFilter,
|
1110
841
|
public ImplementChannelFilterTag {
|
1111
842
|
public:
|
1112
|
-
// Natively construct a v3 call.
|
1113
|
-
void InitCall(CallSpineInterface* call_spine) {
|
1114
|
-
typename Derived::Call* call =
|
1115
|
-
GetContext<Arena>()
|
1116
|
-
->ManagedNew<promise_filter_detail::CallWrapper<Derived>>(
|
1117
|
-
static_cast<Derived*>(this));
|
1118
|
-
auto* c = DownCast<PipeBasedCallSpine*>(call_spine);
|
1119
|
-
auto* d = static_cast<Derived*>(this);
|
1120
|
-
promise_filter_detail::InterceptClientInitialMetadata(
|
1121
|
-
&Derived::Call::OnClientInitialMetadata, call, d, c);
|
1122
|
-
promise_filter_detail::InterceptClientToServerMessage(
|
1123
|
-
&Derived::Call::OnClientToServerMessage, call, d, c);
|
1124
|
-
promise_filter_detail::InterceptServerInitialMetadata(
|
1125
|
-
&Derived::Call::OnServerInitialMetadata, call, d, c);
|
1126
|
-
promise_filter_detail::InterceptServerToClientMessage(
|
1127
|
-
&Derived::Call::OnServerToClientMessage, call, d, c);
|
1128
|
-
promise_filter_detail::InterceptServerTrailingMetadata(
|
1129
|
-
&Derived::Call::OnServerTrailingMetadata, call, d, c);
|
1130
|
-
promise_filter_detail::InterceptFinalize(&Derived::Call::OnFinalize, d,
|
1131
|
-
call);
|
1132
|
-
}
|
1133
|
-
|
1134
843
|
// Polyfill for the original promise scheme.
|
1135
844
|
// Allows writing v3 filters that work with v2 stacks.
|
1136
845
|
// (and consequently also v1 stacks since we can polyfill back to that too).
|
@@ -1139,7 +848,8 @@ class ImplementChannelFilter : public ChannelFilter,
|
|
1139
848
|
auto* call = promise_filter_detail::MakeFilterCall<Derived>(
|
1140
849
|
static_cast<Derived*>(this));
|
1141
850
|
promise_filter_detail::InterceptClientToServerMessage(
|
1142
|
-
&Derived::Call::OnClientToServerMessage,
|
851
|
+
&Derived::Call::OnClientToServerMessage,
|
852
|
+
&Derived::Call::OnClientToServerHalfClose, call, call_args);
|
1143
853
|
promise_filter_detail::InterceptServerInitialMetadata(
|
1144
854
|
&Derived::Call::OnServerInitialMetadata, call, call_args);
|
1145
855
|
promise_filter_detail::InterceptServerToClientMessage(
|
@@ -1230,26 +940,22 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1230
940
|
|
1231
941
|
virtual void StartBatch(grpc_transport_stream_op_batch* batch) = 0;
|
1232
942
|
|
943
|
+
Call* call() { return arena_->GetContext<Call>(); }
|
944
|
+
|
1233
945
|
protected:
|
1234
|
-
class ScopedContext
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
public promise_detail::Context<
|
1240
|
-
grpc_event_engine::experimental::EventEngine>,
|
1241
|
-
public promise_detail::Context<CallContext> {
|
946
|
+
class ScopedContext : public promise_detail::Context<Arena>,
|
947
|
+
public promise_detail::Context<grpc_polling_entity>,
|
948
|
+
public promise_detail::Context<CallFinalization>,
|
949
|
+
public promise_detail::Context<
|
950
|
+
grpc_event_engine::experimental::EventEngine> {
|
1242
951
|
public:
|
1243
952
|
explicit ScopedContext(BaseCallData* call_data)
|
1244
953
|
: promise_detail::Context<Arena>(call_data->arena_),
|
1245
|
-
promise_detail::Context<grpc_call_context_element>(
|
1246
|
-
call_data->context_),
|
1247
954
|
promise_detail::Context<grpc_polling_entity>(
|
1248
955
|
call_data->pollent_.load(std::memory_order_acquire)),
|
1249
956
|
promise_detail::Context<CallFinalization>(&call_data->finalization_),
|
1250
957
|
promise_detail::Context<grpc_event_engine::experimental::EventEngine>(
|
1251
|
-
call_data->event_engine_)
|
1252
|
-
promise_detail::Context<CallContext>(call_data->call_context_) {}
|
958
|
+
call_data->event_engine_) {}
|
1253
959
|
};
|
1254
960
|
|
1255
961
|
class Flusher {
|
@@ -1595,8 +1301,6 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1595
1301
|
CallCombiner* const call_combiner_;
|
1596
1302
|
const Timestamp deadline_;
|
1597
1303
|
CallFinalization finalization_;
|
1598
|
-
CallContext* call_context_ = nullptr;
|
1599
|
-
grpc_call_context_element* const context_;
|
1600
1304
|
std::atomic<grpc_polling_entity*> pollent_{nullptr};
|
1601
1305
|
Pipe<ServerMetadataHandle>* const server_initial_metadata_pipe_;
|
1602
1306
|
SendMessage* const send_message_;
|
@@ -1952,67 +1656,15 @@ struct ChannelFilterWithFlagsMethods {
|
|
1952
1656
|
// ChannelArgs channel_args, ChannelFilter::Args filter_args);
|
1953
1657
|
// };
|
1954
1658
|
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
1955
|
-
absl::enable_if_t<
|
1956
|
-
|
1957
|
-
|
1958
|
-
!std::is_base_of<HackyHackyHackySkipInV3FilterStacks, F>::value,
|
1959
|
-
grpc_channel_filter>
|
1960
|
-
MakePromiseBasedFilter(const char* name) {
|
1961
|
-
using CallData = promise_filter_detail::CallData<kEndpoint>;
|
1962
|
-
|
1963
|
-
return grpc_channel_filter{
|
1964
|
-
// start_transport_stream_op_batch
|
1965
|
-
promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
|
1966
|
-
// make_call_promise
|
1967
|
-
promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
|
1968
|
-
nullptr,
|
1969
|
-
// start_transport_op
|
1970
|
-
promise_filter_detail::ChannelFilterMethods::StartTransportOp,
|
1971
|
-
// sizeof_call_data
|
1972
|
-
sizeof(CallData),
|
1973
|
-
// init_call_elem
|
1974
|
-
promise_filter_detail::CallDataFilterWithFlagsMethods<
|
1975
|
-
CallData, kFlags>::InitCallElem,
|
1976
|
-
// set_pollset_or_pollset_set
|
1977
|
-
promise_filter_detail::BaseCallDataMethods::SetPollsetOrPollsetSet,
|
1978
|
-
// destroy_call_elem
|
1979
|
-
promise_filter_detail::CallDataFilterWithFlagsMethods<
|
1980
|
-
CallData, kFlags>::DestroyCallElem,
|
1981
|
-
// sizeof_channel_data
|
1982
|
-
sizeof(F),
|
1983
|
-
// init_channel_elem
|
1984
|
-
promise_filter_detail::ChannelFilterWithFlagsMethods<
|
1985
|
-
F, kFlags>::InitChannelElem,
|
1986
|
-
// post_init_channel_elem
|
1987
|
-
promise_filter_detail::ChannelFilterMethods::PostInitChannelElem,
|
1988
|
-
// destroy_channel_elem
|
1989
|
-
promise_filter_detail::ChannelFilterWithFlagsMethods<
|
1990
|
-
F, kFlags>::DestroyChannelElem,
|
1991
|
-
// get_channel_info
|
1992
|
-
promise_filter_detail::ChannelFilterMethods::GetChannelInfo,
|
1993
|
-
// name
|
1994
|
-
name,
|
1995
|
-
};
|
1996
|
-
}
|
1997
|
-
|
1998
|
-
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
1999
|
-
absl::enable_if_t<
|
2000
|
-
std::is_base_of<HackyHackyHackySkipInV3FilterStacks, F>::value,
|
2001
|
-
grpc_channel_filter>
|
1659
|
+
absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value &&
|
1660
|
+
!std::is_base_of<ImplementChannelFilterTag, F>::value,
|
1661
|
+
grpc_channel_filter>
|
2002
1662
|
MakePromiseBasedFilter(const char* name) {
|
2003
1663
|
using CallData = promise_filter_detail::CallData<kEndpoint>;
|
2004
1664
|
|
2005
1665
|
return grpc_channel_filter{
|
2006
1666
|
// start_transport_stream_op_batch
|
2007
1667
|
promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
|
2008
|
-
// make_call_promise
|
2009
|
-
promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
|
2010
|
-
[](grpc_channel_element* elem, CallSpineInterface*) {
|
2011
|
-
GRPC_LOG_EVERY_N_SEC(
|
2012
|
-
1, GPR_ERROR,
|
2013
|
-
"gRPC V3 call stack in use, with a filter ('%s') that is not V3.",
|
2014
|
-
elem->filter->name);
|
2015
|
-
},
|
2016
1668
|
// start_transport_op
|
2017
1669
|
promise_filter_detail::ChannelFilterMethods::StartTransportOp,
|
2018
1670
|
// sizeof_call_data
|
@@ -2051,11 +1703,6 @@ MakePromiseBasedFilter(const char* name) {
|
|
2051
1703
|
return grpc_channel_filter{
|
2052
1704
|
// start_transport_stream_op_batch
|
2053
1705
|
promise_filter_detail::BaseCallDataMethods::StartTransportStreamOpBatch,
|
2054
|
-
// make_call_promise
|
2055
|
-
promise_filter_detail::ChannelFilterMethods::MakeCallPromise,
|
2056
|
-
[](grpc_channel_element* elem, CallSpineInterface* args) {
|
2057
|
-
static_cast<F*>(elem->channel_data)->InitCall(args);
|
2058
|
-
},
|
2059
1706
|
// start_transport_op
|
2060
1707
|
promise_filter_detail::ChannelFilterMethods::StartTransportOp,
|
2061
1708
|
// sizeof_call_data
|