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,20 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include <
|
25
|
-
#include <
|
24
|
+
#include <stddef.h>
|
25
|
+
#include <stdint.h>
|
26
|
+
|
27
|
+
#include <string>
|
28
|
+
|
29
|
+
#include "absl/strings/string_view.h"
|
30
|
+
#include "absl/types/optional.h"
|
31
|
+
|
32
|
+
#include <grpc/event_engine/memory_allocator.h>
|
33
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
34
|
+
#include <grpc/slice.h>
|
26
35
|
|
27
36
|
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
28
37
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
29
|
-
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
30
38
|
#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
|
31
39
|
#include "src/core/ext/transport/chttp2/transport/frame_ping.h"
|
32
40
|
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
|
@@ -34,15 +42,27 @@
|
|
34
42
|
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
|
35
43
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
36
44
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
|
45
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
37
46
|
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
|
38
47
|
#include "src/core/lib/channel/channelz.h"
|
39
|
-
#include "src/core/lib/
|
48
|
+
#include "src/core/lib/debug/trace.h"
|
49
|
+
#include "src/core/lib/gprpp/bitset.h"
|
50
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
51
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
52
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
53
|
+
#include "src/core/lib/gprpp/time.h"
|
54
|
+
#include "src/core/lib/iomgr/closure.h"
|
40
55
|
#include "src/core/lib/iomgr/combiner.h"
|
41
56
|
#include "src/core/lib/iomgr/endpoint.h"
|
57
|
+
#include "src/core/lib/iomgr/error.h"
|
42
58
|
#include "src/core/lib/iomgr/timer.h"
|
59
|
+
#include "src/core/lib/resource_quota/arena.h"
|
43
60
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
61
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
44
62
|
#include "src/core/lib/transport/connectivity_state.h"
|
45
63
|
#include "src/core/lib/transport/metadata_batch.h"
|
64
|
+
#include "src/core/lib/transport/transport.h"
|
65
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
46
66
|
#include "src/core/lib/transport/transport_impl.h"
|
47
67
|
|
48
68
|
namespace grpc_core {
|
@@ -208,76 +228,6 @@ typedef struct grpc_chttp2_write_cb {
|
|
208
228
|
struct grpc_chttp2_write_cb* next;
|
209
229
|
} grpc_chttp2_write_cb;
|
210
230
|
|
211
|
-
namespace grpc_core {
|
212
|
-
|
213
|
-
class Chttp2IncomingByteStream : public ByteStream {
|
214
|
-
public:
|
215
|
-
Chttp2IncomingByteStream(grpc_chttp2_transport* transport,
|
216
|
-
grpc_chttp2_stream* stream, uint32_t frame_size,
|
217
|
-
uint32_t flags);
|
218
|
-
|
219
|
-
void Orphan() override;
|
220
|
-
|
221
|
-
bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
|
222
|
-
grpc_error_handle Pull(grpc_slice* slice) override;
|
223
|
-
void Shutdown(grpc_error_handle error) override;
|
224
|
-
|
225
|
-
// TODO(roth): When I converted this class to C++, I wanted to make it
|
226
|
-
// inherit from RefCounted or InternallyRefCounted instead of continuing
|
227
|
-
// to use its own custom ref-counting code. However, that would require
|
228
|
-
// using multiple inheritance, which sucks in general. And to make matters
|
229
|
-
// worse, it causes problems with our New<> and Delete<> wrappers.
|
230
|
-
// Specifically, unless RefCounted is first in the list of parent classes,
|
231
|
-
// it will see a different value of the address of the object than the one
|
232
|
-
// we actually allocated, in which case gpr_free() will be called on a
|
233
|
-
// different address than the one we got from gpr_malloc(), thus causing a
|
234
|
-
// crash. Given the fragility of depending on that, as well as a desire to
|
235
|
-
// avoid multiple inheritance in general, I've decided to leave this
|
236
|
-
// alone for now. We can revisit this once we're able to link against
|
237
|
-
// libc++, at which point we can eliminate New<> and Delete<> and
|
238
|
-
// switch to std::shared_ptr<>.
|
239
|
-
void Ref() { refs_.Ref(); }
|
240
|
-
void Unref() {
|
241
|
-
if (GPR_UNLIKELY(refs_.Unref())) {
|
242
|
-
delete this;
|
243
|
-
}
|
244
|
-
}
|
245
|
-
|
246
|
-
void PublishError(grpc_error_handle error);
|
247
|
-
|
248
|
-
grpc_error_handle Push(const grpc_slice& slice, grpc_slice* slice_out);
|
249
|
-
|
250
|
-
grpc_error_handle Finished(grpc_error_handle error, bool reset_on_error);
|
251
|
-
|
252
|
-
uint32_t remaining_bytes() const { return remaining_bytes_; }
|
253
|
-
|
254
|
-
private:
|
255
|
-
static void NextLocked(void* arg, grpc_error_handle error_ignored);
|
256
|
-
static void OrphanLocked(void* arg, grpc_error_handle error_ignored);
|
257
|
-
|
258
|
-
grpc_chttp2_transport* transport_; // Immutable.
|
259
|
-
grpc_chttp2_stream* stream_; // Immutable.
|
260
|
-
|
261
|
-
RefCount refs_;
|
262
|
-
|
263
|
-
/* Accessed only by transport thread when stream->pending_byte_stream == false
|
264
|
-
* Accessed only by application thread when stream->pending_byte_stream ==
|
265
|
-
* true */
|
266
|
-
uint32_t remaining_bytes_;
|
267
|
-
|
268
|
-
/* Accessed only by transport thread when stream->pending_byte_stream == false
|
269
|
-
* Accessed only by application thread when stream->pending_byte_stream ==
|
270
|
-
* true */
|
271
|
-
struct {
|
272
|
-
grpc_closure closure;
|
273
|
-
size_t max_size_hint;
|
274
|
-
grpc_closure* on_complete;
|
275
|
-
} next_action_;
|
276
|
-
grpc_closure destroy_action_;
|
277
|
-
};
|
278
|
-
|
279
|
-
} // namespace grpc_core
|
280
|
-
|
281
231
|
typedef enum {
|
282
232
|
GRPC_CHTTP2_KEEPALIVE_STATE_WAITING,
|
283
233
|
GRPC_CHTTP2_KEEPALIVE_STATE_PINGING,
|
@@ -406,11 +356,7 @@ struct grpc_chttp2_transport {
|
|
406
356
|
/** parser for goaway frames */
|
407
357
|
grpc_chttp2_goaway_parser goaway_parser;
|
408
358
|
|
409
|
-
grpc_core::
|
410
|
-
grpc_core::chttp2::TransportFlowControlBase,
|
411
|
-
grpc_core::chttp2::TransportFlowControl,
|
412
|
-
grpc_core::chttp2::TransportFlowControlDisabled>
|
413
|
-
flow_control;
|
359
|
+
grpc_core::chttp2::TransportFlowControl flow_control;
|
414
360
|
/** initial window change. This is tracked as we parse settings frames from
|
415
361
|
* the remote peer. If there is a positive delta, then we will make all
|
416
362
|
* streams readable since they may have become unstalled */
|
@@ -526,7 +472,7 @@ struct grpc_chttp2_stream {
|
|
526
472
|
grpc_closure* destroy_stream_arg;
|
527
473
|
|
528
474
|
grpc_chttp2_stream_link links[STREAM_LIST_COUNT];
|
529
|
-
|
475
|
+
grpc_core::BitSet<STREAM_LIST_COUNT> included;
|
530
476
|
|
531
477
|
/** HTTP2 stream id for this stream, or zero if one has not been assigned */
|
532
478
|
uint32_t id = 0;
|
@@ -544,19 +490,16 @@ struct grpc_chttp2_stream {
|
|
544
490
|
bool* sent_trailing_metadata_op = nullptr;
|
545
491
|
grpc_closure* send_trailing_metadata_finished = nullptr;
|
546
492
|
|
547
|
-
grpc_core::OrphanablePtr<grpc_core::ByteStream> fetching_send_message;
|
548
|
-
uint32_t fetched_send_message_length = 0;
|
549
|
-
grpc_slice fetching_slice = grpc_empty_slice();
|
550
493
|
int64_t next_message_end_offset;
|
551
494
|
int64_t flow_controlled_bytes_written = 0;
|
552
495
|
int64_t flow_controlled_bytes_flowed = 0;
|
553
|
-
grpc_closure
|
554
|
-
grpc_closure* fetching_send_message_finished = nullptr;
|
496
|
+
grpc_closure* send_message_finished = nullptr;
|
555
497
|
|
556
498
|
grpc_metadata_batch* recv_initial_metadata;
|
557
499
|
grpc_closure* recv_initial_metadata_ready = nullptr;
|
558
500
|
bool* trailing_metadata_available = nullptr;
|
559
|
-
|
501
|
+
absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
|
502
|
+
uint32_t* recv_message_flags = nullptr;
|
560
503
|
bool* call_failed_before_recv_message = nullptr;
|
561
504
|
grpc_closure* recv_message_ready = nullptr;
|
562
505
|
grpc_metadata_batch* recv_trailing_metadata;
|
@@ -593,22 +536,7 @@ struct grpc_chttp2_stream {
|
|
593
536
|
grpc_metadata_batch initial_metadata_buffer;
|
594
537
|
grpc_metadata_batch trailing_metadata_buffer;
|
595
538
|
|
596
|
-
grpc_slice_buffer frame_storage;
|
597
|
-
|
598
|
-
grpc_closure* on_next = nullptr; /* protected by t combiner */
|
599
|
-
bool pending_byte_stream = false; /* protected by t combiner */
|
600
|
-
// cached length of buffer to be used by the transport thread in cases where
|
601
|
-
// stream->pending_byte_stream == true. The value is saved before
|
602
|
-
// application threads are allowed to modify
|
603
|
-
// unprocessed_incoming_frames_buffer
|
604
|
-
size_t unprocessed_incoming_frames_buffer_cached_length = 0;
|
605
|
-
/* Accessed only by transport thread when stream->pending_byte_stream == false
|
606
|
-
* Accessed only by application thread when stream->pending_byte_stream ==
|
607
|
-
* true */
|
608
|
-
grpc_slice_buffer unprocessed_incoming_frames_buffer;
|
609
|
-
grpc_closure reset_byte_stream;
|
610
|
-
grpc_error_handle byte_stream_error =
|
611
|
-
GRPC_ERROR_NONE; /* protected by t combiner */
|
539
|
+
grpc_slice_buffer frame_storage; /* protected by t combiner */
|
612
540
|
bool received_last_frame = false; /* protected by t combiner */
|
613
541
|
|
614
542
|
grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
|
@@ -617,22 +545,13 @@ struct grpc_chttp2_stream {
|
|
617
545
|
grpc_error_handle forced_close_error = GRPC_ERROR_NONE;
|
618
546
|
/** how many header frames have we received? */
|
619
547
|
uint8_t header_frames_received = 0;
|
620
|
-
/** parsing state for data frames */
|
621
|
-
/* Accessed only by transport thread when stream->pending_byte_stream == false
|
622
|
-
* Accessed only by application thread when stream->pending_byte_stream ==
|
623
|
-
* true */
|
624
|
-
grpc_chttp2_data_parser data_parser;
|
625
548
|
/** number of bytes received - reset at end of parse thread execution */
|
626
549
|
int64_t received_bytes = 0;
|
627
550
|
|
628
551
|
bool sent_initial_metadata = false;
|
629
552
|
bool sent_trailing_metadata = false;
|
630
553
|
|
631
|
-
grpc_core::
|
632
|
-
grpc_core::chttp2::StreamFlowControlBase,
|
633
|
-
grpc_core::chttp2::StreamFlowControl,
|
634
|
-
grpc_core::chttp2::StreamFlowControlDisabled>
|
635
|
-
flow_control;
|
554
|
+
grpc_core::chttp2::StreamFlowControl flow_control;
|
636
555
|
|
637
556
|
grpc_slice_buffer flow_controlled_buffer;
|
638
557
|
|
@@ -18,21 +18,43 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <stdint.h>
|
21
22
|
#include <string.h>
|
22
23
|
|
24
|
+
#include <string>
|
25
|
+
|
26
|
+
#include "absl/base/attributes.h"
|
27
|
+
#include "absl/status/status.h"
|
23
28
|
#include "absl/strings/str_cat.h"
|
24
29
|
#include "absl/strings/str_format.h"
|
25
30
|
|
26
|
-
#include <grpc/
|
31
|
+
#include <grpc/slice.h>
|
27
32
|
#include <grpc/support/log.h>
|
28
33
|
|
34
|
+
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
35
|
+
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
36
|
+
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
37
|
+
#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
|
38
|
+
#include "src/core/ext/transport/chttp2/transport/frame_ping.h"
|
39
|
+
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
|
40
|
+
#include "src/core/ext/transport/chttp2/transport/frame_settings.h"
|
41
|
+
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
|
42
|
+
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
43
|
+
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
|
44
|
+
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
|
45
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
29
46
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
30
|
-
#include "src/core/
|
31
|
-
#include "src/core/lib/
|
32
|
-
#include "src/core/lib/
|
47
|
+
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
|
48
|
+
#include "src/core/lib/channel/channelz.h"
|
49
|
+
#include "src/core/lib/debug/trace.h"
|
50
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
51
|
+
#include "src/core/lib/gprpp/time.h"
|
52
|
+
#include "src/core/lib/iomgr/error.h"
|
53
|
+
#include "src/core/lib/transport/bdp_estimator.h"
|
54
|
+
#include "src/core/lib/transport/error_utils.h"
|
33
55
|
#include "src/core/lib/transport/http2_errors.h"
|
34
|
-
#include "src/core/lib/transport/
|
35
|
-
#include "src/core/lib/transport/
|
56
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
57
|
+
#include "src/core/lib/transport/transport.h"
|
36
58
|
|
37
59
|
using grpc_core::HPackParser;
|
38
60
|
|
@@ -53,6 +75,10 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
|
53
75
|
const grpc_slice& slice,
|
54
76
|
int is_last);
|
55
77
|
|
78
|
+
static char get_utf8_safe_char(char c) {
|
79
|
+
return static_cast<unsigned char>(c) < 128 ? c : 32;
|
80
|
+
}
|
81
|
+
|
56
82
|
grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
57
83
|
const grpc_slice& slice) {
|
58
84
|
const uint8_t* beg = GRPC_SLICE_START_PTR(slice);
|
@@ -92,10 +118,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
92
118
|
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
93
119
|
"Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
|
94
120
|
"at byte %d",
|
95
|
-
|
121
|
+
get_utf8_safe_char(
|
122
|
+
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]),
|
96
123
|
static_cast<int>(static_cast<uint8_t>(
|
97
124
|
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state])),
|
98
|
-
*cur, static_cast<int>(*cur),
|
125
|
+
get_utf8_safe_char(*cur), static_cast<int>(*cur),
|
126
|
+
t->deframe_state));
|
99
127
|
}
|
100
128
|
++cur;
|
101
129
|
// NOLINTNEXTLINE(bugprone-misplaced-widening-cast)
|
@@ -176,12 +204,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
176
204
|
t->incoming_stream_id |= (static_cast<uint32_t>(*cur));
|
177
205
|
t->deframe_state = GRPC_DTS_FRAME;
|
178
206
|
err = init_frame_parser(t);
|
179
|
-
if (err
|
207
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
180
208
|
return err;
|
181
209
|
}
|
182
210
|
if (t->incoming_frame_size == 0) {
|
183
211
|
err = parse_frame_slice(t, grpc_empty_slice(), 1);
|
184
|
-
if (err
|
212
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
185
213
|
return err;
|
186
214
|
}
|
187
215
|
t->incoming_stream = nullptr;
|
@@ -190,10 +218,9 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
190
218
|
return GRPC_ERROR_NONE;
|
191
219
|
}
|
192
220
|
goto dts_fh_0; /* loop */
|
193
|
-
} else if (t->
|
194
|
-
t->
|
195
|
-
|
196
|
-
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
|
221
|
+
} else if (t->incoming_frame_size >
|
222
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
223
|
+
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
|
197
224
|
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
198
225
|
absl::StrFormat("Frame size %d is larger than max frame size %d",
|
199
226
|
t->incoming_frame_size,
|
@@ -212,7 +239,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
212
239
|
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
|
213
240
|
static_cast<size_t>(end - beg)),
|
214
241
|
1);
|
215
|
-
if (err
|
242
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
216
243
|
return err;
|
217
244
|
}
|
218
245
|
t->deframe_state = GRPC_DTS_FH_0;
|
@@ -225,7 +252,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
225
252
|
grpc_slice_sub_no_ref(slice, cur_offset,
|
226
253
|
cur_offset + t->incoming_frame_size),
|
227
254
|
1);
|
228
|
-
if (err
|
255
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
229
256
|
return err;
|
230
257
|
}
|
231
258
|
cur += t->incoming_frame_size;
|
@@ -237,7 +264,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
237
264
|
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
|
238
265
|
static_cast<size_t>(end - beg)),
|
239
266
|
0);
|
240
|
-
if (err
|
267
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
241
268
|
return err;
|
242
269
|
}
|
243
270
|
t->incoming_frame_size -= static_cast<uint32_t>(end - cur);
|
@@ -357,7 +384,7 @@ void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
|
|
357
384
|
|
358
385
|
static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
|
359
386
|
// Update BDP accounting since we have received a data frame.
|
360
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control
|
387
|
+
grpc_core::BdpEstimator* bdp_est = t->flow_control.bdp_estimator();
|
361
388
|
if (bdp_est) {
|
362
389
|
if (t->bdp_ping_blocked) {
|
363
390
|
t->bdp_ping_blocked = false;
|
@@ -368,17 +395,21 @@ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
|
|
368
395
|
}
|
369
396
|
grpc_chttp2_stream* s =
|
370
397
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
371
|
-
|
398
|
+
absl::Status status;
|
372
399
|
grpc_core::chttp2::FlowControlAction action;
|
373
400
|
if (s == nullptr) {
|
374
|
-
|
375
|
-
|
401
|
+
grpc_core::chttp2::TransportFlowControl::IncomingUpdateContext upd(
|
402
|
+
&t->flow_control);
|
403
|
+
status = upd.RecvData(t->incoming_frame_size);
|
404
|
+
action = upd.MakeAction();
|
376
405
|
} else {
|
377
|
-
|
378
|
-
|
406
|
+
grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
|
407
|
+
&s->flow_control);
|
408
|
+
status = upd.RecvData(t->incoming_frame_size);
|
409
|
+
action = upd.MakeAction();
|
379
410
|
}
|
380
411
|
grpc_chttp2_act_on_flowctl_action(action, t, s);
|
381
|
-
if (
|
412
|
+
if (!status.ok()) {
|
382
413
|
goto error_handler;
|
383
414
|
}
|
384
415
|
if (s == nullptr) {
|
@@ -386,33 +417,29 @@ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
|
|
386
417
|
}
|
387
418
|
s->received_bytes += t->incoming_frame_size;
|
388
419
|
s->stats.incoming.framing_bytes += 9;
|
389
|
-
if (
|
420
|
+
if (s->read_closed) {
|
390
421
|
return init_non_header_skip_frame_parser(t);
|
391
422
|
}
|
392
|
-
|
393
|
-
|
394
|
-
&s->data_parser, t->incoming_frame_flags, s->id, s);
|
395
|
-
}
|
423
|
+
status =
|
424
|
+
grpc_chttp2_data_parser_begin_frame(t->incoming_frame_flags, s->id, s);
|
396
425
|
error_handler:
|
397
|
-
|
398
|
-
if (err == GRPC_ERROR_NONE) {
|
426
|
+
if (status.ok()) {
|
399
427
|
t->incoming_stream = s;
|
400
428
|
/* t->parser = grpc_chttp2_data_parser_parse;*/
|
401
429
|
t->parser = grpc_chttp2_data_parser_parse;
|
402
|
-
t->parser_data =
|
430
|
+
t->parser_data = nullptr;
|
403
431
|
t->ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
|
404
432
|
return GRPC_ERROR_NONE;
|
405
|
-
} else if (
|
433
|
+
} else if (s != nullptr) {
|
406
434
|
/* handle stream errors by closing the stream */
|
407
|
-
|
408
|
-
|
409
|
-
}
|
435
|
+
grpc_chttp2_mark_stream_closed(t, s, true, false,
|
436
|
+
absl_status_to_grpc_error(status));
|
410
437
|
grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
|
411
438
|
GRPC_HTTP2_PROTOCOL_ERROR,
|
412
439
|
&s->stats.outgoing);
|
413
440
|
return init_non_header_skip_frame_parser(t);
|
414
441
|
} else {
|
415
|
-
return
|
442
|
+
return absl_status_to_grpc_error(status);
|
416
443
|
}
|
417
444
|
}
|
418
445
|
|
@@ -541,6 +568,10 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
541
568
|
gpr_log(GPR_ERROR, "too many header frames received");
|
542
569
|
return init_header_skip_frame_parser(t, priority_type);
|
543
570
|
}
|
571
|
+
if (frame_type == HPackParser::LogInfo::kTrailers && !t->header_eof) {
|
572
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
573
|
+
"Trailing metadata frame received without an end-o-stream");
|
574
|
+
}
|
544
575
|
t->hpack_parser.BeginFrame(
|
545
576
|
incoming_metadata_buffer,
|
546
577
|
t->settings[GRPC_ACKED_SETTINGS]
|
@@ -555,7 +586,7 @@ static grpc_error_handle init_window_update_frame_parser(
|
|
555
586
|
grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame(
|
556
587
|
&t->simple.window_update, t->incoming_frame_size,
|
557
588
|
t->incoming_frame_flags);
|
558
|
-
if (err
|
589
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
559
590
|
if (t->incoming_stream_id != 0) {
|
560
591
|
grpc_chttp2_stream* s = t->incoming_stream =
|
561
592
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
@@ -572,7 +603,7 @@ static grpc_error_handle init_window_update_frame_parser(
|
|
572
603
|
static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
|
573
604
|
grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame(
|
574
605
|
&t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
|
575
|
-
if (err
|
606
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
576
607
|
t->parser = grpc_chttp2_ping_parser_parse;
|
577
608
|
t->parser_data = &t->simple.ping;
|
578
609
|
return GRPC_ERROR_NONE;
|
@@ -581,7 +612,7 @@ static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
|
|
581
612
|
static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
|
582
613
|
grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame(
|
583
614
|
&t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
|
584
|
-
if (err
|
615
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
585
616
|
grpc_chttp2_stream* s = t->incoming_stream =
|
586
617
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
587
618
|
if (!t->incoming_stream) {
|
@@ -596,7 +627,7 @@ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
|
|
596
627
|
static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) {
|
597
628
|
grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame(
|
598
629
|
&t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
|
599
|
-
if (err
|
630
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
600
631
|
t->parser = grpc_chttp2_goaway_parser_parse;
|
601
632
|
t->parser_data = &t->goaway_parser;
|
602
633
|
return GRPC_ERROR_NONE;
|
@@ -611,7 +642,7 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
|
|
611
642
|
grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame(
|
612
643
|
&t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags,
|
613
644
|
t->settings[GRPC_PEER_SETTINGS]);
|
614
|
-
if (err
|
645
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
615
646
|
return err;
|
616
647
|
}
|
617
648
|
if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_ACK) {
|
@@ -620,6 +651,9 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
|
|
620
651
|
t->hpack_parser.hpack_table()->SetMaxBytes(
|
621
652
|
t->settings[GRPC_ACKED_SETTINGS]
|
622
653
|
[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
|
654
|
+
t->flow_control.SetAckedInitialWindow(
|
655
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
656
|
+
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]);
|
623
657
|
t->sent_local_settings = false;
|
624
658
|
}
|
625
659
|
t->parser = grpc_chttp2_settings_parser_parse;
|
@@ -633,7 +667,7 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
|
633
667
|
grpc_chttp2_stream* s = t->incoming_stream;
|
634
668
|
grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last);
|
635
669
|
intptr_t unused;
|
636
|
-
if (GPR_LIKELY(err
|
670
|
+
if (GPR_LIKELY(GRPC_ERROR_IS_NONE(err))) {
|
637
671
|
return err;
|
638
672
|
} else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, &unused)) {
|
639
673
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
@@ -20,8 +20,10 @@
|
|
20
20
|
|
21
21
|
#include <grpc/support/log.h>
|
22
22
|
|
23
|
-
#include "src/core/ext/transport/chttp2/transport/
|
23
|
+
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
24
24
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
25
|
+
#include "src/core/lib/debug/trace.h"
|
26
|
+
#include "src/core/lib/gprpp/bitset.h"
|
25
27
|
|
26
28
|
static const char* stream_list_id_string(grpc_chttp2_stream_list_id id) {
|
27
29
|
switch (id) {
|
@@ -56,7 +58,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
|
|
56
58
|
grpc_chttp2_stream* s = t->lists[id].head;
|
57
59
|
if (s) {
|
58
60
|
grpc_chttp2_stream* new_head = s->links[id].next;
|
59
|
-
GPR_ASSERT(s->included
|
61
|
+
GPR_ASSERT(s->included.is_set(id));
|
60
62
|
if (new_head) {
|
61
63
|
t->lists[id].head = new_head;
|
62
64
|
new_head->links[id].prev = nullptr;
|
@@ -64,7 +66,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
|
|
64
66
|
t->lists[id].head = nullptr;
|
65
67
|
t->lists[id].tail = nullptr;
|
66
68
|
}
|
67
|
-
s->included
|
69
|
+
s->included.clear(id);
|
68
70
|
}
|
69
71
|
*stream = s;
|
70
72
|
if (s && GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
|
@@ -76,8 +78,8 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
|
|
76
78
|
|
77
79
|
static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
78
80
|
grpc_chttp2_stream_list_id id) {
|
79
|
-
GPR_ASSERT(s->included
|
80
|
-
s->included
|
81
|
+
GPR_ASSERT(s->included.is_set(id));
|
82
|
+
s->included.clear(id);
|
81
83
|
if (s->links[id].prev) {
|
82
84
|
s->links[id].prev->links[id].next = s->links[id].next;
|
83
85
|
} else {
|
@@ -98,7 +100,7 @@ static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
98
100
|
static bool stream_list_maybe_remove(grpc_chttp2_transport* t,
|
99
101
|
grpc_chttp2_stream* s,
|
100
102
|
grpc_chttp2_stream_list_id id) {
|
101
|
-
if (s->included
|
103
|
+
if (s->included.is_set(id)) {
|
102
104
|
stream_list_remove(t, s, id);
|
103
105
|
return true;
|
104
106
|
} else {
|
@@ -110,7 +112,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
|
|
110
112
|
grpc_chttp2_stream* s,
|
111
113
|
grpc_chttp2_stream_list_id id) {
|
112
114
|
grpc_chttp2_stream* old_tail;
|
113
|
-
GPR_ASSERT(!s->included
|
115
|
+
GPR_ASSERT(!s->included.is_set(id));
|
114
116
|
old_tail = t->lists[id].tail;
|
115
117
|
s->links[id].next = nullptr;
|
116
118
|
s->links[id].prev = old_tail;
|
@@ -120,7 +122,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
|
|
120
122
|
t->lists[id].head = s;
|
121
123
|
}
|
122
124
|
t->lists[id].tail = s;
|
123
|
-
s->included
|
125
|
+
s->included.set(id);
|
124
126
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
|
125
127
|
gpr_log(GPR_INFO, "%p[%d][%s]: add to %s", t, s->id,
|
126
128
|
t->is_client ? "cli" : "svr", stream_list_id_string(id));
|
@@ -129,7 +131,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
|
|
129
131
|
|
130
132
|
static bool stream_list_add(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
131
133
|
grpc_chttp2_stream_list_id id) {
|
132
|
-
if (s->included
|
134
|
+
if (s->included.is_set(id)) {
|
133
135
|
return false;
|
134
136
|
}
|
135
137
|
stream_list_add_tail(t, s, id);
|
@@ -185,7 +187,6 @@ void grpc_chttp2_list_remove_waiting_for_concurrency(grpc_chttp2_transport* t,
|
|
185
187
|
|
186
188
|
void grpc_chttp2_list_add_stalled_by_transport(grpc_chttp2_transport* t,
|
187
189
|
grpc_chttp2_stream* s) {
|
188
|
-
GPR_ASSERT(t->flow_control->flow_control_enabled());
|
189
190
|
stream_list_add(t, s, GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT);
|
190
191
|
}
|
191
192
|
|
@@ -201,7 +202,6 @@ void grpc_chttp2_list_remove_stalled_by_transport(grpc_chttp2_transport* t,
|
|
201
202
|
|
202
203
|
void grpc_chttp2_list_add_stalled_by_stream(grpc_chttp2_transport* t,
|
203
204
|
grpc_chttp2_stream* s) {
|
204
|
-
GPR_ASSERT(t->flow_control->flow_control_enabled());
|
205
205
|
stream_list_add(t, s, GRPC_CHTTP2_LIST_STALLED_BY_STREAM);
|
206
206
|
}
|
207
207
|
|