grpc 1.45.0 → 1.47.0
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 +69 -110
- data/include/grpc/event_engine/event_engine.h +42 -7
- 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 +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- 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 +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +223 -113
- data/src/core/ext/filters/client_channel/client_channel.h +28 -6
- 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 +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- 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 +138 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +98 -112
- data/src/core/ext/filters/client_channel/http_proxy.h +20 -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 +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- 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 +408 -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 +1038 -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 +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +277 -195
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +158 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +46 -20
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +117 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +142 -63
- 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 +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +37 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +300 -291
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- 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 +2 -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 +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +226 -300
- 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 +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- 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 +73 -220
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- 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 +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +182 -79
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +60 -5
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- 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 +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +161 -165
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- 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 +558 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +123 -366
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +87 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -31
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -361
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +102 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -19
- 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 +205 -45
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- 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 +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- 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 +14 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +13 -15
- 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 +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -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 +28 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- 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 +62 -15
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- 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/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +10 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +125 -109
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -4
- data/src/core/ext/xds/xds_listener.cc +20 -10
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +19 -23
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +71 -6
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +12 -3
- data/src/core/lib/channel/channel_args.cc +179 -81
- data/src/core/lib/channel/channel_args.h +242 -11
- data/src/core/lib/channel/channel_args_preconditioning.cc +5 -11
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +51 -8
- data/src/core/lib/channel/channel_stack_builder.cc +9 -84
- data/src/core/lib/channel/channel_stack_builder.h +35 -26
- data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
- 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 +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +848 -260
- data/src/core/lib/channel/promise_based_filter.h +215 -68
- 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_internal.cc +46 -17
- data/src/core/lib/compression/compression_internal.h +1 -1
- 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_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- 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 +12 -2
- 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.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- 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/{ext/filters/max_age/max_age_filter.h → lib/event_engine/trace.cc} +3 -11
- 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/tls.h +4 -5
- data/src/core/lib/gprpp/bitset.h +17 -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/cpp_impl_of.h +4 -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 -1
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- 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 +25 -5
- 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 +20 -0
- data/src/core/lib/gprpp/time.h +7 -2
- 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 +30 -2
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +6 -7
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +7 -11
- 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 +0 -1
- data/src/core/lib/iomgr/{event_engine/pollset.h → iomgr_fwd.h} +9 -9
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -8
- 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 +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- 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_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +14 -7
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +77 -37
- data/src/core/lib/iomgr/tcp_server_posix.cc +50 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- 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 +13 -4
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +148 -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/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +103 -0
- data/src/core/lib/promise/loop.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 +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +19 -31
- data/src/core/lib/resource_quota/api.h +5 -2
- 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 +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +16 -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/grpc_server_authz_filter.cc +12 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +5 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +19 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -9
- data/src/core/lib/security/credentials/credentials.h +29 -39
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +4 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +28 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +22 -10
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +12 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +47 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +34 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +66 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +57 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +10 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +26 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +213 -133
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +11 -9
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- 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 +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_buffer_api.cc} +11 -12
- 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_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- 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 +1052 -917
- data/src/core/lib/surface/call.h +16 -16
- 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 +181 -243
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +3 -5
- 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 +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- 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 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +72 -70
- data/src/core/lib/surface/server.h +40 -11
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- 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/byte_stream.cc +6 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- 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 +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- 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 +24 -10
- 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 +142 -269
- 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 -17
- data/src/core/lib/transport/transport.h +48 -7
- data/src/core/lib/transport/transport_impl.h +14 -3
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- 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 +13 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- 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 +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +100 -72
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- 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/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- 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/promise.h +0 -51
- 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/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -21,20 +21,40 @@
|
|
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"
|
39
|
+
#include "src/core/lib/channel/channel_args.h"
|
30
40
|
#include "src/core/lib/channel/channel_stack.h"
|
31
41
|
#include "src/core/lib/channel/context.h"
|
32
42
|
#include "src/core/lib/gprpp/debug_location.h"
|
43
|
+
#include "src/core/lib/gprpp/time.h"
|
44
|
+
#include "src/core/lib/iomgr/call_combiner.h"
|
45
|
+
#include "src/core/lib/iomgr/closure.h"
|
33
46
|
#include "src/core/lib/iomgr/error.h"
|
47
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
48
|
+
#include "src/core/lib/iomgr/polling_entity.h"
|
49
|
+
#include "src/core/lib/promise/activity.h"
|
34
50
|
#include "src/core/lib/promise/arena_promise.h"
|
35
51
|
#include "src/core/lib/promise/context.h"
|
36
|
-
#include "src/core/lib/promise/
|
52
|
+
#include "src/core/lib/promise/latch.h"
|
53
|
+
#include "src/core/lib/promise/poll.h"
|
54
|
+
#include "src/core/lib/resource_quota/arena.h"
|
37
55
|
#include "src/core/lib/transport/error_utils.h"
|
56
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
57
|
+
#include "src/core/lib/transport/transport.h"
|
38
58
|
|
39
59
|
namespace grpc_core {
|
40
60
|
|
@@ -42,21 +62,28 @@ class ChannelFilter {
|
|
42
62
|
public:
|
43
63
|
class Args {
|
44
64
|
public:
|
45
|
-
Args() : Args(nullptr) {}
|
46
|
-
explicit Args(grpc_channel_stack* channel_stack
|
47
|
-
|
65
|
+
Args() : Args(nullptr, nullptr) {}
|
66
|
+
explicit Args(grpc_channel_stack* channel_stack,
|
67
|
+
grpc_channel_element* channel_element)
|
68
|
+
: channel_stack_(channel_stack), channel_element_(channel_element) {}
|
48
69
|
|
49
70
|
grpc_channel_stack* channel_stack() const { return channel_stack_; }
|
71
|
+
grpc_channel_element* uninitialized_channel_element() {
|
72
|
+
return channel_element_;
|
73
|
+
}
|
50
74
|
|
51
75
|
private:
|
52
76
|
friend class ChannelFilter;
|
53
77
|
grpc_channel_stack* channel_stack_;
|
78
|
+
grpc_channel_element* channel_element_;
|
54
79
|
};
|
55
80
|
|
81
|
+
// Perform post-initialization step (if any).
|
82
|
+
virtual void PostInit() {}
|
83
|
+
|
56
84
|
// Construct a promise for one call.
|
57
|
-
virtual ArenaPromise<
|
58
|
-
|
59
|
-
NextPromiseFactory next_promise_factory) = 0;
|
85
|
+
virtual ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
86
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) = 0;
|
60
87
|
|
61
88
|
// Start a legacy transport op
|
62
89
|
// Return true if the op was handled, false if it should be passed to the
|
@@ -65,32 +92,50 @@ class ChannelFilter {
|
|
65
92
|
// structures going forward.
|
66
93
|
virtual bool StartTransportOp(grpc_transport_op*) { return false; }
|
67
94
|
|
68
|
-
|
95
|
+
// Perform a legacy get info call
|
96
|
+
// Return true if the op was handled, false if it should be passed to the
|
97
|
+
// next filter.
|
98
|
+
// TODO(ctiller): design a new API for this
|
99
|
+
virtual bool GetChannelInfo(const grpc_channel_info*) { return false; }
|
100
|
+
|
69
101
|
virtual ~ChannelFilter() = default;
|
70
102
|
};
|
71
103
|
|
72
104
|
// Designator for whether a filter is client side or server side.
|
73
|
-
// Please don't use this outside calls to MakePromiseBasedFilter - it's
|
74
|
-
// to be deleted once the promise conversion is complete.
|
105
|
+
// Please don't use this outside calls to MakePromiseBasedFilter - it's
|
106
|
+
// intended to be deleted once the promise conversion is complete.
|
75
107
|
enum class FilterEndpoint {
|
76
108
|
kClient,
|
77
109
|
kServer,
|
78
110
|
};
|
79
111
|
|
112
|
+
// Flags for MakePromiseBasedFilter.
|
113
|
+
static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
|
114
|
+
static constexpr uint8_t kFilterIsLast = 2;
|
115
|
+
|
80
116
|
namespace promise_filter_detail {
|
81
117
|
|
118
|
+
// Proxy channel filter for initialization failure, since we must leave a
|
119
|
+
// valid filter in place.
|
120
|
+
class InvalidChannelFilter : public ChannelFilter {
|
121
|
+
public:
|
122
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
123
|
+
CallArgs, NextPromiseFactory) override {
|
124
|
+
abort();
|
125
|
+
}
|
126
|
+
};
|
127
|
+
|
82
128
|
// Call data shared between all implementations of promise-based filters.
|
83
129
|
class BaseCallData : public Activity, private Wakeable {
|
84
130
|
public:
|
85
|
-
BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
86
|
-
|
87
|
-
|
88
|
-
arena_(args->arena),
|
89
|
-
call_combiner_(args->call_combiner),
|
90
|
-
deadline_(args->deadline),
|
91
|
-
context_(args->context) {}
|
131
|
+
BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
132
|
+
uint8_t flags);
|
133
|
+
~BaseCallData() override;
|
92
134
|
|
93
|
-
void set_pollent(grpc_polling_entity* pollent) {
|
135
|
+
void set_pollent(grpc_polling_entity* pollent) {
|
136
|
+
GPR_ASSERT(nullptr ==
|
137
|
+
pollent_.exchange(pollent, std::memory_order_release));
|
138
|
+
}
|
94
139
|
|
95
140
|
// Activity implementation (partial).
|
96
141
|
void Orphan() final;
|
@@ -112,11 +157,75 @@ class BaseCallData : public Activity, private Wakeable {
|
|
112
157
|
: promise_detail::Context<Arena>(call_data->arena_),
|
113
158
|
promise_detail::Context<grpc_call_context_element>(
|
114
159
|
call_data->context_),
|
115
|
-
promise_detail::Context<grpc_polling_entity>(
|
160
|
+
promise_detail::Context<grpc_polling_entity>(
|
161
|
+
call_data->pollent_.load(std::memory_order_acquire)),
|
116
162
|
promise_detail::Context<CallFinalization>(&call_data->finalization_) {
|
117
163
|
}
|
118
164
|
};
|
119
165
|
|
166
|
+
class Flusher {
|
167
|
+
public:
|
168
|
+
explicit Flusher(BaseCallData* call);
|
169
|
+
// Calls closures, schedules batches, relinquishes call combiner.
|
170
|
+
~Flusher();
|
171
|
+
|
172
|
+
void Resume(grpc_transport_stream_op_batch* batch) {
|
173
|
+
release_.push_back(batch);
|
174
|
+
}
|
175
|
+
|
176
|
+
void Cancel(grpc_transport_stream_op_batch* batch,
|
177
|
+
grpc_error_handle error) {
|
178
|
+
grpc_transport_stream_op_batch_queue_finish_with_failure(batch, error,
|
179
|
+
&call_closures_);
|
180
|
+
}
|
181
|
+
|
182
|
+
void Complete(grpc_transport_stream_op_batch* batch) {
|
183
|
+
call_closures_.Add(batch->on_complete, GRPC_ERROR_NONE,
|
184
|
+
"Flusher::Complete");
|
185
|
+
}
|
186
|
+
|
187
|
+
void AddClosure(grpc_closure* closure, grpc_error_handle error,
|
188
|
+
const char* reason) {
|
189
|
+
call_closures_.Add(closure, error, reason);
|
190
|
+
}
|
191
|
+
|
192
|
+
private:
|
193
|
+
absl::InlinedVector<grpc_transport_stream_op_batch*, 1> release_;
|
194
|
+
CallCombinerClosureList call_closures_;
|
195
|
+
BaseCallData* const call_;
|
196
|
+
};
|
197
|
+
|
198
|
+
// Smart pointer like wrapper around a batch.
|
199
|
+
// Creation makes a ref count of one capture.
|
200
|
+
// Copying increments.
|
201
|
+
// Must be moved from or resumed or cancelled before destruction.
|
202
|
+
class CapturedBatch final {
|
203
|
+
public:
|
204
|
+
CapturedBatch();
|
205
|
+
explicit CapturedBatch(grpc_transport_stream_op_batch* batch);
|
206
|
+
~CapturedBatch();
|
207
|
+
CapturedBatch(const CapturedBatch&);
|
208
|
+
CapturedBatch& operator=(const CapturedBatch&);
|
209
|
+
CapturedBatch(CapturedBatch&&) noexcept;
|
210
|
+
CapturedBatch& operator=(CapturedBatch&&) noexcept;
|
211
|
+
|
212
|
+
grpc_transport_stream_op_batch* operator->() { return batch_; }
|
213
|
+
bool is_captured() const { return batch_ != nullptr; }
|
214
|
+
|
215
|
+
// Resume processing this batch (releases one ref, passes it down the
|
216
|
+
// stack)
|
217
|
+
void ResumeWith(Flusher* releaser);
|
218
|
+
// Cancel this batch immediately (releases all refs)
|
219
|
+
void CancelWith(grpc_error_handle error, Flusher* releaser);
|
220
|
+
// Complete this batch (pass it up) assuming refs drop to zero
|
221
|
+
void CompleteWith(Flusher* releaser);
|
222
|
+
|
223
|
+
void Swap(CapturedBatch* other) { std::swap(batch_, other->batch_); }
|
224
|
+
|
225
|
+
private:
|
226
|
+
grpc_transport_stream_op_batch* batch_;
|
227
|
+
};
|
228
|
+
|
120
229
|
static MetadataHandle<grpc_metadata_batch> WrapMetadata(
|
121
230
|
grpc_metadata_batch* p) {
|
122
231
|
return MetadataHandle<grpc_metadata_batch>(p);
|
@@ -127,10 +236,19 @@ class BaseCallData : public Activity, private Wakeable {
|
|
127
236
|
return p.Unwrap();
|
128
237
|
}
|
129
238
|
|
239
|
+
Arena* arena() { return arena_; }
|
130
240
|
grpc_call_element* elem() const { return elem_; }
|
131
241
|
CallCombiner* call_combiner() const { return call_combiner_; }
|
132
242
|
Timestamp deadline() const { return deadline_; }
|
133
243
|
grpc_call_stack* call_stack() const { return call_stack_; }
|
244
|
+
Latch<ServerMetadata*>* server_initial_metadata_latch() const {
|
245
|
+
return server_initial_metadata_latch_;
|
246
|
+
}
|
247
|
+
|
248
|
+
bool is_last() const {
|
249
|
+
return grpc_call_stack_element(call_stack_, call_stack_->count - 1) ==
|
250
|
+
elem_;
|
251
|
+
}
|
134
252
|
|
135
253
|
private:
|
136
254
|
// Wakeable implementation.
|
@@ -146,12 +264,14 @@ class BaseCallData : public Activity, private Wakeable {
|
|
146
264
|
const Timestamp deadline_;
|
147
265
|
CallFinalization finalization_;
|
148
266
|
grpc_call_context_element* const context_;
|
149
|
-
grpc_polling_entity
|
267
|
+
std::atomic<grpc_polling_entity*> pollent_{nullptr};
|
268
|
+
Latch<ServerMetadata*>* server_initial_metadata_latch_ = nullptr;
|
150
269
|
};
|
151
270
|
|
152
271
|
class ClientCallData : public BaseCallData {
|
153
272
|
public:
|
154
|
-
ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
273
|
+
ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
274
|
+
uint8_t flags);
|
155
275
|
~ClientCallData() override;
|
156
276
|
|
157
277
|
// Activity implementation.
|
@@ -177,7 +297,8 @@ class ClientCallData : public BaseCallData {
|
|
177
297
|
// Start state: no op seen
|
178
298
|
kInitial,
|
179
299
|
// We saw the op, and since it was bundled with send initial metadata, we
|
180
|
-
// queued it until the send initial metadata can be sent to the next
|
300
|
+
// queued it until the send initial metadata can be sent to the next
|
301
|
+
// filter.
|
181
302
|
kQueued,
|
182
303
|
// We've forwarded the op to the next filter.
|
183
304
|
kForwarded,
|
@@ -192,42 +313,47 @@ class ClientCallData : public BaseCallData {
|
|
192
313
|
kCancelled
|
193
314
|
};
|
194
315
|
|
316
|
+
struct RecvInitialMetadata;
|
317
|
+
class PollContext;
|
318
|
+
|
195
319
|
// Handle cancellation.
|
196
320
|
void Cancel(grpc_error_handle error);
|
197
321
|
// Begin running the promise - which will ultimately take some initial
|
198
322
|
// metadata and return some trailing metadata.
|
199
|
-
void StartPromise();
|
200
|
-
// Interject our callback into the op batch for recv trailing metadata
|
201
|
-
// Stash a pointer to the trailing metadata that will be filled in,
|
202
|
-
// manipulate it later.
|
203
|
-
void HookRecvTrailingMetadata(
|
323
|
+
void StartPromise(Flusher* flusher);
|
324
|
+
// Interject our callback into the op batch for recv trailing metadata
|
325
|
+
// ready. Stash a pointer to the trailing metadata that will be filled in,
|
326
|
+
// so we can manipulate it later.
|
327
|
+
void HookRecvTrailingMetadata(CapturedBatch batch);
|
204
328
|
// Construct a promise that will "call" the next filter.
|
205
329
|
// Effectively:
|
206
330
|
// - put the modified initial metadata into the batch to be sent down.
|
207
331
|
// - return a wrapper around PollTrailingMetadata as the promise.
|
208
|
-
ArenaPromise<
|
209
|
-
ClientInitialMetadata initial_metadata);
|
332
|
+
ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
|
210
333
|
// Wrapper to make it look like we're calling the next filter as a promise.
|
211
334
|
// First poll: send the send_initial_metadata op down the stack.
|
212
335
|
// All polls: await receiving the trailing metadata, then return it to the
|
213
336
|
// application.
|
214
|
-
Poll<
|
337
|
+
Poll<ServerMetadataHandle> PollTrailingMetadata();
|
215
338
|
static void RecvTrailingMetadataReadyCallback(void* arg,
|
216
339
|
grpc_error_handle error);
|
217
340
|
void RecvTrailingMetadataReady(grpc_error_handle error);
|
218
|
-
|
341
|
+
void RecvInitialMetadataReady(grpc_error_handle error);
|
342
|
+
// Given an error, fill in ServerMetadataHandle to represent that error.
|
219
343
|
void SetStatusFromError(grpc_metadata_batch* metadata,
|
220
344
|
grpc_error_handle error);
|
221
345
|
// Wakeup and poll the promise if appropriate.
|
222
|
-
void WakeInsideCombiner();
|
346
|
+
void WakeInsideCombiner(Flusher* flusher);
|
223
347
|
void OnWakeup() override;
|
224
348
|
|
225
349
|
// Contained promise
|
226
|
-
ArenaPromise<
|
350
|
+
ArenaPromise<ServerMetadataHandle> promise_;
|
227
351
|
// Queued batch containing at least a send_initial_metadata op.
|
228
|
-
|
352
|
+
CapturedBatch send_initial_metadata_batch_;
|
229
353
|
// Pointer to where trailing metadata will be stored.
|
230
354
|
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
355
|
+
// State tracking recv initial metadata for filters that care about it.
|
356
|
+
RecvInitialMetadata* recv_initial_metadata_ = nullptr;
|
231
357
|
// Closure to call when we're done with the trailing metadata.
|
232
358
|
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
233
359
|
// Our closure pointing to RecvTrailingMetadataReadyCallback.
|
@@ -238,17 +364,14 @@ class ClientCallData : public BaseCallData {
|
|
238
364
|
SendInitialState send_initial_state_ = SendInitialState::kInitial;
|
239
365
|
// State of the recv_trailing_metadata op.
|
240
366
|
RecvTrailingState recv_trailing_state_ = RecvTrailingState::kInitial;
|
241
|
-
//
|
242
|
-
|
243
|
-
// Should we repoll after completing polling?
|
244
|
-
bool repoll_ = false;
|
245
|
-
// Whether we should forward send initial metadata after polling?
|
246
|
-
bool forward_send_initial_metadata_ = false;
|
367
|
+
// Polling related data. Non-null if we're actively polling
|
368
|
+
PollContext* poll_ctx_ = nullptr;
|
247
369
|
};
|
248
370
|
|
249
371
|
class ServerCallData : public BaseCallData {
|
250
372
|
public:
|
251
|
-
ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
373
|
+
ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
374
|
+
uint8_t flags);
|
252
375
|
~ServerCallData() override;
|
253
376
|
|
254
377
|
// Activity implementation.
|
@@ -283,29 +406,33 @@ class ServerCallData : public BaseCallData {
|
|
283
406
|
kCancelled
|
284
407
|
};
|
285
408
|
|
409
|
+
class PollContext;
|
410
|
+
struct SendInitialMetadata;
|
411
|
+
|
286
412
|
// Handle cancellation.
|
287
|
-
void Cancel(grpc_error_handle error);
|
413
|
+
void Cancel(grpc_error_handle error, Flusher* flusher);
|
288
414
|
// Construct a promise that will "call" the next filter.
|
289
415
|
// Effectively:
|
290
416
|
// - put the modified initial metadata into the batch being sent up.
|
291
417
|
// - return a wrapper around PollTrailingMetadata as the promise.
|
292
|
-
ArenaPromise<
|
293
|
-
ClientInitialMetadata initial_metadata);
|
418
|
+
ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
|
294
419
|
// Wrapper to make it look like we're calling the next filter as a promise.
|
295
420
|
// All polls: await sending the trailing metadata, then foward it down the
|
296
421
|
// stack.
|
297
|
-
Poll<
|
422
|
+
Poll<ServerMetadataHandle> PollTrailingMetadata();
|
298
423
|
static void RecvInitialMetadataReadyCallback(void* arg,
|
299
424
|
grpc_error_handle error);
|
300
425
|
void RecvInitialMetadataReady(grpc_error_handle error);
|
301
426
|
// Wakeup and poll the promise if appropriate.
|
302
|
-
void WakeInsideCombiner(
|
427
|
+
void WakeInsideCombiner(Flusher* flusher);
|
303
428
|
void OnWakeup() override;
|
304
429
|
|
305
430
|
// Contained promise
|
306
|
-
ArenaPromise<
|
431
|
+
ArenaPromise<ServerMetadataHandle> promise_;
|
307
432
|
// Pointer to where initial metadata will be stored.
|
308
433
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
434
|
+
// State for sending initial metadata.
|
435
|
+
SendInitialMetadata* send_initial_metadata_ = nullptr;
|
309
436
|
// Closure to call when we're done with the trailing metadata.
|
310
437
|
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
311
438
|
// Our closure pointing to RecvInitialMetadataReadyCallback.
|
@@ -313,13 +440,13 @@ class ServerCallData : public BaseCallData {
|
|
313
440
|
// Error received during cancellation.
|
314
441
|
grpc_error_handle cancelled_error_ = GRPC_ERROR_NONE;
|
315
442
|
// Trailing metadata batch
|
316
|
-
|
443
|
+
CapturedBatch send_trailing_metadata_batch_;
|
317
444
|
// State of the send_initial_metadata op.
|
318
445
|
RecvInitialState recv_initial_state_ = RecvInitialState::kInitial;
|
319
446
|
// State of the recv_trailing_metadata op.
|
320
447
|
SendTrailingState send_trailing_state_ = SendTrailingState::kInitial;
|
321
|
-
//
|
322
|
-
|
448
|
+
// Current poll context (or nullptr if not polling).
|
449
|
+
PollContext* poll_ctx_ = nullptr;
|
323
450
|
// Whether to forward the recv_initial_metadata op at the end of promise
|
324
451
|
// wakeup.
|
325
452
|
bool forward_recv_initial_metadata_callback_ = false;
|
@@ -351,11 +478,9 @@ class CallData<ChannelFilter, FilterEndpoint::kServer> : public ServerCallData {
|
|
351
478
|
// class SomeChannelFilter : public ChannelFilter {
|
352
479
|
// public:
|
353
480
|
// static absl::StatusOr<SomeChannelFilter> Create(
|
354
|
-
// ChannelFilter::Args filter_args);
|
481
|
+
// ChannelArgs channel_args, ChannelFilter::Args filter_args);
|
355
482
|
// };
|
356
|
-
|
357
|
-
// some way on ChannelFilter.
|
358
|
-
template <typename F, FilterEndpoint kEndpoint>
|
483
|
+
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
359
484
|
absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value, grpc_channel_filter>
|
360
485
|
MakePromiseBasedFilter(const char* name) {
|
361
486
|
using CallData = promise_filter_detail::CallData<F, kEndpoint>;
|
@@ -366,15 +491,16 @@ MakePromiseBasedFilter(const char* name) {
|
|
366
491
|
static_cast<CallData*>(elem->call_data)->StartBatch(batch);
|
367
492
|
},
|
368
493
|
// make_call_promise
|
369
|
-
[](grpc_channel_element* elem,
|
494
|
+
[](grpc_channel_element* elem, CallArgs call_args,
|
370
495
|
NextPromiseFactory next_promise_factory) {
|
371
|
-
return static_cast<
|
372
|
-
->MakeCallPromise(std::move(
|
496
|
+
return static_cast<ChannelFilter*>(elem->channel_data)
|
497
|
+
->MakeCallPromise(std::move(call_args),
|
373
498
|
std::move(next_promise_factory));
|
374
499
|
},
|
375
500
|
// start_transport_op
|
376
501
|
[](grpc_channel_element* elem, grpc_transport_op* op) {
|
377
|
-
if (!static_cast<
|
502
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
503
|
+
->StartTransportOp(op)) {
|
378
504
|
grpc_channel_next_op(elem, op);
|
379
505
|
}
|
380
506
|
},
|
@@ -382,7 +508,7 @@ MakePromiseBasedFilter(const char* name) {
|
|
382
508
|
sizeof(CallData),
|
383
509
|
// init_call_elem
|
384
510
|
[](grpc_call_element* elem, const grpc_call_element_args* args) {
|
385
|
-
new (elem->call_data) CallData(elem, args);
|
511
|
+
new (elem->call_data) CallData(elem, args, kFlags);
|
386
512
|
return GRPC_ERROR_NONE;
|
387
513
|
},
|
388
514
|
// set_pollset_or_pollset_set
|
@@ -391,28 +517,49 @@ MakePromiseBasedFilter(const char* name) {
|
|
391
517
|
},
|
392
518
|
// destroy_call_elem
|
393
519
|
[](grpc_call_element* elem, const grpc_call_final_info* final_info,
|
394
|
-
grpc_closure*) {
|
520
|
+
grpc_closure* then_schedule_closure) {
|
395
521
|
auto* cd = static_cast<CallData*>(elem->call_data);
|
396
522
|
cd->Finalize(final_info);
|
397
523
|
cd->~CallData();
|
524
|
+
if ((kFlags & kFilterIsLast) != 0) {
|
525
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
|
526
|
+
} else {
|
527
|
+
GPR_ASSERT(then_schedule_closure == nullptr);
|
528
|
+
}
|
398
529
|
},
|
399
530
|
// sizeof_channel_data
|
400
531
|
sizeof(F),
|
401
532
|
// init_channel_elem
|
402
533
|
[](grpc_channel_element* elem, grpc_channel_element_args* args) {
|
403
|
-
GPR_ASSERT(
|
404
|
-
auto status = F::Create(args->channel_args,
|
405
|
-
ChannelFilter::Args(args->channel_stack));
|
406
|
-
if (!status.ok())
|
534
|
+
GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
|
535
|
+
auto status = F::Create(ChannelArgs::FromC(args->channel_args),
|
536
|
+
ChannelFilter::Args(args->channel_stack, elem));
|
537
|
+
if (!status.ok()) {
|
538
|
+
static_assert(
|
539
|
+
sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
|
540
|
+
"InvalidChannelFilter must fit in F");
|
541
|
+
new (elem->channel_data)
|
542
|
+
promise_filter_detail::InvalidChannelFilter();
|
543
|
+
return absl_status_to_grpc_error(status.status());
|
544
|
+
}
|
407
545
|
new (elem->channel_data) F(std::move(*status));
|
408
546
|
return GRPC_ERROR_NONE;
|
409
547
|
},
|
548
|
+
// post_init_channel_elem
|
549
|
+
[](grpc_channel_stack*, grpc_channel_element* elem) {
|
550
|
+
static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
|
551
|
+
},
|
410
552
|
// destroy_channel_elem
|
411
553
|
[](grpc_channel_element* elem) {
|
412
|
-
static_cast<
|
554
|
+
static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
|
413
555
|
},
|
414
556
|
// get_channel_info
|
415
|
-
|
557
|
+
[](grpc_channel_element* elem, const grpc_channel_info* info) {
|
558
|
+
if (!static_cast<ChannelFilter*>(elem->channel_data)
|
559
|
+
->GetChannelInfo(info)) {
|
560
|
+
grpc_channel_next_get_info(elem, info);
|
561
|
+
}
|
562
|
+
},
|
416
563
|
// name
|
417
564
|
name,
|
418
565
|
};
|
@@ -52,6 +52,48 @@ const char* CompressionAlgorithmAsString(grpc_compression_algorithm algorithm) {
|
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|
55
|
+
namespace {
|
56
|
+
class CommaSeparatedLists {
|
57
|
+
public:
|
58
|
+
CommaSeparatedLists() : lists_{}, text_buffer_{} {
|
59
|
+
char* text_buffer = text_buffer_;
|
60
|
+
auto add_char = [&text_buffer, this](char c) {
|
61
|
+
if (text_buffer - text_buffer_ == kTextBufferSize) abort();
|
62
|
+
*text_buffer++ = c;
|
63
|
+
};
|
64
|
+
for (size_t list = 0; list < kNumLists; ++list) {
|
65
|
+
char* start = text_buffer;
|
66
|
+
for (size_t algorithm = 0; algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
|
67
|
+
++algorithm) {
|
68
|
+
if ((list & (1 << algorithm)) == 0) continue;
|
69
|
+
if (start != text_buffer) {
|
70
|
+
add_char(',');
|
71
|
+
add_char(' ');
|
72
|
+
}
|
73
|
+
const char* name = CompressionAlgorithmAsString(
|
74
|
+
static_cast<grpc_compression_algorithm>(algorithm));
|
75
|
+
for (const char* p = name; *p != '\0'; ++p) {
|
76
|
+
add_char(*p);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
lists_[list] = absl::string_view(start, text_buffer - start);
|
80
|
+
}
|
81
|
+
if (text_buffer - text_buffer_ != kTextBufferSize) abort();
|
82
|
+
}
|
83
|
+
|
84
|
+
absl::string_view operator[](size_t list) const { return lists_[list]; }
|
85
|
+
|
86
|
+
private:
|
87
|
+
static constexpr size_t kNumLists = 1 << GRPC_COMPRESS_ALGORITHMS_COUNT;
|
88
|
+
// Experimentally determined (tweak things until it runs).
|
89
|
+
static constexpr size_t kTextBufferSize = 86;
|
90
|
+
absl::string_view lists_[kNumLists];
|
91
|
+
char text_buffer_[kTextBufferSize];
|
92
|
+
};
|
93
|
+
|
94
|
+
const CommaSeparatedLists kCommaSeparatedLists;
|
95
|
+
} // namespace
|
96
|
+
|
55
97
|
absl::optional<grpc_compression_algorithm> ParseCompressionAlgorithm(
|
56
98
|
absl::string_view algorithm) {
|
57
99
|
if (algorithm == "identity") {
|
@@ -165,19 +207,12 @@ void CompressionAlgorithmSet::Set(grpc_compression_algorithm algorithm) {
|
|
165
207
|
}
|
166
208
|
}
|
167
209
|
|
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, ", ");
|
210
|
+
absl::string_view CompressionAlgorithmSet::ToString() const {
|
211
|
+
return kCommaSeparatedLists[ToLegacyBitmask()];
|
177
212
|
}
|
178
213
|
|
179
214
|
Slice CompressionAlgorithmSet::ToSlice() const {
|
180
|
-
return Slice::
|
215
|
+
return Slice::FromStaticString(ToString());
|
181
216
|
}
|
182
217
|
|
183
218
|
CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
|
@@ -194,13 +229,7 @@ CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
|
|
194
229
|
}
|
195
230
|
|
196
231
|
uint32_t CompressionAlgorithmSet::ToLegacyBitmask() const {
|
197
|
-
uint32_t
|
198
|
-
for (size_t i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
|
199
|
-
if (set_.is_set(i)) {
|
200
|
-
x |= (1u << i);
|
201
|
-
}
|
202
|
-
}
|
203
|
-
return x;
|
232
|
+
return set_.ToInt<uint32_t>();
|
204
233
|
}
|
205
234
|
|
206
235
|
absl::optional<grpc_compression_algorithm>
|
@@ -73,7 +73,7 @@ class CompressionAlgorithmSet {
|
|
73
73
|
void Set(grpc_compression_algorithm algorithm);
|
74
74
|
|
75
75
|
// Return a comma separated string of the algorithms in this set.
|
76
|
-
|
76
|
+
absl::string_view ToString() const;
|
77
77
|
Slice ToSlice() const;
|
78
78
|
|
79
79
|
// Return a bitmask of the algorithms in this set.
|
@@ -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
|
|