grpc 1.46.2-x86_64-linux → 1.48.0.pre1-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +138 -128
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +62 -18
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +118 -0
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +106 -39
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
- data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
- data/src/core/ext/filters/client_channel/client_channel.h +43 -8
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +8 -6
- data/src/core/ext/filters/client_channel/connector.h +9 -3
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
- data/src/core/ext/filters/client_channel/subchannel.h +80 -36
- data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
- data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
- data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +6 -2
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +39 -26
- data/src/core/ext/xds/xds_bootstrap.h +11 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
- data/src/core/ext/xds/xds_certificate_provider.h +17 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +121 -46
- data/src/core/ext/xds/xds_client.h +19 -4
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +126 -25
- data/src/core/ext/xds/xds_cluster.h +12 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +70 -42
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
- data/src/core/lib/avl/avl.h +6 -4
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +11 -5
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +34 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +45 -7
- data/src/core/lib/channel/channel_stack.h +45 -9
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +17 -32
- data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
- data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +10 -14
- data/src/core/lib/channel/channelz.h +15 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +22 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +451 -190
- data/src/core/lib/channel/promise_based_filter.h +162 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +48 -16
- data/src/core/lib/compression/compression_internal.h +4 -3
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +29 -14
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +50 -32
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +16 -0
- data/src/core/lib/gprpp/time.h +10 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +34 -4
- data/src/core/lib/http/format_request.h +3 -1
- data/src/core/lib/http/httpcli.cc +106 -93
- data/src/core/lib/http/httpcli.h +58 -10
- data/src/core/lib/http/httpcli_security_connector.cc +19 -8
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +55 -96
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +7 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
- data/src/core/lib/iomgr/tcp_posix.cc +96 -52
- data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
- data/src/core/lib/iomgr/tcp_windows.cc +12 -9
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +1 -2
- data/src/core/lib/promise/activity.h +13 -19
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +2 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +38 -31
- data/src/core/lib/promise/sleep.h +32 -22
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +17 -3
- data/src/core/lib/resolver/server_address.h +13 -6
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +62 -62
- data/src/core/lib/resource_quota/memory_quota.h +35 -30
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +27 -18
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
- data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +49 -16
- data/src/core/lib/security/transport/security_handshaker.h +5 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +6 -2
- data/src/core/lib/service_config/service_config_impl.cc +13 -6
- data/src/core/lib/service_config/service_config_impl.h +9 -4
- data/src/core/lib/service_config/service_config_parser.cc +8 -2
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +79 -23
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +90 -137
- data/src/core/lib/surface/call.h +21 -3
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +97 -58
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +29 -20
- data/src/core/lib/surface/completion_queue.h +7 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -46
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +63 -109
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +83 -64
- data/src/core/lib/surface/server.h +42 -9
- data/src/core/lib/surface/validate_metadata.cc +3 -6
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +16 -8
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -20
- data/src/core/lib/transport/transport.h +48 -16
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +11 -0
- data/src/core/lib/transport/transport_op_string.cc +17 -18
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +50 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +69 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/transport/byte_stream.cc +0 -164
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -21,12 +21,17 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <stddef.h>
|
25
|
+
|
26
|
+
#include <algorithm> // IWYU pragma: keep
|
24
27
|
#include <string>
|
28
|
+
#include <type_traits>
|
29
|
+
#include <utility>
|
25
30
|
|
31
|
+
#include "absl/meta/type_traits.h"
|
26
32
|
#include "absl/strings/string_view.h"
|
27
33
|
#include "absl/types/optional.h"
|
28
34
|
#include "absl/types/variant.h"
|
29
|
-
#include "absl/utility/utility.h"
|
30
35
|
|
31
36
|
#include <grpc/impl/codegen/grpc_types.h>
|
32
37
|
|
@@ -81,6 +86,11 @@ struct ChannelArgTypeTraits<
|
|
81
86
|
};
|
82
87
|
};
|
83
88
|
|
89
|
+
// If a type declares some member 'struct RawPointerChannelArgTag {}' then
|
90
|
+
// we automatically generate a vtable for it that does not do any ownership
|
91
|
+
// management and compares the type by pointer identity.
|
92
|
+
// This is intended to be relatively ugly because *most types should worry about
|
93
|
+
// ownership*.
|
84
94
|
template <typename T>
|
85
95
|
struct ChannelArgTypeTraits<T,
|
86
96
|
absl::void_t<typename T::RawPointerChannelArgTag>> {
|
@@ -191,6 +201,11 @@ class ChannelArgs {
|
|
191
201
|
ChannelArgTypeTraits<
|
192
202
|
absl::remove_cvref_t<decltype(*store_value)>>::VTable()));
|
193
203
|
}
|
204
|
+
template <typename T>
|
205
|
+
GRPC_MUST_USE_RESULT ChannelArgs SetIfUnset(absl::string_view name, T value) {
|
206
|
+
if (Contains(name)) return *this;
|
207
|
+
return Set(name, std::move(value));
|
208
|
+
}
|
194
209
|
GRPC_MUST_USE_RESULT ChannelArgs Remove(absl::string_view name) const;
|
195
210
|
bool Contains(absl::string_view name) const { return Get(name) != nullptr; }
|
196
211
|
|
@@ -203,6 +218,7 @@ class ChannelArgs {
|
|
203
218
|
}
|
204
219
|
absl::optional<Duration> GetDurationFromIntMillis(
|
205
220
|
absl::string_view name) const;
|
221
|
+
absl::optional<bool> GetBool(absl::string_view name) const;
|
206
222
|
|
207
223
|
// Object based get/set.
|
208
224
|
// Deal with the common case that we set a pointer to an object under
|
@@ -221,12 +237,26 @@ class ChannelArgs {
|
|
221
237
|
T* GetObject() {
|
222
238
|
return GetPointer<T>(T::ChannelArgName());
|
223
239
|
}
|
240
|
+
template <typename T>
|
241
|
+
RefCountedPtr<T> GetObjectRef() {
|
242
|
+
auto* p = GetObject<T>();
|
243
|
+
if (p == nullptr) return nullptr;
|
244
|
+
return p->Ref();
|
245
|
+
}
|
224
246
|
|
225
247
|
bool operator<(const ChannelArgs& other) const { return args_ < other.args_; }
|
226
248
|
bool operator==(const ChannelArgs& other) const {
|
227
249
|
return args_ == other.args_;
|
228
250
|
}
|
229
251
|
|
252
|
+
// Helpers for commonly accessed things
|
253
|
+
|
254
|
+
bool WantMinimalStack() const {
|
255
|
+
return GetBool(GRPC_ARG_MINIMAL_STACK).value_or(false);
|
256
|
+
}
|
257
|
+
|
258
|
+
std::string ToString() const;
|
259
|
+
|
230
260
|
private:
|
231
261
|
explicit ChannelArgs(AVL<std::string, Value> args) : args_(std::move(args)) {}
|
232
262
|
|
@@ -333,8 +363,9 @@ ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src);
|
|
333
363
|
} // namespace grpc_core
|
334
364
|
|
335
365
|
// Takes ownership of the old_args
|
336
|
-
typedef
|
337
|
-
|
366
|
+
typedef grpc_core::ChannelArgs (
|
367
|
+
*grpc_channel_args_client_channel_creation_mutator)(
|
368
|
+
const char* target, grpc_core::ChannelArgs old_args,
|
338
369
|
grpc_channel_stack_type type);
|
339
370
|
|
340
371
|
// Should be called only once globaly before grpc is init'ed.
|
@@ -16,7 +16,8 @@
|
|
16
16
|
|
17
17
|
#include "src/core/lib/channel/channel_args_preconditioning.h"
|
18
18
|
|
19
|
-
#include <
|
19
|
+
#include <algorithm>
|
20
|
+
#include <utility>
|
20
21
|
|
21
22
|
namespace grpc_core {
|
22
23
|
|
@@ -30,13 +31,13 @@ ChannelArgsPreconditioning ChannelArgsPreconditioning::Builder::Build() {
|
|
30
31
|
return preconditioning;
|
31
32
|
}
|
32
33
|
|
33
|
-
|
34
|
+
ChannelArgs ChannelArgsPreconditioning::PreconditionChannelArgs(
|
34
35
|
const grpc_channel_args* args) const {
|
35
36
|
ChannelArgs channel_args = ChannelArgsBuiltinPrecondition(args);
|
36
37
|
for (auto& stage : stages_) {
|
37
38
|
channel_args = stage(std::move(channel_args));
|
38
39
|
}
|
39
|
-
return channel_args
|
40
|
+
return channel_args;
|
40
41
|
}
|
41
42
|
|
42
43
|
} // namespace grpc_core
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#include <functional>
|
21
21
|
#include <vector>
|
22
22
|
|
23
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
24
|
+
|
23
25
|
#include "src/core/lib/channel/channel_args.h"
|
24
26
|
|
25
27
|
namespace grpc_core {
|
@@ -49,8 +51,7 @@ class ChannelArgsPreconditioning {
|
|
49
51
|
// Take channel args and precondition them.
|
50
52
|
// Does not take ownership of the channel args passed in.
|
51
53
|
// Returns a new channel args object that is owned by the caller.
|
52
|
-
const grpc_channel_args*
|
53
|
-
const grpc_channel_args* args) const;
|
54
|
+
ChannelArgs PreconditionChannelArgs(const grpc_channel_args* args) const;
|
54
55
|
|
55
56
|
private:
|
56
57
|
std::vector<Stage> stages_;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// Copyright 2022 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
|
+
#ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
|
16
|
+
#define GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
|
17
|
+
|
18
|
+
typedef struct grpc_channel_stack grpc_channel_stack;
|
19
|
+
typedef struct grpc_channel_filter grpc_channel_filter;
|
20
|
+
|
21
|
+
typedef struct grpc_channel_element grpc_channel_element;
|
22
|
+
typedef struct grpc_call_element grpc_call_element;
|
23
|
+
|
24
|
+
typedef struct grpc_call_stack grpc_call_stack;
|
25
|
+
|
26
|
+
#endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
|
@@ -20,13 +20,14 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/channel/channel_stack.h"
|
22
22
|
|
23
|
-
#include <
|
24
|
-
|
23
|
+
#include <stdint.h>
|
24
|
+
|
25
|
+
#include <utility>
|
25
26
|
|
26
|
-
#include <grpc/support/alloc.h>
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
|
29
29
|
#include "src/core/lib/gpr/alloc.h"
|
30
|
+
#include "src/core/lib/promise/poll.h"
|
30
31
|
|
31
32
|
grpc_core::TraceFlag grpc_trace_channel(false, "channel");
|
32
33
|
grpc_core::TraceFlag grpc_trace_channel_stack(false, "channel_stack");
|
@@ -113,6 +114,8 @@ grpc_error_handle grpc_channel_stack_init(
|
|
113
114
|
}
|
114
115
|
}
|
115
116
|
|
117
|
+
stack->on_destroy.Init([]() {});
|
118
|
+
|
116
119
|
size_t call_size =
|
117
120
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
|
118
121
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
|
@@ -140,8 +143,8 @@ grpc_error_handle grpc_channel_stack_init(
|
|
140
143
|
elems[i].channel_data = user_data;
|
141
144
|
grpc_error_handle error =
|
142
145
|
elems[i].filter->init_channel_elem(&elems[i], &args);
|
143
|
-
if (error
|
144
|
-
if (first_error
|
146
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
147
|
+
if (GRPC_ERROR_IS_NONE(first_error)) {
|
145
148
|
first_error = error;
|
146
149
|
} else {
|
147
150
|
GRPC_ERROR_UNREF(error);
|
@@ -169,6 +172,9 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack) {
|
|
169
172
|
for (i = 0; i < count; i++) {
|
170
173
|
channel_elems[i].filter->destroy_channel_elem(&channel_elems[i]);
|
171
174
|
}
|
175
|
+
|
176
|
+
(*stack->on_destroy)();
|
177
|
+
stack->on_destroy.Destroy();
|
172
178
|
}
|
173
179
|
|
174
180
|
grpc_error_handle grpc_call_stack_init(
|
@@ -199,8 +205,8 @@ grpc_error_handle grpc_call_stack_init(
|
|
199
205
|
for (size_t i = 0; i < count; i++) {
|
200
206
|
grpc_error_handle error =
|
201
207
|
call_elems[i].filter->init_call_elem(&call_elems[i], elem_args);
|
202
|
-
if (error
|
203
|
-
if (first_error
|
208
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
209
|
+
if (GRPC_ERROR_IS_NONE(first_error)) {
|
204
210
|
first_error = error;
|
205
211
|
} else {
|
206
212
|
GRPC_ERROR_UNREF(error);
|
@@ -272,3 +278,35 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
|
|
272
278
|
reinterpret_cast<char*>(elem) -
|
273
279
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)));
|
274
280
|
}
|
281
|
+
|
282
|
+
void grpc_channel_stack_no_post_init(grpc_channel_stack*,
|
283
|
+
grpc_channel_element*) {}
|
284
|
+
|
285
|
+
namespace {
|
286
|
+
|
287
|
+
grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
|
288
|
+
return [elem](grpc_core::CallArgs args) {
|
289
|
+
return elem->filter->make_call_promise(elem, std::move(args),
|
290
|
+
ClientNext(elem + 1));
|
291
|
+
};
|
292
|
+
}
|
293
|
+
|
294
|
+
grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) {
|
295
|
+
return [elem](grpc_core::CallArgs args) {
|
296
|
+
return elem->filter->make_call_promise(elem, std::move(args),
|
297
|
+
ServerNext(elem - 1));
|
298
|
+
};
|
299
|
+
}
|
300
|
+
|
301
|
+
} // namespace
|
302
|
+
|
303
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
304
|
+
grpc_channel_stack::MakeCallPromise(grpc_core::CallArgs call_args) {
|
305
|
+
if (is_client) {
|
306
|
+
return ClientNext(grpc_channel_stack_element(this, 0))(
|
307
|
+
std::move(call_args));
|
308
|
+
} else {
|
309
|
+
return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
|
310
|
+
std::move(call_args));
|
311
|
+
}
|
312
|
+
}
|
@@ -50,25 +50,27 @@
|
|
50
50
|
|
51
51
|
#include <functional>
|
52
52
|
|
53
|
-
#include <grpc/
|
53
|
+
#include <grpc/impl/codegen/gpr_types.h>
|
54
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
55
|
+
#include <grpc/slice.h>
|
56
|
+
#include <grpc/status.h>
|
54
57
|
#include <grpc/support/log.h>
|
55
|
-
#include <grpc/support/time.h>
|
56
58
|
|
59
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
60
|
+
#include "src/core/lib/channel/context.h"
|
57
61
|
#include "src/core/lib/debug/trace.h"
|
58
62
|
#include "src/core/lib/gpr/time_precise.h"
|
63
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
59
64
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
65
|
+
#include "src/core/lib/gprpp/time.h"
|
60
66
|
#include "src/core/lib/iomgr/call_combiner.h"
|
67
|
+
#include "src/core/lib/iomgr/closure.h"
|
68
|
+
#include "src/core/lib/iomgr/error.h"
|
61
69
|
#include "src/core/lib/iomgr/polling_entity.h"
|
70
|
+
#include "src/core/lib/promise/arena_promise.h"
|
62
71
|
#include "src/core/lib/resource_quota/arena.h"
|
63
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
64
72
|
#include "src/core/lib/transport/transport.h"
|
65
73
|
|
66
|
-
typedef struct grpc_channel_element grpc_channel_element;
|
67
|
-
typedef struct grpc_call_element grpc_call_element;
|
68
|
-
|
69
|
-
typedef struct grpc_channel_stack grpc_channel_stack;
|
70
|
-
typedef struct grpc_call_stack grpc_call_stack;
|
71
|
-
|
72
74
|
struct grpc_channel_element_args {
|
73
75
|
grpc_channel_stack* channel_stack;
|
74
76
|
const grpc_channel_args* channel_args;
|
@@ -164,6 +166,10 @@ struct grpc_channel_filter {
|
|
164
166
|
Implementations may assume that elem->channel_data is all zeros. */
|
165
167
|
grpc_error_handle (*init_channel_elem)(grpc_channel_element* elem,
|
166
168
|
grpc_channel_element_args* args);
|
169
|
+
/* Post init per-channel data.
|
170
|
+
Called after all channel elements have been successfully created. */
|
171
|
+
void (*post_init_channel_elem)(grpc_channel_stack* stk,
|
172
|
+
grpc_channel_element* elem);
|
167
173
|
/* Destroy per channel data.
|
168
174
|
The filter does not need to do any chaining */
|
169
175
|
void (*destroy_channel_elem)(grpc_channel_element* elem);
|
@@ -195,10 +201,16 @@ struct grpc_call_element {
|
|
195
201
|
guarantees they live within a single malloc() allocation */
|
196
202
|
struct grpc_channel_stack {
|
197
203
|
grpc_stream_refcount refcount;
|
204
|
+
bool is_client;
|
198
205
|
size_t count;
|
199
206
|
/* Memory required for a call stack (computed at channel stack
|
200
207
|
initialization) */
|
201
208
|
size_t call_stack_size;
|
209
|
+
// TODO(ctiller): remove this mechanism... it's a hack to allow
|
210
|
+
// Channel to be separated from grpc_channel_stack's allocation. As the
|
211
|
+
// promise conversion continues, we'll reconsider what grpc_channel_stack
|
212
|
+
// should look like and this can go.
|
213
|
+
grpc_core::ManualConstructor<std::function<void()>> on_destroy;
|
202
214
|
|
203
215
|
// Minimal infrastructure to act like a RefCounted thing without converting
|
204
216
|
// everything.
|
@@ -211,6 +223,9 @@ struct grpc_channel_stack {
|
|
211
223
|
IncrementRefCount();
|
212
224
|
return grpc_core::RefCountedPtr<grpc_channel_stack>(this);
|
213
225
|
}
|
226
|
+
|
227
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> MakeCallPromise(
|
228
|
+
grpc_core::CallArgs call_args);
|
214
229
|
};
|
215
230
|
|
216
231
|
/* A call stack tracks a set of related filters for one call, and guarantees
|
@@ -222,6 +237,16 @@ struct grpc_call_stack {
|
|
222
237
|
about the address of the call stack itself. */
|
223
238
|
grpc_stream_refcount refcount;
|
224
239
|
size_t count;
|
240
|
+
|
241
|
+
// Minimal infrastructure to act like a RefCounted thing without converting
|
242
|
+
// everything.
|
243
|
+
// grpc_call_stack will be eliminated once the promise conversion completes.
|
244
|
+
void IncrementRefCount();
|
245
|
+
void Unref();
|
246
|
+
grpc_core::RefCountedPtr<grpc_call_stack> Ref() {
|
247
|
+
IncrementRefCount();
|
248
|
+
return grpc_core::RefCountedPtr<grpc_call_stack>(this);
|
249
|
+
}
|
225
250
|
};
|
226
251
|
|
227
252
|
/* Get a channel element given a channel stack and its index */
|
@@ -304,6 +329,14 @@ inline void grpc_channel_stack::Unref() {
|
|
304
329
|
GRPC_CHANNEL_STACK_UNREF(this, "smart_pointer");
|
305
330
|
}
|
306
331
|
|
332
|
+
inline void grpc_call_stack::IncrementRefCount() {
|
333
|
+
GRPC_CALL_STACK_REF(this, "smart_pointer");
|
334
|
+
}
|
335
|
+
|
336
|
+
inline void grpc_call_stack::Unref() {
|
337
|
+
GRPC_CALL_STACK_UNREF(this, "smart_pointer");
|
338
|
+
}
|
339
|
+
|
307
340
|
/* Destroy a call stack */
|
308
341
|
void grpc_call_stack_destroy(grpc_call_stack* stack,
|
309
342
|
const grpc_call_final_info* final_info,
|
@@ -333,6 +366,9 @@ void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
|
|
333
366
|
grpc_call_element* elem,
|
334
367
|
grpc_transport_stream_op_batch* op);
|
335
368
|
|
369
|
+
void grpc_channel_stack_no_post_init(grpc_channel_stack* stk,
|
370
|
+
grpc_channel_element* elem);
|
371
|
+
|
336
372
|
extern grpc_core::TraceFlag grpc_trace_channel;
|
337
373
|
|
338
374
|
#define GRPC_CALL_LOG_OP(sev, elem, op) \
|
@@ -20,20 +20,14 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
22
22
|
|
23
|
-
#include <
|
24
|
-
|
25
|
-
#include <grpc/support/alloc.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
23
|
+
#include <algorithm>
|
24
|
+
#include <utility>
|
27
25
|
|
28
26
|
#include "src/core/lib/channel/channel_args.h"
|
29
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
30
|
-
#include "src/core/lib/gprpp/memory.h"
|
31
27
|
|
32
28
|
namespace grpc_core {
|
33
29
|
|
34
|
-
ChannelStackBuilder::~ChannelStackBuilder()
|
35
|
-
grpc_channel_args_destroy(args_);
|
36
|
-
}
|
30
|
+
ChannelStackBuilder::~ChannelStackBuilder() = default;
|
37
31
|
|
38
32
|
ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
|
39
33
|
if (target == nullptr) {
|
@@ -44,21 +38,17 @@ ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
|
|
44
38
|
return *this;
|
45
39
|
}
|
46
40
|
|
47
|
-
ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(
|
48
|
-
|
49
|
-
grpc_channel_args_destroy(args_);
|
50
|
-
args_ = grpc_channel_args_copy(args);
|
41
|
+
ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(ChannelArgs args) {
|
42
|
+
args_ = std::move(args);
|
51
43
|
return *this;
|
52
44
|
}
|
53
45
|
|
54
|
-
void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter
|
55
|
-
|
56
|
-
stack_.insert(stack_.begin(), {filter, std::move(post_init)});
|
46
|
+
void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter) {
|
47
|
+
stack_.insert(stack_.begin(), filter);
|
57
48
|
}
|
58
49
|
|
59
|
-
void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter
|
60
|
-
|
61
|
-
stack_.push_back({filter, std::move(post_init)});
|
50
|
+
void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter) {
|
51
|
+
stack_.push_back(filter);
|
62
52
|
}
|
63
53
|
|
64
54
|
} // namespace grpc_core
|
@@ -17,22 +17,19 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
-
#include <
|
21
|
-
|
22
|
-
#include <functional>
|
20
|
+
#include <string>
|
23
21
|
#include <vector>
|
24
22
|
|
23
|
+
#include "absl/status/statusor.h"
|
25
24
|
#include "absl/strings/string_view.h"
|
26
25
|
|
26
|
+
#include <grpc/support/log.h>
|
27
|
+
|
27
28
|
#include "src/core/lib/channel/channel_args.h"
|
28
|
-
#include "src/core/lib/
|
29
|
-
#include "src/core/lib/
|
29
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
30
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
31
|
#include "src/core/lib/surface/channel_stack_type.h"
|
31
|
-
|
32
|
-
typedef struct grpc_channel_stack grpc_channel_stack;
|
33
|
-
typedef struct grpc_channel_element grpc_channel_element;
|
34
|
-
typedef struct grpc_channel_filter grpc_channel_filter;
|
35
|
-
typedef struct grpc_transport grpc_transport;
|
32
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
36
33
|
|
37
34
|
namespace grpc_core {
|
38
35
|
|
@@ -43,17 +40,6 @@ namespace grpc_core {
|
|
43
40
|
// and a transport.
|
44
41
|
class ChannelStackBuilder {
|
45
42
|
public:
|
46
|
-
// A function that will be called after the channel stack is successfully
|
47
|
-
// built.
|
48
|
-
using PostInitFunc = std::function<void(grpc_channel_stack* channel_stack,
|
49
|
-
grpc_channel_element* elem)>;
|
50
|
-
|
51
|
-
// One filter in the currently building stack.
|
52
|
-
struct StackEntry {
|
53
|
-
const grpc_channel_filter* filter;
|
54
|
-
PostInitFunc post_init;
|
55
|
-
};
|
56
|
-
|
57
43
|
// Initialize with a name.
|
58
44
|
ChannelStackBuilder(const char* name, grpc_channel_stack_type type)
|
59
45
|
: name_(name), type_(type) {}
|
@@ -77,31 +63,29 @@ class ChannelStackBuilder {
|
|
77
63
|
grpc_transport* transport() const { return transport_; }
|
78
64
|
|
79
65
|
// Set channel args (takes a copy of them).
|
80
|
-
ChannelStackBuilder& SetChannelArgs(
|
66
|
+
ChannelStackBuilder& SetChannelArgs(ChannelArgs args);
|
81
67
|
|
82
68
|
// Query the channel args.
|
83
|
-
const
|
69
|
+
const ChannelArgs& channel_args() const { return args_; }
|
84
70
|
|
85
71
|
// Mutable vector of proposed stack entries.
|
86
|
-
std::vector<
|
72
|
+
std::vector<const grpc_channel_filter*>* mutable_stack() { return &stack_; }
|
87
73
|
|
88
74
|
// The type of channel stack being built.
|
89
75
|
grpc_channel_stack_type channel_stack_type() const { return type_; }
|
90
76
|
|
91
77
|
// Helper to add a filter to the front of the stack.
|
92
|
-
void PrependFilter(const grpc_channel_filter* filter
|
78
|
+
void PrependFilter(const grpc_channel_filter* filter);
|
93
79
|
|
94
80
|
// Helper to add a filter to the end of the stack.
|
95
|
-
void AppendFilter(const grpc_channel_filter* filter
|
81
|
+
void AppendFilter(const grpc_channel_filter* filter);
|
96
82
|
|
97
83
|
// Build the channel stack.
|
98
84
|
// After success, *result holds the new channel stack,
|
99
85
|
// prefix_bytes are allocated before the channel stack,
|
100
|
-
//
|
86
|
+
// destroy is as per grpc_channel_stack_init
|
101
87
|
// On failure, *result is nullptr.
|
102
|
-
virtual
|
103
|
-
grpc_iomgr_cb_func destroy, void* destroy_arg,
|
104
|
-
void** result) = 0;
|
88
|
+
virtual absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() = 0;
|
105
89
|
|
106
90
|
protected:
|
107
91
|
~ChannelStackBuilder();
|
@@ -118,10 +102,11 @@ class ChannelStackBuilder {
|
|
118
102
|
// The transport
|
119
103
|
grpc_transport* transport_ = nullptr;
|
120
104
|
// Channel args
|
121
|
-
|
105
|
+
ChannelArgs args_;
|
122
106
|
// The in-progress stack
|
123
|
-
std::vector<
|
107
|
+
std::vector<const grpc_channel_filter*> stack_;
|
124
108
|
};
|
109
|
+
|
125
110
|
} // namespace grpc_core
|
126
111
|
|
127
112
|
#endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H
|
@@ -22,40 +22,35 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include <vector>
|
26
|
+
|
27
|
+
#include "absl/status/status.h"
|
28
|
+
|
29
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
25
30
|
#include <grpc/support/alloc.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
27
31
|
|
28
32
|
#include "src/core/lib/channel/channel_args.h"
|
29
33
|
#include "src/core/lib/channel/channel_stack.h"
|
30
|
-
#include "src/core/lib/
|
34
|
+
#include "src/core/lib/gpr/useful.h"
|
35
|
+
#include "src/core/lib/iomgr/error.h"
|
36
|
+
#include "src/core/lib/transport/error_utils.h"
|
37
|
+
#include "src/core/lib/transport/transport.h"
|
31
38
|
|
32
39
|
namespace grpc_core {
|
33
40
|
|
34
|
-
|
35
|
-
|
36
|
-
grpc_iomgr_cb_func destroy,
|
37
|
-
void* destroy_arg,
|
38
|
-
void** result) {
|
41
|
+
absl::StatusOr<RefCountedPtr<grpc_channel_stack>>
|
42
|
+
ChannelStackBuilderImpl::Build() {
|
39
43
|
auto* stack = mutable_stack();
|
40
44
|
|
41
|
-
// create an array of filters
|
42
|
-
std::vector<const grpc_channel_filter*> filters;
|
43
|
-
filters.reserve(stack->size());
|
44
|
-
for (const auto& elem : *stack) {
|
45
|
-
filters.push_back(elem.filter);
|
46
|
-
}
|
47
|
-
|
48
45
|
// calculate the size of the channel stack
|
49
46
|
size_t channel_stack_size =
|
50
|
-
grpc_channel_stack_size(
|
47
|
+
grpc_channel_stack_size(stack->data(), stack->size());
|
51
48
|
|
52
|
-
// allocate memory
|
53
|
-
*
|
54
|
-
|
55
|
-
grpc_channel_stack* channel_stack = reinterpret_cast<grpc_channel_stack*>(
|
56
|
-
static_cast<char*>(*result) + prefix_bytes);
|
49
|
+
// allocate memory
|
50
|
+
auto* channel_stack =
|
51
|
+
static_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
|
57
52
|
|
58
|
-
|
53
|
+
ChannelArgs final_args = channel_args();
|
59
54
|
if (transport() != nullptr) {
|
60
55
|
static const grpc_arg_pointer_vtable vtable = {
|
61
56
|
// copy
|
@@ -65,38 +60,38 @@ grpc_error_handle ChannelStackBuilderImpl::Build(size_t prefix_bytes,
|
|
65
60
|
// cmp
|
66
61
|
[](void* a, void* b) { return QsortCompare(a, b); },
|
67
62
|
};
|
68
|
-
|
69
|
-
|
70
|
-
final_args = grpc_channel_args_copy_and_add(channel_args(), &arg, 1);
|
71
|
-
} else {
|
72
|
-
final_args = channel_args();
|
63
|
+
final_args = final_args.Set(GRPC_ARG_TRANSPORT,
|
64
|
+
ChannelArgs::Pointer(transport(), &vtable));
|
73
65
|
}
|
74
66
|
|
75
67
|
// and initialize it
|
68
|
+
const grpc_channel_args* c_args = final_args.ToC();
|
76
69
|
grpc_error_handle error = grpc_channel_stack_init(
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
70
|
+
1,
|
71
|
+
[](void* p, grpc_error_handle) {
|
72
|
+
auto* stk = static_cast<grpc_channel_stack*>(p);
|
73
|
+
grpc_channel_stack_destroy(stk);
|
74
|
+
gpr_free(stk);
|
75
|
+
},
|
76
|
+
channel_stack, stack->data(), stack->size(), c_args, name(),
|
77
|
+
channel_stack);
|
78
|
+
grpc_channel_args_destroy(c_args);
|
79
|
+
|
80
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
85
81
|
grpc_channel_stack_destroy(channel_stack);
|
86
|
-
gpr_free(
|
87
|
-
|
88
|
-
|
82
|
+
gpr_free(channel_stack);
|
83
|
+
auto status = grpc_error_to_absl_status(error);
|
84
|
+
GRPC_ERROR_UNREF(error);
|
85
|
+
return status;
|
89
86
|
}
|
90
87
|
|
91
88
|
// run post-initialization functions
|
92
|
-
for (size_t i = 0; i <
|
93
|
-
|
94
|
-
|
95
|
-
grpc_channel_stack_element(channel_stack, i));
|
96
|
-
}
|
89
|
+
for (size_t i = 0; i < stack->size(); i++) {
|
90
|
+
auto* elem = grpc_channel_stack_element(channel_stack, i);
|
91
|
+
elem->filter->post_init_channel_elem(channel_stack, elem);
|
97
92
|
}
|
98
93
|
|
99
|
-
return
|
94
|
+
return RefCountedPtr<grpc_channel_stack>(channel_stack);
|
100
95
|
}
|
101
96
|
|
102
97
|
} // namespace grpc_core
|
@@ -17,11 +17,11 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
-
#include
|
20
|
+
#include "absl/status/statusor.h"
|
21
21
|
|
22
|
-
#include "src/core/lib/channel/
|
23
|
-
#include "src/core/lib/channel/channel_stack.h"
|
22
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
24
23
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
24
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
25
25
|
|
26
26
|
namespace grpc_core {
|
27
27
|
|
@@ -39,9 +39,7 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
|
|
39
39
|
// prefix_bytes are allocated before the channel stack,
|
40
40
|
// initial_refs, destroy, destroy_arg are as per grpc_channel_stack_init
|
41
41
|
// On failure, *result is nullptr.
|
42
|
-
|
43
|
-
grpc_iomgr_cb_func destroy, void* destroy_arg,
|
44
|
-
void** result) override;
|
42
|
+
absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() override;
|
45
43
|
};
|
46
44
|
} // namespace grpc_core
|
47
45
|
|