grpc 1.73.0 → 1.75.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 +116 -53
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +18 -6
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +274 -192
- data/src/core/channelz/channelz.h +224 -72
- data/src/core/channelz/channelz_registry.cc +2 -163
- data/src/core/channelz/channelz_registry.h +37 -6
- data/src/core/channelz/property_list.cc +353 -0
- data/src/core/channelz/property_list.h +204 -0
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +24 -33
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +57 -25
- data/src/core/client_channel/subchannel.h +10 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +4 -1
- data/src/core/config/core_configuration.h +23 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +2 -27
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +98 -38
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +11 -10
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +51 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +165 -99
- data/src/core/lib/experiments/experiments.h +65 -52
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +15 -9
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +3 -2
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +55 -6
- data/src/core/lib/promise/party.h +68 -3
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +19 -10
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +84 -13
- data/src/core/server/server.h +21 -2
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +369 -343
- data/src/core/telemetry/stats_data.h +341 -244
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +205 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +249 -189
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +7 -4
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +144 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +192 -68
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -70,6 +70,7 @@
|
|
70
70
|
#include "src/core/service_config/service_config.h"
|
71
71
|
#include "src/core/service_config/service_config_impl.h"
|
72
72
|
#include "src/core/util/debug_location.h"
|
73
|
+
#include "src/core/util/down_cast.h"
|
73
74
|
#include "src/core/util/host_port.h"
|
74
75
|
#include "src/core/util/match.h"
|
75
76
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -210,6 +211,9 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager final
|
|
210
211
|
absl::StatusOr<ChannelArgs> UpdateChannelArgsForConnection(
|
211
212
|
const ChannelArgs& args, grpc_endpoint* tcp) override;
|
212
213
|
|
214
|
+
void UpdateBlackboard(const Blackboard* old_blackboard,
|
215
|
+
Blackboard* new_blackboard) override;
|
216
|
+
|
213
217
|
// Invoked by ListenerWatcher to start fetching referenced RDS resources.
|
214
218
|
void StartRdsWatch(RefCountedPtr<ListenerWatcher> listener_watcher)
|
215
219
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ListenerWatcher::mu_);
|
@@ -248,6 +252,10 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager final
|
|
248
252
|
route_config);
|
249
253
|
void OnAmbientError(const std::string& resource_name, absl::Status status);
|
250
254
|
|
255
|
+
// Executes cb once for each unique filter chain object in the LDS resource.
|
256
|
+
void ForEachFilterChain(
|
257
|
+
absl::FunctionRef<void(XdsListenerResource::FilterChainData&)> cb);
|
258
|
+
|
251
259
|
RefCountedPtr<GrpcXdsClient> xds_client_;
|
252
260
|
// This ref is only kept around till the FilterChainMatchManager becomes
|
253
261
|
// ready.
|
@@ -402,7 +410,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
402
410
|
return static_resource_.status();
|
403
411
|
}
|
404
412
|
return XdsServerConfigSelector::Create(
|
405
|
-
|
413
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
406
414
|
.http_filter_registry(),
|
407
415
|
static_resource_.value(), http_filters_);
|
408
416
|
}
|
@@ -529,7 +537,7 @@ void XdsServerConfigFetcher::StartWatch(
|
|
529
537
|
XdsListenerResourceType::StartWatch(
|
530
538
|
xds_client_.get(),
|
531
539
|
ListenerResourceName(
|
532
|
-
|
540
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
533
541
|
.server_listener_resource_name_template(),
|
534
542
|
listening_address),
|
535
543
|
std::move(listener_watcher));
|
@@ -546,7 +554,7 @@ void XdsServerConfigFetcher::CancelWatch(
|
|
546
554
|
XdsListenerResourceType::CancelWatch(
|
547
555
|
xds_client_.get(),
|
548
556
|
ListenerResourceName(
|
549
|
-
|
557
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
550
558
|
.server_listener_resource_name_template(),
|
551
559
|
it->second->listening_address()),
|
552
560
|
it->second, false /* delay_unsubscription */);
|
@@ -685,37 +693,47 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
685
693
|
default_filter_chain_(std::move(default_filter_chain)) {}
|
686
694
|
|
687
695
|
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
688
|
-
|
689
|
-
|
690
|
-
//
|
691
|
-
//
|
692
|
-
|
696
|
+
ForEachFilterChain(
|
697
|
+
absl::FunctionRef<void(XdsListenerResource::FilterChainData&)> cb) {
|
698
|
+
// A given FilterChainData object may appear more than once in the map,
|
699
|
+
// but we want to invoke the callback exactly once for each
|
700
|
+
// FilterChainData object. Therefore, we start by constructing a set
|
701
|
+
// of all FilterChainData objects by address, to weed out duplicates.
|
693
702
|
std::set<XdsListenerResource::FilterChainData*> filter_chain_data_set;
|
694
703
|
for (const auto& destination_ip : filter_chain_map_.destination_ip_vector) {
|
695
704
|
for (const auto& source_type : destination_ip.source_types_array) {
|
696
705
|
for (const auto& source_ip : source_type) {
|
697
706
|
for (const auto& source_port_pair : source_ip.ports_map) {
|
698
707
|
auto* filter_chain_data = source_port_pair.second.data.get();
|
699
|
-
const auto* rds_name = std::get_if<std::string>(
|
700
|
-
&filter_chain_data->http_connection_manager.route_config);
|
701
|
-
if (rds_name != nullptr) resource_names.insert(*rds_name);
|
702
708
|
filter_chain_data_set.insert(filter_chain_data);
|
703
709
|
}
|
704
710
|
}
|
705
711
|
}
|
706
712
|
}
|
707
|
-
|
708
|
-
auto& hcm = default_filter_chain_->http_connection_manager;
|
709
|
-
const auto* rds_name = std::get_if<std::string>(&hcm.route_config);
|
710
|
-
if (rds_name != nullptr) resource_names.insert(*rds_name);
|
711
|
-
std::reverse(hcm.http_filters.begin(), hcm.http_filters.end());
|
712
|
-
}
|
713
|
-
// Reverse the lists of HTTP filters in all the filter chains
|
713
|
+
// Invoke the callback once for each FilterChainData object.
|
714
714
|
for (auto* filter_chain_data : filter_chain_data_set) {
|
715
|
-
|
716
|
-
std::reverse(hcm.http_filters.begin(), hcm.http_filters.end());
|
715
|
+
cb(*filter_chain_data);
|
717
716
|
}
|
718
|
-
//
|
717
|
+
// Also invoke the callback for the default filter chain, if present.
|
718
|
+
if (default_filter_chain_.has_value()) {
|
719
|
+
cb(*default_filter_chain_);
|
720
|
+
}
|
721
|
+
}
|
722
|
+
|
723
|
+
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
724
|
+
StartRdsWatch(RefCountedPtr<ListenerWatcher> listener_watcher) {
|
725
|
+
// Get the set of RDS resources to watch on. Also reverse the list of
|
726
|
+
// HTTP filters in each filter chain, since received data moves *up*
|
727
|
+
// the stack on the server side.
|
728
|
+
std::set<std::string> resource_names;
|
729
|
+
ForEachFilterChain(
|
730
|
+
[&](XdsListenerResource::FilterChainData& filter_chain_data) {
|
731
|
+
auto& hcm = filter_chain_data.http_connection_manager;
|
732
|
+
const auto* rds_name = std::get_if<std::string>(&hcm.route_config);
|
733
|
+
if (rds_name != nullptr) resource_names.insert(*rds_name);
|
734
|
+
std::reverse(hcm.http_filters.begin(), hcm.http_filters.end());
|
735
|
+
});
|
736
|
+
// Start watching referenced RDS resources.
|
719
737
|
struct WatcherToStart {
|
720
738
|
std::string resource_name;
|
721
739
|
RefCountedPtr<RouteConfigWatcher> watcher;
|
@@ -1026,7 +1044,7 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
|
|
1026
1044
|
// flows *up* the stack.
|
1027
1045
|
std::vector<const grpc_channel_filter*> filters;
|
1028
1046
|
const auto& http_filter_registry =
|
1029
|
-
|
1047
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
1030
1048
|
.http_filter_registry();
|
1031
1049
|
for (const auto& http_filter :
|
1032
1050
|
filter_chain->http_connection_manager.http_filters) {
|
@@ -1090,6 +1108,26 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
|
|
1090
1108
|
return args;
|
1091
1109
|
}
|
1092
1110
|
|
1111
|
+
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
1112
|
+
UpdateBlackboard(const Blackboard* old_blackboard,
|
1113
|
+
Blackboard* new_blackboard) {
|
1114
|
+
const auto& http_filter_registry =
|
1115
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
1116
|
+
.http_filter_registry();
|
1117
|
+
ForEachFilterChain(
|
1118
|
+
[&](XdsListenerResource::FilterChainData& filter_chain_data) {
|
1119
|
+
auto& hcm = filter_chain_data.http_connection_manager;
|
1120
|
+
for (const auto& http_filter : hcm.http_filters) {
|
1121
|
+
const XdsHttpFilterImpl* filter_impl =
|
1122
|
+
http_filter_registry.GetFilterForType(
|
1123
|
+
http_filter.config.config_proto_type_name);
|
1124
|
+
CHECK_NE(filter_impl, nullptr); // Enforced in config validation.
|
1125
|
+
filter_impl->UpdateBlackboard(http_filter.config, old_blackboard,
|
1126
|
+
new_blackboard);
|
1127
|
+
}
|
1128
|
+
});
|
1129
|
+
}
|
1130
|
+
|
1093
1131
|
//
|
1094
1132
|
// XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::XdsServerConfigSelector
|
1095
1133
|
//
|
@@ -1237,7 +1275,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1237
1275
|
return resource.status();
|
1238
1276
|
}
|
1239
1277
|
return XdsServerConfigSelector::Create(
|
1240
|
-
|
1278
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
1241
1279
|
.http_filter_registry(),
|
1242
1280
|
resource.value(), http_filters_);
|
1243
1281
|
}
|
@@ -1269,7 +1307,7 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1269
1307
|
watcher_->OnServerConfigSelectorUpdate(resource_.status());
|
1270
1308
|
} else {
|
1271
1309
|
watcher_->OnServerConfigSelectorUpdate(XdsServerConfigSelector::Create(
|
1272
|
-
|
1310
|
+
DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
1273
1311
|
.http_filter_registry(),
|
1274
1312
|
*resource_, http_filters_));
|
1275
1313
|
}
|
@@ -1304,7 +1342,7 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
|
|
1304
1342
|
LOG(ERROR) << "Failed to create xds client: " << xds_client.status();
|
1305
1343
|
return nullptr;
|
1306
1344
|
}
|
1307
|
-
if (
|
1345
|
+
if (grpc_core::DownCast<const grpc_core::GrpcXdsBootstrap&>(
|
1308
1346
|
(*xds_client)->bootstrap())
|
1309
1347
|
.server_listener_resource_name_template()
|
1310
1348
|
.empty()) {
|
@@ -72,7 +72,7 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
72
72
|
/// lifetime of the returned object is tied to the lifetime of the
|
73
73
|
/// ServiceConfig object.
|
74
74
|
virtual ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(
|
75
|
-
size_t index) = 0;
|
75
|
+
size_t index) const = 0;
|
76
76
|
|
77
77
|
/// Retrieves the vector of parsed configs for the method identified
|
78
78
|
/// by \a path. The lifetime of the returned vector and contained objects
|
@@ -17,85 +17,30 @@
|
|
17
17
|
// This filter reads GRPC_ARG_SERVICE_CONFIG and populates ServiceConfigCallData
|
18
18
|
// in the call context per call for direct channels.
|
19
19
|
|
20
|
+
#include "src/core/service_config/service_config_channel_arg_filter.h"
|
21
|
+
|
20
22
|
#include <grpc/impl/channel_arg_names.h>
|
21
23
|
#include <grpc/support/port_platform.h>
|
22
24
|
|
23
|
-
#include <functional>
|
24
|
-
#include <memory>
|
25
|
-
#include <optional>
|
26
|
-
#include <string>
|
27
|
-
#include <utility>
|
28
|
-
|
29
|
-
#include "absl/log/log.h"
|
30
|
-
#include "absl/status/status.h"
|
31
|
-
#include "absl/status/statusor.h"
|
32
25
|
#include "src/core/call/metadata_batch.h"
|
33
26
|
#include "src/core/config/core_configuration.h"
|
34
27
|
#include "src/core/ext/filters/message_size/message_size_filter.h"
|
35
|
-
#include "src/core/lib/channel/channel_args.h"
|
36
28
|
#include "src/core/lib/channel/channel_fwd.h"
|
37
|
-
#include "src/core/lib/channel/channel_stack.h"
|
38
29
|
#include "src/core/lib/channel/promise_based_filter.h"
|
39
|
-
#include "src/core/lib/promise/arena_promise.h"
|
40
30
|
#include "src/core/lib/promise/context.h"
|
41
31
|
#include "src/core/lib/resource_quota/arena.h"
|
42
32
|
#include "src/core/lib/surface/channel_stack_type.h"
|
43
|
-
#include "src/core/lib/transport/transport.h"
|
44
33
|
#include "src/core/service_config/service_config.h"
|
45
34
|
#include "src/core/service_config/service_config_call_data.h"
|
46
|
-
#include "src/core/service_config/service_config_impl.h"
|
47
35
|
#include "src/core/service_config/service_config_parser.h"
|
48
36
|
#include "src/core/util/latent_see.h"
|
49
37
|
#include "src/core/util/ref_counted_ptr.h"
|
50
38
|
|
51
39
|
namespace grpc_core {
|
52
40
|
|
53
|
-
namespace {
|
54
|
-
|
55
|
-
class ServiceConfigChannelArgFilter final
|
56
|
-
: public ImplementChannelFilter<ServiceConfigChannelArgFilter> {
|
57
|
-
public:
|
58
|
-
static const grpc_channel_filter kFilter;
|
59
|
-
|
60
|
-
static absl::string_view TypeName() { return "service_config_channel_arg"; }
|
61
|
-
|
62
|
-
static absl::StatusOr<std::unique_ptr<ServiceConfigChannelArgFilter>> Create(
|
63
|
-
const ChannelArgs& args, ChannelFilter::Args) {
|
64
|
-
return std::make_unique<ServiceConfigChannelArgFilter>(args);
|
65
|
-
}
|
66
|
-
|
67
|
-
explicit ServiceConfigChannelArgFilter(const ChannelArgs& args) {
|
68
|
-
auto service_config_str = args.GetOwnedString(GRPC_ARG_SERVICE_CONFIG);
|
69
|
-
if (service_config_str.has_value()) {
|
70
|
-
auto service_config =
|
71
|
-
ServiceConfigImpl::Create(args, *service_config_str);
|
72
|
-
if (!service_config.ok()) {
|
73
|
-
LOG(ERROR) << service_config.status().ToString();
|
74
|
-
} else {
|
75
|
-
service_config_ = std::move(*service_config);
|
76
|
-
}
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
class Call {
|
81
|
-
public:
|
82
|
-
void OnClientInitialMetadata(ClientMetadata& md,
|
83
|
-
ServiceConfigChannelArgFilter* filter);
|
84
|
-
static inline const NoInterceptor OnServerInitialMetadata;
|
85
|
-
static inline const NoInterceptor OnServerTrailingMetadata;
|
86
|
-
static inline const NoInterceptor OnClientToServerMessage;
|
87
|
-
static inline const NoInterceptor OnClientToServerHalfClose;
|
88
|
-
static inline const NoInterceptor OnServerToClientMessage;
|
89
|
-
static inline const NoInterceptor OnFinalize;
|
90
|
-
};
|
91
|
-
|
92
|
-
private:
|
93
|
-
RefCountedPtr<ServiceConfig> service_config_;
|
94
|
-
};
|
95
|
-
|
96
41
|
void ServiceConfigChannelArgFilter::Call::OnClientInitialMetadata(
|
97
42
|
ClientMetadata& md, ServiceConfigChannelArgFilter* filter) {
|
98
|
-
|
43
|
+
GRPC_LATENT_SEE_SCOPE(
|
99
44
|
"ServiceConfigChannelArgFilter::Call::OnClientInitialMetadata");
|
100
45
|
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
|
101
46
|
if (filter->service_config_ != nullptr) {
|
@@ -112,8 +57,6 @@ const grpc_channel_filter ServiceConfigChannelArgFilter::kFilter =
|
|
112
57
|
MakePromiseBasedFilter<ServiceConfigChannelArgFilter,
|
113
58
|
FilterEndpoint::kClient>();
|
114
59
|
|
115
|
-
} // namespace
|
116
|
-
|
117
60
|
void RegisterServiceConfigChannelArgFilter(
|
118
61
|
CoreConfiguration::Builder* builder) {
|
119
62
|
builder->channel_init()
|
@@ -0,0 +1,82 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
// This filter reads GRPC_ARG_SERVICE_CONFIG and populates ServiceConfigCallData
|
18
|
+
// in the call context per call for direct channels.
|
19
|
+
|
20
|
+
#ifndef GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
|
21
|
+
#define GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
|
22
|
+
|
23
|
+
#include <grpc/slice.h>
|
24
|
+
#include <grpc/support/port_platform.h>
|
25
|
+
#include <stddef.h>
|
26
|
+
|
27
|
+
#include <memory>
|
28
|
+
|
29
|
+
#include "absl/status/statusor.h"
|
30
|
+
#include "src/core/lib/channel/channel_args.h"
|
31
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
32
|
+
#include "src/core/lib/channel/promise_based_filter.h"
|
33
|
+
#include "src/core/service_config/service_config.h"
|
34
|
+
#include "src/core/service_config/service_config_impl.h"
|
35
|
+
#include "src/core/util/ref_counted_ptr.h"
|
36
|
+
|
37
|
+
namespace grpc_core {
|
38
|
+
|
39
|
+
class ServiceConfigChannelArgFilter final
|
40
|
+
: public ImplementChannelFilter<ServiceConfigChannelArgFilter> {
|
41
|
+
public:
|
42
|
+
static const grpc_channel_filter kFilter;
|
43
|
+
|
44
|
+
static absl::string_view TypeName() { return "service_config_channel_arg"; }
|
45
|
+
|
46
|
+
static absl::StatusOr<std::unique_ptr<ServiceConfigChannelArgFilter>> Create(
|
47
|
+
const ChannelArgs& args, ChannelFilter::Args) {
|
48
|
+
return std::make_unique<ServiceConfigChannelArgFilter>(args);
|
49
|
+
}
|
50
|
+
|
51
|
+
explicit ServiceConfigChannelArgFilter(const ChannelArgs& args) {
|
52
|
+
auto service_config_str = args.GetOwnedString(GRPC_ARG_SERVICE_CONFIG);
|
53
|
+
if (service_config_str.has_value()) {
|
54
|
+
auto service_config =
|
55
|
+
ServiceConfigImpl::Create(args, *service_config_str);
|
56
|
+
if (!service_config.ok()) {
|
57
|
+
LOG(ERROR) << service_config.status().ToString();
|
58
|
+
} else {
|
59
|
+
service_config_ = std::move(*service_config);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
class Call {
|
65
|
+
public:
|
66
|
+
void OnClientInitialMetadata(ClientMetadata& md,
|
67
|
+
ServiceConfigChannelArgFilter* filter);
|
68
|
+
static inline const NoInterceptor OnServerInitialMetadata;
|
69
|
+
static inline const NoInterceptor OnServerTrailingMetadata;
|
70
|
+
static inline const NoInterceptor OnClientToServerMessage;
|
71
|
+
static inline const NoInterceptor OnClientToServerHalfClose;
|
72
|
+
static inline const NoInterceptor OnServerToClientMessage;
|
73
|
+
static inline const NoInterceptor OnFinalize;
|
74
|
+
};
|
75
|
+
|
76
|
+
private:
|
77
|
+
RefCountedPtr<ServiceConfig> service_config_;
|
78
|
+
};
|
79
|
+
|
80
|
+
} // namespace grpc_core
|
81
|
+
|
82
|
+
#endif // GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
|
@@ -86,7 +86,7 @@ class ServiceConfigImpl final : public ServiceConfig {
|
|
86
86
|
/// lifetime of the returned object is tied to the lifetime of the
|
87
87
|
/// ServiceConfig object.
|
88
88
|
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(
|
89
|
-
size_t index) override {
|
89
|
+
size_t index) const override {
|
90
90
|
DCHECK(index < parsed_global_configs_.size());
|
91
91
|
return parsed_global_configs_[index].get();
|
92
92
|
}
|
@@ -78,10 +78,10 @@ absl::string_view ServerCallTracerFactory::ChannelArgName() {
|
|
78
78
|
return kServerCallTracerFactoryChannelArgName;
|
79
79
|
}
|
80
80
|
|
81
|
-
class DelegatingClientCallTracer : public
|
81
|
+
class DelegatingClientCallTracer : public ClientCallTracerInterface {
|
82
82
|
public:
|
83
83
|
class DelegatingClientCallAttemptTracer
|
84
|
-
: public
|
84
|
+
: public ClientCallTracerInterface::CallAttemptTracer {
|
85
85
|
public:
|
86
86
|
explicit DelegatingClientCallAttemptTracer(
|
87
87
|
std::vector<CallAttemptTracer*> tracers)
|
@@ -190,7 +190,7 @@ class DelegatingClientCallTracer : public ClientCallTracer {
|
|
190
190
|
// call at any moment).
|
191
191
|
std::vector<CallAttemptTracer*> tracers_;
|
192
192
|
};
|
193
|
-
explicit DelegatingClientCallTracer(
|
193
|
+
explicit DelegatingClientCallTracer(ClientCallTracerInterface* tracer)
|
194
194
|
: tracers_{tracer} {}
|
195
195
|
~DelegatingClientCallTracer() override {}
|
196
196
|
CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) override {
|
@@ -224,15 +224,17 @@ class DelegatingClientCallTracer : public ClientCallTracer {
|
|
224
224
|
// will be adding call tracers to the context and these are already
|
225
225
|
// synchronized through promises/call combiners (single promise running per
|
226
226
|
// call at any moment).
|
227
|
-
void AddTracer(
|
227
|
+
void AddTracer(ClientCallTracerInterface* tracer) {
|
228
|
+
tracers_.push_back(tracer);
|
229
|
+
}
|
228
230
|
|
229
231
|
private:
|
230
|
-
std::vector<
|
232
|
+
std::vector<ClientCallTracerInterface*> tracers_;
|
231
233
|
};
|
232
234
|
|
233
|
-
class DelegatingServerCallTracer : public
|
235
|
+
class DelegatingServerCallTracer : public ServerCallTracerInterface {
|
234
236
|
public:
|
235
|
-
explicit DelegatingServerCallTracer(
|
237
|
+
explicit DelegatingServerCallTracer(ServerCallTracerInterface* tracer)
|
236
238
|
: tracers_{tracer} {}
|
237
239
|
~DelegatingServerCallTracer() override {}
|
238
240
|
void RecordSendInitialMetadata(
|
@@ -319,23 +321,26 @@ class DelegatingServerCallTracer : public ServerCallTracer {
|
|
319
321
|
bool IsSampled() override { return tracers_[0]->IsSampled(); }
|
320
322
|
bool IsDelegatingTracer() override { return true; }
|
321
323
|
|
322
|
-
void AddTracer(
|
324
|
+
void AddTracer(ServerCallTracerInterface* tracer) {
|
325
|
+
tracers_.push_back(tracer);
|
326
|
+
}
|
323
327
|
|
324
328
|
private:
|
325
329
|
// The ServerCallTracerFilter will be responsible for making sure that the
|
326
330
|
// tracers are added in a thread-safe manner. It is imagined that the filter
|
327
331
|
// will just invoke the factories in the server call tracer factory list
|
328
332
|
// sequentially, removing the need for any synchronization.
|
329
|
-
std::vector<
|
333
|
+
std::vector<ServerCallTracerInterface*> tracers_;
|
330
334
|
};
|
331
335
|
|
332
|
-
void AddClientCallTracerToContext(Arena* arena,
|
336
|
+
void AddClientCallTracerToContext(Arena* arena,
|
337
|
+
ClientCallTracerInterface* tracer) {
|
333
338
|
if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
|
334
339
|
// This is the first call tracer. Set it directly.
|
335
340
|
arena->SetContext<CallTracerAnnotationInterface>(tracer);
|
336
341
|
} else {
|
337
342
|
// There was already a call tracer present.
|
338
|
-
auto* orig_tracer = DownCast<
|
343
|
+
auto* orig_tracer = DownCast<ClientCallTracerInterface*>(
|
339
344
|
arena->GetContext<CallTracerAnnotationInterface>());
|
340
345
|
if (orig_tracer->IsDelegatingTracer()) {
|
341
346
|
// We already created a delegating tracer. Just add the new tracer to the
|
@@ -353,7 +358,8 @@ void AddClientCallTracerToContext(Arena* arena, ClientCallTracer* tracer) {
|
|
353
358
|
}
|
354
359
|
}
|
355
360
|
|
356
|
-
void AddServerCallTracerToContext(Arena* arena,
|
361
|
+
void AddServerCallTracerToContext(Arena* arena,
|
362
|
+
ServerCallTracerInterface* tracer) {
|
357
363
|
DCHECK_EQ(arena->GetContext<CallTracerInterface>(),
|
358
364
|
arena->GetContext<CallTracerAnnotationInterface>());
|
359
365
|
if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
|
@@ -362,7 +368,7 @@ void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
|
|
362
368
|
arena->SetContext<CallTracerInterface>(tracer);
|
363
369
|
} else {
|
364
370
|
// There was already a call tracer present.
|
365
|
-
auto* orig_tracer = DownCast<
|
371
|
+
auto* orig_tracer = DownCast<ServerCallTracerInterface*>(
|
366
372
|
arena->GetContext<CallTracerAnnotationInterface>());
|
367
373
|
if (orig_tracer->IsDelegatingTracer()) {
|
368
374
|
// We already created a delegating tracer. Just add the new tracer to the
|
@@ -381,4 +387,4 @@ void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
|
|
381
387
|
}
|
382
388
|
}
|
383
389
|
|
384
|
-
} // namespace grpc_core
|
390
|
+
} // namespace grpc_core
|
@@ -44,9 +44,9 @@ namespace grpc_core {
|
|
44
44
|
// The interface hierarchy is as follows -
|
45
45
|
// CallTracerAnnotationInterface
|
46
46
|
// | |
|
47
|
-
//
|
47
|
+
// ClientCallTracerInterface CallTracerInterface
|
48
48
|
// | |
|
49
|
-
// CallAttemptTracer
|
49
|
+
// CallAttemptTracer ServerCallTracerInterface
|
50
50
|
|
51
51
|
// The base class for all tracer implementations.
|
52
52
|
class CallTracerAnnotationInterface {
|
@@ -129,10 +129,13 @@ class CallTracerInterface : public CallTracerAnnotationInterface {
|
|
129
129
|
virtual std::shared_ptr<TcpCallTracer> StartNewTcpTrace() = 0;
|
130
130
|
};
|
131
131
|
|
132
|
+
class ClientCallTracerInterface;
|
133
|
+
class ServerCallTracerInterface;
|
134
|
+
|
132
135
|
// Interface for a tracer that records activities on a call. Actual attempts for
|
133
136
|
// this call are traced with CallAttemptTracer after invoking RecordNewAttempt()
|
134
137
|
// on the ClientCallTracer object.
|
135
|
-
class
|
138
|
+
class ClientCallTracerInterface : public CallTracerAnnotationInterface {
|
136
139
|
public:
|
137
140
|
// Interface for a tracer that records activities on a particular call
|
138
141
|
// attempt.
|
@@ -170,22 +173,22 @@ class ClientCallTracer : public CallTracerAnnotationInterface {
|
|
170
173
|
RefCountedStringValue value) = 0;
|
171
174
|
};
|
172
175
|
|
173
|
-
~
|
176
|
+
~ClientCallTracerInterface() override {}
|
174
177
|
|
175
178
|
// Records a new attempt for the associated call. \a transparent denotes
|
176
179
|
// whether the attempt is being made as a transparent retry or as a
|
177
180
|
// non-transparent retry/hedging attempt. (There will be at least one attempt
|
178
|
-
// even if the call is not being retried.) The `
|
179
|
-
// retains ownership to the newly created `CallAttemptTracer` object.
|
181
|
+
// even if the call is not being retried.) The `ClientCallTracerInterface`
|
182
|
+
// object retains ownership to the newly created `CallAttemptTracer` object.
|
180
183
|
// RecordEnd() serves as an indication that the call stack is done with all
|
181
184
|
// API calls, and the tracer library is free to destroy it after that.
|
182
185
|
virtual CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) = 0;
|
183
186
|
};
|
184
187
|
|
185
188
|
// Interface for a tracer that records activities on a server call.
|
186
|
-
class
|
189
|
+
class ServerCallTracerInterface : public CallTracerInterface {
|
187
190
|
public:
|
188
|
-
~
|
191
|
+
~ServerCallTracerInterface() override {}
|
189
192
|
// TODO(yashykt): The following two methods `RecordReceivedTrailingMetadata`
|
190
193
|
// and `RecordEnd` should be moved into CallTracerInterface.
|
191
194
|
virtual void RecordReceivedTrailingMetadata(
|
@@ -195,15 +198,15 @@ class ServerCallTracer : public CallTracerInterface {
|
|
195
198
|
virtual void RecordEnd(const grpc_call_final_info* final_info) = 0;
|
196
199
|
};
|
197
200
|
|
198
|
-
// Interface for a factory that can create a
|
199
|
-
// server call.
|
201
|
+
// Interface for a factory that can create a ServerCallTracerInterface object
|
202
|
+
// per server call.
|
200
203
|
class ServerCallTracerFactory {
|
201
204
|
public:
|
202
205
|
struct RawPointerChannelArgTag {};
|
203
206
|
|
204
207
|
virtual ~ServerCallTracerFactory() {}
|
205
208
|
|
206
|
-
virtual
|
209
|
+
virtual ServerCallTracerInterface* CreateNewServerCallTracer(
|
207
210
|
Arena* arena, const ChannelArgs& channel_args) = 0;
|
208
211
|
|
209
212
|
// Returns true if a server is to be traced, false otherwise.
|
@@ -228,11 +231,13 @@ class ServerCallTracerFactory {
|
|
228
231
|
// Convenience functions to add call tracers to a call context. Allows setting
|
229
232
|
// multiple call tracers to a single call. It is only valid to add client call
|
230
233
|
// tracers before the client_channel filter sees the send_initial_metadata op.
|
231
|
-
void AddClientCallTracerToContext(Arena* arena,
|
234
|
+
void AddClientCallTracerToContext(Arena* arena,
|
235
|
+
ClientCallTracerInterface* tracer);
|
232
236
|
|
233
237
|
// TODO(yashykt): We want server call tracers to be registered through the
|
234
238
|
// ServerCallTracerFactory, which has yet to be made into a list.
|
235
|
-
void AddServerCallTracerToContext(Arena* arena,
|
239
|
+
void AddServerCallTracerToContext(Arena* arena,
|
240
|
+
ServerCallTracerInterface* tracer);
|
236
241
|
|
237
242
|
template <>
|
238
243
|
struct ArenaContextType<CallTracerInterface> {
|
@@ -245,20 +250,20 @@ struct ArenaContextType<CallTracerAnnotationInterface> {
|
|
245
250
|
};
|
246
251
|
|
247
252
|
template <>
|
248
|
-
struct ContextSubclass<
|
253
|
+
struct ContextSubclass<ClientCallTracerInterface::CallAttemptTracer> {
|
249
254
|
using Base = CallTracerInterface;
|
250
255
|
};
|
251
256
|
|
252
257
|
template <>
|
253
|
-
struct ContextSubclass<
|
258
|
+
struct ContextSubclass<ServerCallTracerInterface> {
|
254
259
|
using Base = CallTracerInterface;
|
255
260
|
};
|
256
261
|
|
257
262
|
template <>
|
258
|
-
struct ContextSubclass<
|
263
|
+
struct ContextSubclass<ClientCallTracerInterface> {
|
259
264
|
using Base = CallTracerAnnotationInterface;
|
260
265
|
};
|
261
266
|
|
262
267
|
} // namespace grpc_core
|
263
268
|
|
264
|
-
#endif // GRPC_SRC_CORE_TELEMETRY_CALL_TRACER_H
|
269
|
+
#endif // GRPC_SRC_CORE_TELEMETRY_CALL_TRACER_H
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// Copyright 2025 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include "src/core/telemetry/context_list_entry.h"
|
16
|
+
|
17
|
+
namespace grpc_core {
|
18
|
+
|
19
|
+
namespace {
|
20
|
+
CopyContextFn g_get_copied_context_fn = nullptr;
|
21
|
+
DeleteContextFn g_delete_copied_context_fn = nullptr;
|
22
|
+
} // namespace
|
23
|
+
|
24
|
+
void GrpcHttp2SetCopyContextFn(CopyContextFn fn) {
|
25
|
+
g_get_copied_context_fn = fn;
|
26
|
+
}
|
27
|
+
|
28
|
+
void GrpcHttp2SetDeleteContextFn(DeleteContextFn fn) {
|
29
|
+
g_delete_copied_context_fn = fn;
|
30
|
+
}
|
31
|
+
|
32
|
+
CopyContextFn GrpcHttp2GetCopyContextFn() { return g_get_copied_context_fn; }
|
33
|
+
|
34
|
+
DeleteContextFn GrpcHttp2GetDeleteContextFn() {
|
35
|
+
return g_delete_copied_context_fn;
|
36
|
+
}
|
37
|
+
|
38
|
+
} // namespace grpc_core
|