grpc 1.46.3-x86_64-linux → 1.48.0-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 +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -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 +117 -44
- data/src/core/ext/xds/xds_client.h +17 -3
- 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 +67 -36
- 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,21 +21,41 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include
|
24
|
+
#include <stdint.h>
|
25
|
+
#include <stdlib.h>
|
25
26
|
|
26
|
-
#include <
|
27
|
+
#include <atomic>
|
28
|
+
#include <new>
|
29
|
+
#include <type_traits>
|
30
|
+
#include <utility>
|
31
|
+
|
32
|
+
#include "absl/container/inlined_vector.h"
|
33
|
+
#include "absl/meta/type_traits.h"
|
34
|
+
|
35
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
27
36
|
#include <grpc/support/log.h>
|
28
37
|
|
29
38
|
#include "src/core/lib/channel/call_finalization.h"
|
30
39
|
#include "src/core/lib/channel/channel_args.h"
|
40
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
31
41
|
#include "src/core/lib/channel/channel_stack.h"
|
32
42
|
#include "src/core/lib/channel/context.h"
|
33
43
|
#include "src/core/lib/gprpp/debug_location.h"
|
44
|
+
#include "src/core/lib/gprpp/time.h"
|
45
|
+
#include "src/core/lib/iomgr/call_combiner.h"
|
46
|
+
#include "src/core/lib/iomgr/closure.h"
|
34
47
|
#include "src/core/lib/iomgr/error.h"
|
48
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
49
|
+
#include "src/core/lib/iomgr/polling_entity.h"
|
50
|
+
#include "src/core/lib/promise/activity.h"
|
35
51
|
#include "src/core/lib/promise/arena_promise.h"
|
36
52
|
#include "src/core/lib/promise/context.h"
|
37
|
-
#include "src/core/lib/promise/
|
53
|
+
#include "src/core/lib/promise/latch.h"
|
54
|
+
#include "src/core/lib/promise/poll.h"
|
55
|
+
#include "src/core/lib/resource_quota/arena.h"
|
38
56
|
#include "src/core/lib/transport/error_utils.h"
|
57
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
58
|
+
#include "src/core/lib/transport/transport.h"
|
39
59
|
|
40
60
|
namespace grpc_core {
|
41
61
|
|
@@ -59,6 +79,9 @@ class ChannelFilter {
|
|
59
79
|
grpc_channel_element* channel_element_;
|
60
80
|
};
|
61
81
|
|
82
|
+
// Perform post-initialization step (if any).
|
83
|
+
virtual void PostInit() {}
|
84
|
+
|
62
85
|
// Construct a promise for one call.
|
63
86
|
virtual ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
64
87
|
CallArgs call_args, NextPromiseFactory next_promise_factory) = 0;
|
@@ -70,12 +93,18 @@ class ChannelFilter {
|
|
70
93
|
// structures going forward.
|
71
94
|
virtual bool StartTransportOp(grpc_transport_op*) { return false; }
|
72
95
|
|
96
|
+
// Perform a legacy get info call
|
97
|
+
// Return true if the op was handled, false if it should be passed to the
|
98
|
+
// next filter.
|
99
|
+
// TODO(ctiller): design a new API for this
|
100
|
+
virtual bool GetChannelInfo(const grpc_channel_info*) { return false; }
|
101
|
+
|
73
102
|
virtual ~ChannelFilter() = default;
|
74
103
|
};
|
75
104
|
|
76
105
|
// Designator for whether a filter is client side or server side.
|
77
|
-
// Please don't use this outside calls to MakePromiseBasedFilter - it's
|
78
|
-
// to be deleted once the promise conversion is complete.
|
106
|
+
// Please don't use this outside calls to MakePromiseBasedFilter - it's
|
107
|
+
// intended to be deleted once the promise conversion is complete.
|
79
108
|
enum class FilterEndpoint {
|
80
109
|
kClient,
|
81
110
|
kServer,
|
@@ -83,9 +112,20 @@ enum class FilterEndpoint {
|
|
83
112
|
|
84
113
|
// Flags for MakePromiseBasedFilter.
|
85
114
|
static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
|
115
|
+
static constexpr uint8_t kFilterIsLast = 2;
|
86
116
|
|
87
117
|
namespace promise_filter_detail {
|
88
118
|
|
119
|
+
// Proxy channel filter for initialization failure, since we must leave a
|
120
|
+
// valid filter in place.
|
121
|
+
class InvalidChannelFilter : public ChannelFilter {
|
122
|
+
public:
|
123
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
124
|
+
CallArgs, NextPromiseFactory) override {
|
125
|
+
abort();
|
126
|
+
}
|
127
|
+
};
|
128
|
+
|
89
129
|
// Call data shared between all implementations of promise-based filters.
|
90
130
|
class BaseCallData : public Activity, private Wakeable {
|
91
131
|
public:
|
@@ -124,6 +164,70 @@ class BaseCallData : public Activity, private Wakeable {
|
|
124
164
|
}
|
125
165
|
};
|
126
166
|
|
167
|
+
class Flusher {
|
168
|
+
public:
|
169
|
+
explicit Flusher(BaseCallData* call);
|
170
|
+
// Calls closures, schedules batches, relinquishes call combiner.
|
171
|
+
~Flusher();
|
172
|
+
|
173
|
+
void Resume(grpc_transport_stream_op_batch* batch) {
|
174
|
+
GPR_ASSERT(!call_->is_last());
|
175
|
+
release_.push_back(batch);
|
176
|
+
}
|
177
|
+
|
178
|
+
void Cancel(grpc_transport_stream_op_batch* batch,
|
179
|
+
grpc_error_handle error) {
|
180
|
+
grpc_transport_stream_op_batch_queue_finish_with_failure(batch, error,
|
181
|
+
&call_closures_);
|
182
|
+
}
|
183
|
+
|
184
|
+
void Complete(grpc_transport_stream_op_batch* batch) {
|
185
|
+
call_closures_.Add(batch->on_complete, GRPC_ERROR_NONE,
|
186
|
+
"Flusher::Complete");
|
187
|
+
}
|
188
|
+
|
189
|
+
void AddClosure(grpc_closure* closure, grpc_error_handle error,
|
190
|
+
const char* reason) {
|
191
|
+
call_closures_.Add(closure, error, reason);
|
192
|
+
}
|
193
|
+
|
194
|
+
private:
|
195
|
+
absl::InlinedVector<grpc_transport_stream_op_batch*, 1> release_;
|
196
|
+
CallCombinerClosureList call_closures_;
|
197
|
+
BaseCallData* const call_;
|
198
|
+
};
|
199
|
+
|
200
|
+
// Smart pointer like wrapper around a batch.
|
201
|
+
// Creation makes a ref count of one capture.
|
202
|
+
// Copying increments.
|
203
|
+
// Must be moved from or resumed or cancelled before destruction.
|
204
|
+
class CapturedBatch final {
|
205
|
+
public:
|
206
|
+
CapturedBatch();
|
207
|
+
explicit CapturedBatch(grpc_transport_stream_op_batch* batch);
|
208
|
+
~CapturedBatch();
|
209
|
+
CapturedBatch(const CapturedBatch&);
|
210
|
+
CapturedBatch& operator=(const CapturedBatch&);
|
211
|
+
CapturedBatch(CapturedBatch&&) noexcept;
|
212
|
+
CapturedBatch& operator=(CapturedBatch&&) noexcept;
|
213
|
+
|
214
|
+
grpc_transport_stream_op_batch* operator->() { return batch_; }
|
215
|
+
bool is_captured() const { return batch_ != nullptr; }
|
216
|
+
|
217
|
+
// Resume processing this batch (releases one ref, passes it down the
|
218
|
+
// stack)
|
219
|
+
void ResumeWith(Flusher* releaser);
|
220
|
+
// Cancel this batch immediately (releases all refs)
|
221
|
+
void CancelWith(grpc_error_handle error, Flusher* releaser);
|
222
|
+
// Complete this batch (pass it up) assuming refs drop to zero
|
223
|
+
void CompleteWith(Flusher* releaser);
|
224
|
+
|
225
|
+
void Swap(CapturedBatch* other) { std::swap(batch_, other->batch_); }
|
226
|
+
|
227
|
+
private:
|
228
|
+
grpc_transport_stream_op_batch* batch_;
|
229
|
+
};
|
230
|
+
|
127
231
|
static MetadataHandle<grpc_metadata_batch> WrapMetadata(
|
128
232
|
grpc_metadata_batch* p) {
|
129
233
|
return MetadataHandle<grpc_metadata_batch>(p);
|
@@ -143,6 +247,11 @@ class BaseCallData : public Activity, private Wakeable {
|
|
143
247
|
return server_initial_metadata_latch_;
|
144
248
|
}
|
145
249
|
|
250
|
+
bool is_last() const {
|
251
|
+
return grpc_call_stack_element(call_stack_, call_stack_->count - 1) ==
|
252
|
+
elem_;
|
253
|
+
}
|
254
|
+
|
146
255
|
private:
|
147
256
|
// Wakeable implementation.
|
148
257
|
void Wakeup() final;
|
@@ -190,7 +299,8 @@ class ClientCallData : public BaseCallData {
|
|
190
299
|
// Start state: no op seen
|
191
300
|
kInitial,
|
192
301
|
// We saw the op, and since it was bundled with send initial metadata, we
|
193
|
-
// queued it until the send initial metadata can be sent to the next
|
302
|
+
// queued it until the send initial metadata can be sent to the next
|
303
|
+
// filter.
|
194
304
|
kQueued,
|
195
305
|
// We've forwarded the op to the next filter.
|
196
306
|
kForwarded,
|
@@ -212,11 +322,11 @@ class ClientCallData : public BaseCallData {
|
|
212
322
|
void Cancel(grpc_error_handle error);
|
213
323
|
// Begin running the promise - which will ultimately take some initial
|
214
324
|
// metadata and return some trailing metadata.
|
215
|
-
void StartPromise();
|
216
|
-
// Interject our callback into the op batch for recv trailing metadata
|
217
|
-
// Stash a pointer to the trailing metadata that will be filled in,
|
218
|
-
// manipulate it later.
|
219
|
-
void HookRecvTrailingMetadata(
|
325
|
+
void StartPromise(Flusher* flusher);
|
326
|
+
// Interject our callback into the op batch for recv trailing metadata
|
327
|
+
// ready. Stash a pointer to the trailing metadata that will be filled in,
|
328
|
+
// so we can manipulate it later.
|
329
|
+
void HookRecvTrailingMetadata(CapturedBatch batch);
|
220
330
|
// Construct a promise that will "call" the next filter.
|
221
331
|
// Effectively:
|
222
332
|
// - put the modified initial metadata into the batch to be sent down.
|
@@ -235,13 +345,13 @@ class ClientCallData : public BaseCallData {
|
|
235
345
|
void SetStatusFromError(grpc_metadata_batch* metadata,
|
236
346
|
grpc_error_handle error);
|
237
347
|
// Wakeup and poll the promise if appropriate.
|
238
|
-
void WakeInsideCombiner();
|
348
|
+
void WakeInsideCombiner(Flusher* flusher);
|
239
349
|
void OnWakeup() override;
|
240
350
|
|
241
351
|
// Contained promise
|
242
352
|
ArenaPromise<ServerMetadataHandle> promise_;
|
243
353
|
// Queued batch containing at least a send_initial_metadata op.
|
244
|
-
|
354
|
+
CapturedBatch send_initial_metadata_batch_;
|
245
355
|
// Pointer to where trailing metadata will be stored.
|
246
356
|
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
247
357
|
// State tracking recv initial metadata for filters that care about it.
|
@@ -298,8 +408,11 @@ class ServerCallData : public BaseCallData {
|
|
298
408
|
kCancelled
|
299
409
|
};
|
300
410
|
|
411
|
+
class PollContext;
|
412
|
+
struct SendInitialMetadata;
|
413
|
+
|
301
414
|
// Handle cancellation.
|
302
|
-
void Cancel(grpc_error_handle error);
|
415
|
+
void Cancel(grpc_error_handle error, Flusher* flusher);
|
303
416
|
// Construct a promise that will "call" the next filter.
|
304
417
|
// Effectively:
|
305
418
|
// - put the modified initial metadata into the batch being sent up.
|
@@ -313,13 +426,15 @@ class ServerCallData : public BaseCallData {
|
|
313
426
|
grpc_error_handle error);
|
314
427
|
void RecvInitialMetadataReady(grpc_error_handle error);
|
315
428
|
// Wakeup and poll the promise if appropriate.
|
316
|
-
void WakeInsideCombiner(
|
429
|
+
void WakeInsideCombiner(Flusher* flusher);
|
317
430
|
void OnWakeup() override;
|
318
431
|
|
319
432
|
// Contained promise
|
320
433
|
ArenaPromise<ServerMetadataHandle> promise_;
|
321
434
|
// Pointer to where initial metadata will be stored.
|
322
435
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
436
|
+
// State for sending initial metadata.
|
437
|
+
SendInitialMetadata* send_initial_metadata_ = nullptr;
|
323
438
|
// Closure to call when we're done with the trailing metadata.
|
324
439
|
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
325
440
|
// Our closure pointing to RecvInitialMetadataReadyCallback.
|
@@ -327,13 +442,13 @@ class ServerCallData : public BaseCallData {
|
|
327
442
|
// Error received during cancellation.
|
328
443
|
grpc_error_handle cancelled_error_ = GRPC_ERROR_NONE;
|
329
444
|
// Trailing metadata batch
|
330
|
-
|
445
|
+
CapturedBatch send_trailing_metadata_batch_;
|
331
446
|
// State of the send_initial_metadata op.
|
332
447
|
RecvInitialState recv_initial_state_ = RecvInitialState::kInitial;
|
333
448
|
// State of the recv_trailing_metadata op.
|
334
449
|
SendTrailingState send_trailing_state_ = SendTrailingState::kInitial;
|
335
|
-
//
|
336
|
-
|
450
|
+
// Current poll context (or nullptr if not polling).
|
451
|
+
PollContext* poll_ctx_ = nullptr;
|
337
452
|
// Whether to forward the recv_initial_metadata op at the end of promise
|
338
453
|
// wakeup.
|
339
454
|
bool forward_recv_initial_metadata_callback_ = false;
|
@@ -367,8 +482,6 @@ class CallData<ChannelFilter, FilterEndpoint::kServer> : public ServerCallData {
|
|
367
482
|
// static absl::StatusOr<SomeChannelFilter> Create(
|
368
483
|
// ChannelArgs channel_args, ChannelFilter::Args filter_args);
|
369
484
|
// };
|
370
|
-
// TODO(ctiller): allow implementing get_channel_info, start_transport_op in
|
371
|
-
// some way on ChannelFilter.
|
372
485
|
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
373
486
|
absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value, grpc_channel_filter>
|
374
487
|
MakePromiseBasedFilter(const char* name) {
|
@@ -382,13 +495,14 @@ MakePromiseBasedFilter(const char* name) {
|
|
382
495
|
// make_call_promise
|
383
496
|
[](grpc_channel_element* elem, CallArgs call_args,
|
384
497
|
NextPromiseFactory next_promise_factory) {
|
385
|
-
return static_cast<
|
498
|
+
return static_cast<ChannelFilter*>(elem->channel_data)
|
386
499
|
->MakeCallPromise(std::move(call_args),
|
387
500
|
std::move(next_promise_factory));
|
388
501
|
},
|
389
502
|
// start_transport_op
|
390
503
|
[](grpc_channel_element* elem, grpc_transport_op* op) {
|
391
|
-
if (!static_cast<
|
504
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
505
|
+
->StartTransportOp(op)) {
|
392
506
|
grpc_channel_next_op(elem, op);
|
393
507
|
}
|
394
508
|
},
|
@@ -405,28 +519,49 @@ MakePromiseBasedFilter(const char* name) {
|
|
405
519
|
},
|
406
520
|
// destroy_call_elem
|
407
521
|
[](grpc_call_element* elem, const grpc_call_final_info* final_info,
|
408
|
-
grpc_closure*) {
|
522
|
+
grpc_closure* then_schedule_closure) {
|
409
523
|
auto* cd = static_cast<CallData*>(elem->call_data);
|
410
524
|
cd->Finalize(final_info);
|
411
525
|
cd->~CallData();
|
526
|
+
if ((kFlags & kFilterIsLast) != 0) {
|
527
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
|
528
|
+
} else {
|
529
|
+
GPR_ASSERT(then_schedule_closure == nullptr);
|
530
|
+
}
|
412
531
|
},
|
413
532
|
// sizeof_channel_data
|
414
533
|
sizeof(F),
|
415
534
|
// init_channel_elem
|
416
535
|
[](grpc_channel_element* elem, grpc_channel_element_args* args) {
|
417
|
-
GPR_ASSERT(
|
536
|
+
GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
|
418
537
|
auto status = F::Create(ChannelArgs::FromC(args->channel_args),
|
419
538
|
ChannelFilter::Args(args->channel_stack, elem));
|
420
|
-
if (!status.ok())
|
539
|
+
if (!status.ok()) {
|
540
|
+
static_assert(
|
541
|
+
sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
|
542
|
+
"InvalidChannelFilter must fit in F");
|
543
|
+
new (elem->channel_data)
|
544
|
+
promise_filter_detail::InvalidChannelFilter();
|
545
|
+
return absl_status_to_grpc_error(status.status());
|
546
|
+
}
|
421
547
|
new (elem->channel_data) F(std::move(*status));
|
422
548
|
return GRPC_ERROR_NONE;
|
423
549
|
},
|
550
|
+
// post_init_channel_elem
|
551
|
+
[](grpc_channel_stack*, grpc_channel_element* elem) {
|
552
|
+
static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
|
553
|
+
},
|
424
554
|
// destroy_channel_elem
|
425
555
|
[](grpc_channel_element* elem) {
|
426
|
-
static_cast<
|
556
|
+
static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
|
427
557
|
},
|
428
558
|
// get_channel_info
|
429
|
-
|
559
|
+
[](grpc_channel_element* elem, const grpc_channel_info* info) {
|
560
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
561
|
+
->GetChannelInfo(info)) {
|
562
|
+
grpc_channel_next_get_info(elem, info);
|
563
|
+
}
|
564
|
+
},
|
430
565
|
// name
|
431
566
|
name,
|
432
567
|
};
|
@@ -18,12 +18,17 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include <
|
21
|
+
#include <stdint.h>
|
22
22
|
#include <string.h>
|
23
23
|
|
24
|
+
#include "absl/types/optional.h"
|
25
|
+
|
24
26
|
#include <grpc/compression.h>
|
27
|
+
#include <grpc/impl/codegen/compression_types.h>
|
28
|
+
#include <grpc/slice.h>
|
25
29
|
|
26
30
|
#include "src/core/lib/compression/compression_internal.h"
|
31
|
+
#include "src/core/lib/debug/trace.h"
|
27
32
|
#include "src/core/lib/gpr/useful.h"
|
28
33
|
#include "src/core/lib/slice/slice_internal.h"
|
29
34
|
#include "src/core/lib/surface/api_trace.h"
|
@@ -23,17 +23,14 @@
|
|
23
23
|
#include <stdlib.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
-
#include <cstdint>
|
27
|
-
|
28
26
|
#include "absl/container/inlined_vector.h"
|
29
|
-
#include "absl/strings/
|
27
|
+
#include "absl/strings/ascii.h"
|
30
28
|
#include "absl/strings/str_split.h"
|
31
29
|
|
32
|
-
#include <grpc/
|
30
|
+
#include <grpc/support/log.h>
|
33
31
|
|
34
32
|
#include "src/core/lib/channel/channel_args.h"
|
35
|
-
#include "src/core/lib/
|
36
|
-
#include "src/core/lib/slice/slice_internal.h"
|
33
|
+
#include "src/core/lib/debug/trace.h"
|
37
34
|
#include "src/core/lib/surface/api_trace.h"
|
38
35
|
|
39
36
|
namespace grpc_core {
|
@@ -52,6 +49,48 @@ const char* CompressionAlgorithmAsString(grpc_compression_algorithm algorithm) {
|
|
52
49
|
}
|
53
50
|
}
|
54
51
|
|
52
|
+
namespace {
|
53
|
+
class CommaSeparatedLists {
|
54
|
+
public:
|
55
|
+
CommaSeparatedLists() : lists_{}, text_buffer_{} {
|
56
|
+
char* text_buffer = text_buffer_;
|
57
|
+
auto add_char = [&text_buffer, this](char c) {
|
58
|
+
if (text_buffer - text_buffer_ == kTextBufferSize) abort();
|
59
|
+
*text_buffer++ = c;
|
60
|
+
};
|
61
|
+
for (size_t list = 0; list < kNumLists; ++list) {
|
62
|
+
char* start = text_buffer;
|
63
|
+
for (size_t algorithm = 0; algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
|
64
|
+
++algorithm) {
|
65
|
+
if ((list & (1 << algorithm)) == 0) continue;
|
66
|
+
if (start != text_buffer) {
|
67
|
+
add_char(',');
|
68
|
+
add_char(' ');
|
69
|
+
}
|
70
|
+
const char* name = CompressionAlgorithmAsString(
|
71
|
+
static_cast<grpc_compression_algorithm>(algorithm));
|
72
|
+
for (const char* p = name; *p != '\0'; ++p) {
|
73
|
+
add_char(*p);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
lists_[list] = absl::string_view(start, text_buffer - start);
|
77
|
+
}
|
78
|
+
if (text_buffer - text_buffer_ != kTextBufferSize) abort();
|
79
|
+
}
|
80
|
+
|
81
|
+
absl::string_view operator[](size_t list) const { return lists_[list]; }
|
82
|
+
|
83
|
+
private:
|
84
|
+
static constexpr size_t kNumLists = 1 << GRPC_COMPRESS_ALGORITHMS_COUNT;
|
85
|
+
// Experimentally determined (tweak things until it runs).
|
86
|
+
static constexpr size_t kTextBufferSize = 86;
|
87
|
+
absl::string_view lists_[kNumLists];
|
88
|
+
char text_buffer_[kTextBufferSize];
|
89
|
+
};
|
90
|
+
|
91
|
+
const CommaSeparatedLists kCommaSeparatedLists;
|
92
|
+
} // namespace
|
93
|
+
|
55
94
|
absl::optional<grpc_compression_algorithm> ParseCompressionAlgorithm(
|
56
95
|
absl::string_view algorithm) {
|
57
96
|
if (algorithm == "identity") {
|
@@ -165,19 +204,12 @@ void CompressionAlgorithmSet::Set(grpc_compression_algorithm algorithm) {
|
|
165
204
|
}
|
166
205
|
}
|
167
206
|
|
168
|
-
|
169
|
-
|
170
|
-
for (size_t i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
|
171
|
-
if (set_.is_set(i)) {
|
172
|
-
segments.push_back(CompressionAlgorithmAsString(
|
173
|
-
static_cast<grpc_compression_algorithm>(i)));
|
174
|
-
}
|
175
|
-
}
|
176
|
-
return absl::StrJoin(segments, ", ");
|
207
|
+
absl::string_view CompressionAlgorithmSet::ToString() const {
|
208
|
+
return kCommaSeparatedLists[ToLegacyBitmask()];
|
177
209
|
}
|
178
210
|
|
179
211
|
Slice CompressionAlgorithmSet::ToSlice() const {
|
180
|
-
return Slice::
|
212
|
+
return Slice::FromStaticString(ToString());
|
181
213
|
}
|
182
214
|
|
183
215
|
CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
|
@@ -21,14 +21,15 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <stdint.h>
|
25
|
+
|
24
26
|
#include <initializer_list>
|
25
27
|
|
26
28
|
#include "absl/strings/string_view.h"
|
27
29
|
#include "absl/types/optional.h"
|
28
30
|
|
29
|
-
#include <grpc/
|
31
|
+
#include <grpc/impl/codegen/compression_types.h>
|
30
32
|
#include <grpc/impl/codegen/grpc_types.h>
|
31
|
-
#include <grpc/slice.h>
|
32
33
|
|
33
34
|
#include "src/core/lib/gprpp/bitset.h"
|
34
35
|
#include "src/core/lib/slice/slice.h"
|
@@ -73,7 +74,7 @@ class CompressionAlgorithmSet {
|
|
73
74
|
void Set(grpc_compression_algorithm algorithm);
|
74
75
|
|
75
76
|
// Return a comma separated string of the algorithms in this set.
|
76
|
-
|
77
|
+
absl::string_view ToString() const;
|
77
78
|
Slice ToSlice() const;
|
78
79
|
|
79
80
|
// Return a bitmask of the algorithms in this set.
|
@@ -22,12 +22,14 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include <zconf.h>
|
25
26
|
#include <zlib.h>
|
26
27
|
|
28
|
+
#include <grpc/slice_buffer.h>
|
27
29
|
#include <grpc/support/alloc.h>
|
28
30
|
#include <grpc/support/log.h>
|
29
31
|
|
30
|
-
#include "src/core/lib/slice/
|
32
|
+
#include "src/core/lib/slice/slice_refcount.h"
|
31
33
|
|
32
34
|
#define OUTPUT_BLOCK_SIZE 1024
|
33
35
|
|
@@ -21,9 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include <grpc/
|
25
|
-
|
26
|
-
#include "src/core/lib/compression/compression_internal.h"
|
24
|
+
#include <grpc/impl/codegen/compression_types.h>
|
25
|
+
#include <grpc/slice.h>
|
27
26
|
|
28
27
|
/* compress 'input' to 'output' using 'algorithm'.
|
29
28
|
On success, appends compressed slices to output and returns 1.
|
@@ -18,13 +18,14 @@
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
20
|
#include <atomic>
|
21
|
+
#include <functional>
|
21
22
|
|
22
23
|
#include "src/core/lib/channel/channel_args_preconditioning.h"
|
23
|
-
#include "src/core/lib/channel/handshaker_registry.h"
|
24
24
|
#include "src/core/lib/resolver/resolver_registry.h"
|
25
25
|
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
26
26
|
#include "src/core/lib/service_config/service_config_parser.h"
|
27
27
|
#include "src/core/lib/surface/channel_init.h"
|
28
|
+
#include "src/core/lib/transport/handshaker_registry.h"
|
28
29
|
|
29
30
|
namespace grpc_core {
|
30
31
|
|
data/src/core/lib/debug/stats.cc
CHANGED
@@ -23,28 +23,28 @@
|
|
23
23
|
#include <inttypes.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include <algorithm>
|
26
27
|
#include <vector>
|
27
28
|
|
28
29
|
#include "absl/strings/str_format.h"
|
29
30
|
#include "absl/strings/str_join.h"
|
30
31
|
|
31
32
|
#include <grpc/support/alloc.h>
|
32
|
-
#include <grpc/support/
|
33
|
-
|
34
|
-
#include "src/core/lib/gpr/string.h"
|
35
|
-
#include "src/core/lib/gpr/useful.h"
|
33
|
+
#include <grpc/support/cpu.h>
|
34
|
+
#include <grpc/support/sync.h>
|
36
35
|
|
37
36
|
grpc_stats_data* grpc_stats_per_cpu_storage = nullptr;
|
38
37
|
static size_t g_num_cores;
|
38
|
+
static gpr_once g_once = GPR_ONCE_INIT;
|
39
39
|
|
40
40
|
void grpc_stats_init(void) {
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
gpr_once_init(&g_once, []() {
|
42
|
+
g_num_cores = gpr_cpu_num_cores();
|
43
|
+
grpc_stats_per_cpu_storage = static_cast<grpc_stats_data*>(
|
44
|
+
gpr_zalloc(sizeof(grpc_stats_data) * g_num_cores));
|
45
|
+
});
|
44
46
|
}
|
45
47
|
|
46
|
-
void grpc_stats_shutdown(void) { gpr_free(grpc_stats_per_cpu_storage); }
|
47
|
-
|
48
48
|
void grpc_stats_collect(grpc_stats_data* output) {
|
49
49
|
memset(output, 0, sizeof(*output));
|
50
50
|
for (size_t core = 0; core < g_num_cores; core++) {
|
data/src/core/lib/debug/stats.h
CHANGED
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <stddef.h>
|
25
|
+
|
24
26
|
#include <string>
|
25
27
|
|
26
28
|
#include <grpc/support/atm.h>
|
@@ -54,7 +56,6 @@ extern grpc_stats_data* grpc_stats_per_cpu_storage;
|
|
54
56
|
#endif /* defined(GRPC_COLLECT_STATS) || !defined(NDEBUG) */
|
55
57
|
|
56
58
|
void grpc_stats_init(void);
|
57
|
-
void grpc_stats_shutdown(void);
|
58
59
|
void grpc_stats_collect(grpc_stats_data* output);
|
59
60
|
// c = b-a
|
60
61
|
void grpc_stats_diff(const grpc_stats_data* b, const grpc_stats_data* a,
|
@@ -22,9 +22,10 @@
|
|
22
22
|
|
23
23
|
#include "src/core/lib/debug/stats_data.h"
|
24
24
|
|
25
|
+
#include <inttypes.h>
|
26
|
+
|
25
27
|
#include "src/core/lib/debug/stats.h"
|
26
28
|
#include "src/core/lib/gpr/useful.h"
|
27
|
-
#include "src/core/lib/iomgr/exec_ctx.h"
|
28
29
|
|
29
30
|
const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = {
|
30
31
|
"client_calls_created",
|