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
@@ -29,6 +29,7 @@
|
|
29
29
|
#include <vector>
|
30
30
|
|
31
31
|
#include "absl/log/check.h"
|
32
|
+
#include "absl/log/log.h"
|
32
33
|
#include "absl/strings/match.h"
|
33
34
|
#include "absl/strings/str_cat.h"
|
34
35
|
#include "absl/strings/str_format.h"
|
@@ -36,11 +37,10 @@
|
|
36
37
|
|
37
38
|
#include <grpc/impl/channel_arg_names.h>
|
38
39
|
#include <grpc/support/alloc.h>
|
39
|
-
#include <grpc/support/log.h>
|
40
40
|
#include <grpc/support/port_platform.h>
|
41
41
|
#include <grpc/support/string_util.h>
|
42
42
|
|
43
|
-
#include "src/core/
|
43
|
+
#include "src/core/util/useful.h"
|
44
44
|
|
45
45
|
namespace grpc_core {
|
46
46
|
|
@@ -264,8 +264,7 @@ absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
|
|
264
264
|
if (v == nullptr) return absl::nullopt;
|
265
265
|
auto i = v->GetIfInt();
|
266
266
|
if (!i.has_value()) {
|
267
|
-
|
268
|
-
std::string(name).c_str());
|
267
|
+
LOG(ERROR) << name << " ignored: it must be an integer";
|
269
268
|
return absl::nullopt;
|
270
269
|
}
|
271
270
|
switch (*i) {
|
@@ -274,8 +273,8 @@ absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
|
|
274
273
|
case 1:
|
275
274
|
return true;
|
276
275
|
default:
|
277
|
-
|
278
|
-
|
276
|
+
LOG(ERROR) << name << " treated as bool but set to " << *i
|
277
|
+
<< " (assuming true)";
|
279
278
|
return true;
|
280
279
|
}
|
281
280
|
}
|
@@ -557,17 +556,15 @@ int grpc_channel_arg_get_integer(const grpc_arg* arg,
|
|
557
556
|
const grpc_integer_options options) {
|
558
557
|
if (arg == nullptr) return options.default_value;
|
559
558
|
if (arg->type != GRPC_ARG_INTEGER) {
|
560
|
-
|
559
|
+
LOG(ERROR) << arg->key << " ignored: it must be an integer";
|
561
560
|
return options.default_value;
|
562
561
|
}
|
563
562
|
if (arg->value.integer < options.min_value) {
|
564
|
-
|
565
|
-
options.min_value);
|
563
|
+
LOG(ERROR) << arg->key << " ignored: it must be >= " << options.min_value;
|
566
564
|
return options.default_value;
|
567
565
|
}
|
568
566
|
if (arg->value.integer > options.max_value) {
|
569
|
-
|
570
|
-
options.max_value);
|
567
|
+
LOG(ERROR) << arg->key << " ignored: it must be <= " << options.max_value;
|
571
568
|
return options.default_value;
|
572
569
|
}
|
573
570
|
return arg->value.integer;
|
@@ -583,7 +580,7 @@ int grpc_channel_args_find_integer(const grpc_channel_args* args,
|
|
583
580
|
char* grpc_channel_arg_get_string(const grpc_arg* arg) {
|
584
581
|
if (arg == nullptr) return nullptr;
|
585
582
|
if (arg->type != GRPC_ARG_STRING) {
|
586
|
-
|
583
|
+
LOG(ERROR) << arg->key << " ignored: it must be an string";
|
587
584
|
return nullptr;
|
588
585
|
}
|
589
586
|
return arg->value.string;
|
@@ -598,7 +595,7 @@ char* grpc_channel_args_find_string(const grpc_channel_args* args,
|
|
598
595
|
bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value) {
|
599
596
|
if (arg == nullptr) return default_value;
|
600
597
|
if (arg->type != GRPC_ARG_INTEGER) {
|
601
|
-
|
598
|
+
LOG(ERROR) << arg->key << " ignored: it must be an integer";
|
602
599
|
return default_value;
|
603
600
|
}
|
604
601
|
switch (arg->value.integer) {
|
@@ -607,8 +604,8 @@ bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value) {
|
|
607
604
|
case 1:
|
608
605
|
return true;
|
609
606
|
default:
|
610
|
-
|
611
|
-
|
607
|
+
LOG(ERROR) << arg->key << " treated as bool but set to "
|
608
|
+
<< arg->value.integer << " (assuming true)";
|
612
609
|
return true;
|
613
610
|
}
|
614
611
|
}
|
@@ -667,8 +664,7 @@ ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src) {
|
|
667
664
|
if (key == GRPC_ARG_PRIMARY_USER_AGENT_STRING ||
|
668
665
|
key == GRPC_ARG_SECONDARY_USER_AGENT_STRING) {
|
669
666
|
if (src->args[i].type != GRPC_ARG_STRING) {
|
670
|
-
|
671
|
-
std::string(key).c_str());
|
667
|
+
LOG(ERROR) << "Channel argument '" << key << "' should be a string";
|
672
668
|
} else {
|
673
669
|
concatenated_values[key].push_back(src->args[i].value.string);
|
674
670
|
}
|
@@ -38,7 +38,6 @@
|
|
38
38
|
#include <grpc/support/port_platform.h>
|
39
39
|
|
40
40
|
#include "src/core/lib/avl/avl.h"
|
41
|
-
#include "src/core/lib/gpr/useful.h"
|
42
41
|
#include "src/core/lib/gprpp/debug_location.h"
|
43
42
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
44
43
|
#include "src/core/lib/gprpp/ref_counted.h"
|
@@ -46,6 +45,7 @@
|
|
46
45
|
#include "src/core/lib/gprpp/ref_counted_string.h"
|
47
46
|
#include "src/core/lib/gprpp/time.h"
|
48
47
|
#include "src/core/lib/surface/channel_stack_type.h"
|
48
|
+
#include "src/core/util/useful.h"
|
49
49
|
|
50
50
|
// TODO(hork): When we're ready to allow setting via a channel arg from the
|
51
51
|
// application, replace this with a macro in
|
@@ -83,6 +83,16 @@ inline int PointerCompare(void* a_ptr, const grpc_arg_pointer_vtable* a_vtable,
|
|
83
83
|
// before the crt refcount base class.
|
84
84
|
template <typename T>
|
85
85
|
using RefType = absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
|
86
|
+
|
87
|
+
template <typename T, typename Ignored = void /* for SFINAE */>
|
88
|
+
struct IsRawPointerTagged {
|
89
|
+
static constexpr bool kValue = false;
|
90
|
+
};
|
91
|
+
template <typename T>
|
92
|
+
struct IsRawPointerTagged<T,
|
93
|
+
absl::void_t<typename T::RawPointerChannelArgTag>> {
|
94
|
+
static constexpr bool kValue = true;
|
95
|
+
};
|
86
96
|
} // namespace channel_args_detail
|
87
97
|
|
88
98
|
// Specialization for ref-counted pointers.
|
@@ -91,13 +101,14 @@ using RefType = absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
|
|
91
101
|
template <typename T>
|
92
102
|
struct ChannelArgTypeTraits<
|
93
103
|
T, absl::enable_if_t<
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
104
|
+
!channel_args_detail::IsRawPointerTagged<T>::kValue &&
|
105
|
+
(std::is_base_of<RefCounted<channel_args_detail::RefType<T>>,
|
106
|
+
channel_args_detail::RefType<T>>::value ||
|
107
|
+
std::is_base_of<RefCounted<channel_args_detail::RefType<T>,
|
108
|
+
NonPolymorphicRefCount>,
|
109
|
+
channel_args_detail::RefType<T>>::value ||
|
110
|
+
std::is_base_of<DualRefCounted<channel_args_detail::RefType<T>>,
|
111
|
+
channel_args_detail::RefType<T>>::value),
|
101
112
|
void>> {
|
102
113
|
static const grpc_arg_pointer_vtable* VTable() {
|
103
114
|
static const grpc_arg_pointer_vtable tbl = {
|
@@ -24,20 +24,18 @@
|
|
24
24
|
#include <utility>
|
25
25
|
|
26
26
|
#include "absl/log/check.h"
|
27
|
+
#include "absl/log/log.h"
|
27
28
|
|
28
29
|
#include <grpc/support/log.h>
|
29
30
|
#include <grpc/support/port_platform.h>
|
30
31
|
|
31
32
|
#include "src/core/lib/channel/channel_args.h"
|
32
33
|
#include "src/core/lib/channel/channel_fwd.h"
|
33
|
-
#include "src/core/lib/channel/channel_stack_trace.h"
|
34
|
-
#include "src/core/lib/gpr/alloc.h"
|
35
34
|
#include "src/core/lib/surface/channel_init.h"
|
35
|
+
#include "src/core/util/alloc.h"
|
36
36
|
|
37
37
|
using grpc_event_engine::experimental::EventEngine;
|
38
38
|
|
39
|
-
grpc_core::TraceFlag grpc_trace_channel(false, "channel");
|
40
|
-
|
41
39
|
static int register_get_name_fn = []() {
|
42
40
|
grpc_core::NameFromChannelFilter = [](const grpc_channel_filter* filter) {
|
43
41
|
return filter->name;
|
@@ -120,11 +118,10 @@ grpc_error_handle grpc_channel_stack_init(
|
|
120
118
|
const grpc_channel_filter** filters, size_t filter_count,
|
121
119
|
const grpc_core::ChannelArgs& channel_args, const char* name,
|
122
120
|
grpc_channel_stack* stack) {
|
123
|
-
if (
|
124
|
-
|
121
|
+
if (GRPC_TRACE_FLAG_ENABLED(channel_stack)) {
|
122
|
+
LOG(INFO) << "CHANNEL_STACK: init " << name;
|
125
123
|
for (size_t i = 0; i < filter_count; i++) {
|
126
|
-
|
127
|
-
filters[i]->make_call_promise ? " [promise-capable]" : "");
|
124
|
+
LOG(INFO) << "CHANNEL_STACK: filter " << filters[i]->name;
|
128
125
|
}
|
129
126
|
}
|
130
127
|
|
@@ -296,61 +293,6 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
|
|
296
293
|
void grpc_channel_stack_no_post_init(grpc_channel_stack*,
|
297
294
|
grpc_channel_element*) {}
|
298
295
|
|
299
|
-
namespace {
|
300
|
-
|
301
|
-
grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
|
302
|
-
return [elem](grpc_core::CallArgs args) {
|
303
|
-
return elem->filter->make_call_promise(elem, std::move(args),
|
304
|
-
ClientNext(elem + 1));
|
305
|
-
};
|
306
|
-
}
|
307
|
-
|
308
|
-
grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) {
|
309
|
-
return [elem](grpc_core::CallArgs args) {
|
310
|
-
return elem->filter->make_call_promise(elem, std::move(args),
|
311
|
-
ServerNext(elem - 1));
|
312
|
-
};
|
313
|
-
}
|
314
|
-
|
315
|
-
} // namespace
|
316
|
-
|
317
|
-
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
318
|
-
grpc_channel_stack::MakeClientCallPromise(grpc_core::CallArgs call_args) {
|
319
|
-
return ClientNext(grpc_channel_stack_element(this, 0))(std::move(call_args));
|
320
|
-
}
|
321
|
-
|
322
|
-
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
323
|
-
grpc_channel_stack::MakeServerCallPromise(grpc_core::CallArgs call_args) {
|
324
|
-
return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
|
325
|
-
std::move(call_args));
|
326
|
-
}
|
327
|
-
|
328
|
-
void grpc_channel_stack::InitClientCallSpine(
|
329
|
-
grpc_core::CallSpineInterface* call) {
|
330
|
-
for (size_t i = 0; i < count; i++) {
|
331
|
-
auto* elem = grpc_channel_stack_element(this, i);
|
332
|
-
if (elem->filter->init_call == nullptr) {
|
333
|
-
grpc_core::Crash(
|
334
|
-
absl::StrCat("Filter '", elem->filter->name,
|
335
|
-
"' does not support the call-v3 interface"));
|
336
|
-
}
|
337
|
-
elem->filter->init_call(elem, call);
|
338
|
-
}
|
339
|
-
}
|
340
|
-
|
341
|
-
void grpc_channel_stack::InitServerCallSpine(
|
342
|
-
grpc_core::CallSpineInterface* call) {
|
343
|
-
for (size_t i = 0; i < count; i++) {
|
344
|
-
auto* elem = grpc_channel_stack_element(this, count - 1 - i);
|
345
|
-
if (elem->filter->init_call == nullptr) {
|
346
|
-
grpc_core::Crash(
|
347
|
-
absl::StrCat("Filter '", elem->filter->name,
|
348
|
-
"' does not support the call-v3 interface"));
|
349
|
-
}
|
350
|
-
elem->filter->init_call(elem, call);
|
351
|
-
}
|
352
|
-
}
|
353
|
-
|
354
296
|
void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
|
355
297
|
grpc_call_element* elem,
|
356
298
|
grpc_transport_stream_op_batch* op) {
|
@@ -59,10 +59,7 @@
|
|
59
59
|
|
60
60
|
#include "src/core/lib/channel/channel_args.h"
|
61
61
|
#include "src/core/lib/channel/channel_fwd.h"
|
62
|
-
#include "src/core/lib/channel/context.h"
|
63
|
-
#include "src/core/lib/channel/metrics.h"
|
64
62
|
#include "src/core/lib/debug/trace.h"
|
65
|
-
#include "src/core/lib/gpr/time_precise.h"
|
66
63
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
67
64
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
68
65
|
#include "src/core/lib/gprpp/time.h"
|
@@ -74,6 +71,8 @@
|
|
74
71
|
#include "src/core/lib/resource_quota/arena.h"
|
75
72
|
#include "src/core/lib/transport/call_final_info.h"
|
76
73
|
#include "src/core/lib/transport/transport.h"
|
74
|
+
#include "src/core/telemetry/metrics.h"
|
75
|
+
#include "src/core/util/time_precise.h"
|
77
76
|
|
78
77
|
struct grpc_channel_element_args {
|
79
78
|
grpc_channel_stack* channel_stack;
|
@@ -84,7 +83,6 @@ struct grpc_channel_element_args {
|
|
84
83
|
struct grpc_call_element_args {
|
85
84
|
grpc_call_stack* call_stack;
|
86
85
|
const void* server_transport_data;
|
87
|
-
grpc_call_context_element* context;
|
88
86
|
const grpc_slice& path;
|
89
87
|
gpr_cycle_counter start_time; // Note: not populated in subchannel stack.
|
90
88
|
grpc_core::Timestamp deadline;
|
@@ -107,24 +105,6 @@ struct grpc_channel_filter {
|
|
107
105
|
// See grpc_call_next_op on how to call the next element in the stack
|
108
106
|
void (*start_transport_stream_op_batch)(grpc_call_element* elem,
|
109
107
|
grpc_transport_stream_op_batch* op);
|
110
|
-
// Create a promise to execute one call.
|
111
|
-
// If this is non-null, it may be used in preference to
|
112
|
-
// start_transport_stream_op_batch.
|
113
|
-
// If this is used in preference to start_transport_stream_op_batch, the
|
114
|
-
// following can be omitted also:
|
115
|
-
// - calling init_call_elem, destroy_call_elem, set_pollset_or_pollset_set
|
116
|
-
// - allocation of memory for call data
|
117
|
-
// There is an on-going migration to move all filters to providing this, and
|
118
|
-
// then to drop start_transport_stream_op_batch.
|
119
|
-
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
|
120
|
-
grpc_channel_element* elem, grpc_core::CallArgs call_args,
|
121
|
-
grpc_core::NextPromiseFactory next_promise_factory);
|
122
|
-
// Register interceptors into a call.
|
123
|
-
// If this is non-null it may be used in preference to make_call_promise.
|
124
|
-
// There is an on-going migration to move all filters to providing this, and
|
125
|
-
// then to drop start_transport_stream_op_batch.
|
126
|
-
void (*init_call)(grpc_channel_element* elem,
|
127
|
-
grpc_core::CallSpineInterface* call_spine);
|
128
108
|
// Called to handle channel level operations - e.g. new calls, or transport
|
129
109
|
// closure.
|
130
110
|
// See grpc_channel_next_op on how to call the next element in the stack
|
@@ -230,18 +210,11 @@ struct grpc_channel_stack {
|
|
230
210
|
// full C++-ification for now.
|
231
211
|
void IncrementRefCount();
|
232
212
|
void Unref();
|
213
|
+
void Unref(const grpc_core::DebugLocation& location, const char* reason);
|
233
214
|
grpc_core::RefCountedPtr<grpc_channel_stack> Ref() {
|
234
215
|
IncrementRefCount();
|
235
216
|
return grpc_core::RefCountedPtr<grpc_channel_stack>(this);
|
236
217
|
}
|
237
|
-
|
238
|
-
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
239
|
-
MakeClientCallPromise(grpc_core::CallArgs call_args);
|
240
|
-
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
241
|
-
MakeServerCallPromise(grpc_core::CallArgs call_args);
|
242
|
-
|
243
|
-
void InitClientCallSpine(grpc_core::CallSpineInterface* call);
|
244
|
-
void InitServerCallSpine(grpc_core::CallSpineInterface* call);
|
245
218
|
};
|
246
219
|
|
247
220
|
// A call stack tracks a set of related filters for one call, and guarantees
|
@@ -346,6 +319,11 @@ inline void grpc_channel_stack::Unref() {
|
|
346
319
|
GRPC_CHANNEL_STACK_UNREF(this, "smart_pointer");
|
347
320
|
}
|
348
321
|
|
322
|
+
inline void grpc_channel_stack::Unref(const grpc_core::DebugLocation&,
|
323
|
+
const char* reason) {
|
324
|
+
GRPC_CHANNEL_STACK_UNREF(this, reason);
|
325
|
+
}
|
326
|
+
|
349
327
|
inline void grpc_call_stack::IncrementRefCount() {
|
350
328
|
GRPC_CALL_STACK_REF(this, "smart_pointer");
|
351
329
|
}
|
@@ -386,13 +364,11 @@ void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
|
|
386
364
|
void grpc_channel_stack_no_post_init(grpc_channel_stack* stk,
|
387
365
|
grpc_channel_element* elem);
|
388
366
|
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
grpc_call_log_op(sev, elem, op); \
|
395
|
-
} \
|
367
|
+
#define GRPC_CALL_LOG_OP(sev, elem, op) \
|
368
|
+
do { \
|
369
|
+
if (GRPC_TRACE_FLAG_ENABLED(channel)) { \
|
370
|
+
grpc_call_log_op(sev, elem, op); \
|
371
|
+
} \
|
396
372
|
} while (0)
|
397
373
|
|
398
374
|
#endif // GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_STACK_H
|
@@ -74,11 +74,6 @@ class ChannelStackBuilder {
|
|
74
74
|
// Helper to add a filter to the end of the stack.
|
75
75
|
void AppendFilter(const grpc_channel_filter* filter);
|
76
76
|
|
77
|
-
// Determine whether a promise-based call stack is able to be built.
|
78
|
-
// Iterates each filter and ensures that there's a promise factory there.
|
79
|
-
// This will go away once the promise conversion is completed.
|
80
|
-
virtual bool IsPromising() const = 0;
|
81
|
-
|
82
77
|
// Build the channel stack.
|
83
78
|
// After success, *result holds the new channel stack,
|
84
79
|
// prefix_bytes are allocated before the channel stack,
|
@@ -46,7 +46,6 @@
|
|
46
46
|
#include "src/core/lib/promise/activity.h"
|
47
47
|
#include "src/core/lib/promise/arena_promise.h"
|
48
48
|
#include "src/core/lib/promise/poll.h"
|
49
|
-
#include "src/core/lib/surface/call_trace.h"
|
50
49
|
#include "src/core/lib/surface/channel_stack_type.h"
|
51
50
|
#include "src/core/lib/transport/error_utils.h"
|
52
51
|
#include "src/core/lib/transport/metadata_batch.h"
|
@@ -54,153 +53,12 @@
|
|
54
53
|
|
55
54
|
namespace grpc_core {
|
56
55
|
|
57
|
-
namespace {
|
58
|
-
|
59
|
-
const grpc_channel_filter* PromiseTracingFilterFor(
|
60
|
-
const grpc_channel_filter* filter) {
|
61
|
-
struct DerivedFilter : public grpc_channel_filter {
|
62
|
-
explicit DerivedFilter(const grpc_channel_filter* filter)
|
63
|
-
: grpc_channel_filter{
|
64
|
-
// start_transport_stream_op_batch:
|
65
|
-
grpc_call_next_op,
|
66
|
-
// make_call_promise:
|
67
|
-
[](grpc_channel_element* elem, CallArgs call_args,
|
68
|
-
NextPromiseFactory next_promise_factory)
|
69
|
-
-> ArenaPromise<ServerMetadataHandle> {
|
70
|
-
auto* source_filter =
|
71
|
-
static_cast<const DerivedFilter*>(elem->filter)->filter;
|
72
|
-
gpr_log(
|
73
|
-
GPR_DEBUG,
|
74
|
-
"%s[%s] CreateCallPromise: client_initial_metadata=%s",
|
75
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
76
|
-
source_filter->name,
|
77
|
-
call_args.client_initial_metadata->DebugString().c_str());
|
78
|
-
return [source_filter, child = next_promise_factory(
|
79
|
-
std::move(call_args))]() mutable {
|
80
|
-
gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: begin",
|
81
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
82
|
-
source_filter->name);
|
83
|
-
auto r = child();
|
84
|
-
if (auto* p = r.value_if_ready()) {
|
85
|
-
gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: done: %s",
|
86
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
87
|
-
source_filter->name, (*p)->DebugString().c_str());
|
88
|
-
} else {
|
89
|
-
gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: <<pending>>",
|
90
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
91
|
-
source_filter->name);
|
92
|
-
}
|
93
|
-
return r;
|
94
|
-
};
|
95
|
-
},
|
96
|
-
/* init_call: */
|
97
|
-
[](grpc_channel_element* elem, CallSpineInterface* call) {
|
98
|
-
auto* c = DownCast<PipeBasedCallSpine*>(call);
|
99
|
-
auto* source_filter =
|
100
|
-
static_cast<const DerivedFilter*>(elem->filter)->filter;
|
101
|
-
c->client_initial_metadata().receiver.InterceptAndMap(
|
102
|
-
[source_filter](ClientMetadataHandle md) {
|
103
|
-
gpr_log(GPR_DEBUG, "%s[%s] OnClientInitialMetadata: %s",
|
104
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
105
|
-
source_filter->name, md->DebugString().c_str());
|
106
|
-
return md;
|
107
|
-
});
|
108
|
-
c->client_to_server_messages().receiver.InterceptAndMap(
|
109
|
-
[source_filter](MessageHandle msg) {
|
110
|
-
gpr_log(GPR_DEBUG, "%s[%s] OnClientToServerMessage: %s",
|
111
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
112
|
-
source_filter->name, msg->DebugString().c_str());
|
113
|
-
return msg;
|
114
|
-
});
|
115
|
-
c->server_initial_metadata().sender.InterceptAndMap(
|
116
|
-
[source_filter](ServerMetadataHandle md) {
|
117
|
-
gpr_log(GPR_DEBUG, "%s[%s] OnServerInitialMetadata: %s",
|
118
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
119
|
-
source_filter->name, md->DebugString().c_str());
|
120
|
-
return md;
|
121
|
-
});
|
122
|
-
c->server_to_client_messages().sender.InterceptAndMap(
|
123
|
-
[source_filter](MessageHandle msg) {
|
124
|
-
gpr_log(GPR_DEBUG, "%s[%s] OnServerToClientMessage: %s",
|
125
|
-
GetContext<Activity>()->DebugTag().c_str(),
|
126
|
-
source_filter->name, msg->DebugString().c_str());
|
127
|
-
return msg;
|
128
|
-
});
|
129
|
-
},
|
130
|
-
grpc_channel_next_op,
|
131
|
-
/* sizeof_call_data: */ 0,
|
132
|
-
// init_call_elem:
|
133
|
-
[](grpc_call_element*, const grpc_call_element_args*) {
|
134
|
-
return absl::OkStatus();
|
135
|
-
},
|
136
|
-
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
137
|
-
// destroy_call_elem:
|
138
|
-
[](grpc_call_element*, const grpc_call_final_info*,
|
139
|
-
grpc_closure*) {},
|
140
|
-
// sizeof_channel_data:
|
141
|
-
0,
|
142
|
-
// init_channel_elem:
|
143
|
-
[](grpc_channel_element*, grpc_channel_element_args*) {
|
144
|
-
return absl::OkStatus();
|
145
|
-
},
|
146
|
-
// post_init_channel_elem:
|
147
|
-
[](grpc_channel_stack*, grpc_channel_element*) {},
|
148
|
-
// destroy_channel_elem:
|
149
|
-
[](grpc_channel_element*) {}, grpc_channel_next_get_info,
|
150
|
-
// name:
|
151
|
-
nullptr},
|
152
|
-
filter(filter),
|
153
|
-
name_str(absl::StrCat(filter->name, ".trace")) {
|
154
|
-
this->name = name_str.c_str();
|
155
|
-
}
|
156
|
-
const grpc_channel_filter* const filter;
|
157
|
-
const std::string name_str;
|
158
|
-
};
|
159
|
-
struct Globals {
|
160
|
-
Mutex mu;
|
161
|
-
absl::flat_hash_map<const grpc_channel_filter*,
|
162
|
-
std::unique_ptr<DerivedFilter>>
|
163
|
-
map ABSL_GUARDED_BY(mu);
|
164
|
-
};
|
165
|
-
auto* globals = NoDestructSingleton<Globals>::Get();
|
166
|
-
MutexLock lock(&globals->mu);
|
167
|
-
auto it = globals->map.find(filter);
|
168
|
-
if (it != globals->map.end()) return it->second.get();
|
169
|
-
return globals->map.emplace(filter, std::make_unique<DerivedFilter>(filter))
|
170
|
-
.first->second.get();
|
171
|
-
}
|
172
|
-
|
173
|
-
} // namespace
|
174
|
-
|
175
|
-
bool ChannelStackBuilderImpl::IsPromising() const {
|
176
|
-
for (const auto* filter : stack()) {
|
177
|
-
if (filter->make_call_promise == nullptr) return false;
|
178
|
-
}
|
179
|
-
return true;
|
180
|
-
}
|
181
|
-
|
182
56
|
absl::StatusOr<RefCountedPtr<grpc_channel_stack>>
|
183
57
|
ChannelStackBuilderImpl::Build() {
|
184
58
|
std::vector<const grpc_channel_filter*> stack;
|
185
|
-
const bool is_promising = IsPromising();
|
186
|
-
const bool is_client =
|
187
|
-
grpc_channel_stack_type_is_client(channel_stack_type());
|
188
|
-
const bool client_promise_tracing =
|
189
|
-
is_client && is_promising && grpc_call_trace.enabled();
|
190
|
-
const bool server_promise_tracing =
|
191
|
-
!is_client && is_promising && grpc_call_trace.enabled();
|
192
59
|
|
193
60
|
for (const auto* filter : this->stack()) {
|
194
|
-
if (client_promise_tracing) {
|
195
|
-
stack.push_back(PromiseTracingFilterFor(filter));
|
196
|
-
}
|
197
61
|
stack.push_back(filter);
|
198
|
-
if (server_promise_tracing) {
|
199
|
-
stack.push_back(PromiseTracingFilterFor(filter));
|
200
|
-
}
|
201
|
-
}
|
202
|
-
if (server_promise_tracing) {
|
203
|
-
stack.pop_back(); // connected_channel must be last => can't be traced
|
204
62
|
}
|
205
63
|
|
206
64
|
// calculate the size of the channel stack
|
@@ -34,8 +34,6 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
|
|
34
34
|
public:
|
35
35
|
using ChannelStackBuilder::ChannelStackBuilder;
|
36
36
|
|
37
|
-
bool IsPromising() const override;
|
38
|
-
|
39
37
|
// Build the channel stack.
|
40
38
|
// After success, *result holds the new channel stack,
|
41
39
|
// prefix_bytes are allocated before the channel stack,
|