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,14 +21,249 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <stddef.h>
|
25
|
+
|
24
26
|
#include <string>
|
27
|
+
#include <type_traits>
|
28
|
+
#include <utility>
|
29
|
+
|
30
|
+
#include "absl/meta/type_traits.h"
|
31
|
+
#include "absl/strings/string_view.h"
|
32
|
+
#include "absl/types/optional.h"
|
33
|
+
#include "absl/types/variant.h"
|
25
34
|
|
26
35
|
#include <grpc/impl/codegen/grpc_types.h>
|
27
36
|
|
37
|
+
#include "src/core/lib/avl/avl.h"
|
38
|
+
#include "src/core/lib/gpr/useful.h"
|
39
|
+
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
40
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
41
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
42
|
+
#include "src/core/lib/gprpp/time.h"
|
28
43
|
#include "src/core/lib/surface/channel_stack_type.h"
|
29
44
|
|
30
45
|
// Channel args are intentionally immutable, to avoid the need for locking.
|
31
46
|
|
47
|
+
namespace grpc_core {
|
48
|
+
|
49
|
+
// Define a traits object for vtable lookup - allows us to integrate with
|
50
|
+
// existing code easily (just define the trait!) and allows some magic in
|
51
|
+
// ChannelArgs to automatically derive a vtable from a T*.
|
52
|
+
// To participate as a pointer, instances should expose the function:
|
53
|
+
// // Gets the vtable for this type
|
54
|
+
// static const grpc_channel_arg_vtable* VTable();
|
55
|
+
// // Performs any mutations required for channel args to own a pointer
|
56
|
+
// // Only needed if ChannelArgs::Set is to be called with a raw pointer.
|
57
|
+
// static void* TakeUnownedPointer(T* p);
|
58
|
+
template <typename T, typename Ignored = void /* for SFINAE */>
|
59
|
+
struct ChannelArgTypeTraits;
|
60
|
+
|
61
|
+
// Specialization for ref-counted pointers.
|
62
|
+
// Types should expose:
|
63
|
+
// static int ChannelArgsCompare(const T* a, const T* b);
|
64
|
+
template <typename T>
|
65
|
+
struct ChannelArgTypeTraits<
|
66
|
+
T,
|
67
|
+
absl::enable_if_t<
|
68
|
+
std::is_base_of<RefCounted<T>, T>::value ||
|
69
|
+
std::is_base_of<RefCounted<T, NonPolymorphicRefCount>, T>::value ||
|
70
|
+
std::is_base_of<DualRefCounted<T>, T>::value,
|
71
|
+
void>> {
|
72
|
+
static const grpc_arg_pointer_vtable* VTable() {
|
73
|
+
static const grpc_arg_pointer_vtable tbl = {
|
74
|
+
// copy
|
75
|
+
[](void* p) -> void* { return static_cast<T*>(p)->Ref().release(); },
|
76
|
+
// destroy
|
77
|
+
[](void* p) { static_cast<T*>(p)->Unref(); },
|
78
|
+
// compare
|
79
|
+
[](void* p1, void* p2) {
|
80
|
+
return T::ChannelArgsCompare(static_cast<const T*>(p1),
|
81
|
+
static_cast<const T*>(p2));
|
82
|
+
},
|
83
|
+
};
|
84
|
+
return &tbl;
|
85
|
+
};
|
86
|
+
};
|
87
|
+
|
88
|
+
// If a type declares some member 'struct RawPointerChannelArgTag {}' then
|
89
|
+
// we automatically generate a vtable for it that does not do any ownership
|
90
|
+
// management and compares the type by pointer identity.
|
91
|
+
// This is intended to be relatively ugly because *most types should worry about
|
92
|
+
// ownership*.
|
93
|
+
template <typename T>
|
94
|
+
struct ChannelArgTypeTraits<T,
|
95
|
+
absl::void_t<typename T::RawPointerChannelArgTag>> {
|
96
|
+
static void* TakeUnownedPointer(T* p) { return p; }
|
97
|
+
static const grpc_arg_pointer_vtable* VTable() {
|
98
|
+
static const grpc_arg_pointer_vtable tbl = {
|
99
|
+
// copy
|
100
|
+
[](void* p) -> void* { return p; },
|
101
|
+
// destroy
|
102
|
+
[](void*) {},
|
103
|
+
// compare
|
104
|
+
[](void* p1, void* p2) { return QsortCompare(p1, p2); },
|
105
|
+
};
|
106
|
+
return &tbl;
|
107
|
+
};
|
108
|
+
};
|
109
|
+
|
110
|
+
class ChannelArgs {
|
111
|
+
public:
|
112
|
+
class Pointer {
|
113
|
+
public:
|
114
|
+
Pointer(void* p, const grpc_arg_pointer_vtable* vtable)
|
115
|
+
: p_(p), vtable_(vtable == nullptr ? EmptyVTable() : vtable) {}
|
116
|
+
~Pointer() { vtable_->destroy(p_); }
|
117
|
+
|
118
|
+
Pointer(const Pointer& other)
|
119
|
+
: p_(other.vtable_->copy(other.p_)), vtable_(other.vtable_) {}
|
120
|
+
Pointer& operator=(Pointer other) {
|
121
|
+
std::swap(p_, other.p_);
|
122
|
+
std::swap(vtable_, other.vtable_);
|
123
|
+
return *this;
|
124
|
+
}
|
125
|
+
Pointer(Pointer&& other) noexcept : p_(other.p_), vtable_(other.vtable_) {
|
126
|
+
other.p_ = nullptr;
|
127
|
+
other.vtable_ = EmptyVTable();
|
128
|
+
}
|
129
|
+
Pointer& operator=(Pointer&& other) noexcept {
|
130
|
+
std::swap(p_, other.p_);
|
131
|
+
std::swap(vtable_, other.vtable_);
|
132
|
+
return *this;
|
133
|
+
}
|
134
|
+
|
135
|
+
bool operator==(const Pointer& rhs) const;
|
136
|
+
bool operator<(const Pointer& rhs) const;
|
137
|
+
bool operator!=(const Pointer& rhs) const { return !(*this == rhs); }
|
138
|
+
|
139
|
+
void* c_pointer() const { return p_; }
|
140
|
+
|
141
|
+
const grpc_arg_pointer_vtable* c_vtable() const { return vtable_; }
|
142
|
+
|
143
|
+
private:
|
144
|
+
static const grpc_arg_pointer_vtable* EmptyVTable() {
|
145
|
+
static const grpc_arg_pointer_vtable vtable = {
|
146
|
+
// copy
|
147
|
+
[](void* p) { return p; },
|
148
|
+
// destroy
|
149
|
+
[](void*) {},
|
150
|
+
// cmp
|
151
|
+
[](void* p1, void* p2) -> int { return QsortCompare(p1, p2); },
|
152
|
+
};
|
153
|
+
return &vtable;
|
154
|
+
}
|
155
|
+
|
156
|
+
void* p_;
|
157
|
+
const grpc_arg_pointer_vtable* vtable_;
|
158
|
+
};
|
159
|
+
using Value = absl::variant<int, std::string, Pointer>;
|
160
|
+
|
161
|
+
ChannelArgs();
|
162
|
+
|
163
|
+
static ChannelArgs FromC(const grpc_channel_args* args);
|
164
|
+
// Construct a new grpc_channel_args struct which the caller will own.
|
165
|
+
// It should be destroyed with grpc_channel_args_destroy.
|
166
|
+
const grpc_channel_args* ToC() const;
|
167
|
+
|
168
|
+
const Value* Get(absl::string_view name) const { return args_.Lookup(name); }
|
169
|
+
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
170
|
+
Value value) const;
|
171
|
+
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
172
|
+
absl::string_view value) const;
|
173
|
+
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
174
|
+
std::string value) const;
|
175
|
+
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
176
|
+
const char* value) const;
|
177
|
+
GRPC_MUST_USE_RESULT ChannelArgs Set(grpc_arg arg) const;
|
178
|
+
template <typename T>
|
179
|
+
GRPC_MUST_USE_RESULT absl::enable_if_t<
|
180
|
+
std::is_same<const grpc_arg_pointer_vtable*,
|
181
|
+
decltype(ChannelArgTypeTraits<T>::VTable())>::value,
|
182
|
+
ChannelArgs>
|
183
|
+
Set(absl::string_view name, T* value) const {
|
184
|
+
return Set(name, Pointer(ChannelArgTypeTraits<T>::TakeUnownedPointer(value),
|
185
|
+
ChannelArgTypeTraits<T>::VTable()));
|
186
|
+
}
|
187
|
+
template <typename T>
|
188
|
+
GRPC_MUST_USE_RESULT auto Set(absl::string_view name,
|
189
|
+
const RefCountedPtr<T>& value) const
|
190
|
+
-> absl::enable_if_t<
|
191
|
+
std::is_same<
|
192
|
+
const grpc_arg_pointer_vtable*,
|
193
|
+
decltype(ChannelArgTypeTraits<absl::remove_cvref_t<
|
194
|
+
decltype(*value->Ref())>>::VTable())>::value,
|
195
|
+
ChannelArgs> {
|
196
|
+
auto store_value = value->Ref();
|
197
|
+
return Set(
|
198
|
+
name,
|
199
|
+
Pointer(store_value.release(),
|
200
|
+
ChannelArgTypeTraits<
|
201
|
+
absl::remove_cvref_t<decltype(*store_value)>>::VTable()));
|
202
|
+
}
|
203
|
+
template <typename T>
|
204
|
+
GRPC_MUST_USE_RESULT ChannelArgs SetIfUnset(absl::string_view name, T value) {
|
205
|
+
if (Contains(name)) return *this;
|
206
|
+
return Set(name, std::move(value));
|
207
|
+
}
|
208
|
+
GRPC_MUST_USE_RESULT ChannelArgs Remove(absl::string_view name) const;
|
209
|
+
bool Contains(absl::string_view name) const { return Get(name) != nullptr; }
|
210
|
+
|
211
|
+
absl::optional<int> GetInt(absl::string_view name) const;
|
212
|
+
absl::optional<absl::string_view> GetString(absl::string_view name) const;
|
213
|
+
void* GetVoidPointer(absl::string_view name) const;
|
214
|
+
template <typename T>
|
215
|
+
T* GetPointer(absl::string_view name) const {
|
216
|
+
return static_cast<T*>(GetVoidPointer(name));
|
217
|
+
}
|
218
|
+
absl::optional<Duration> GetDurationFromIntMillis(
|
219
|
+
absl::string_view name) const;
|
220
|
+
absl::optional<bool> GetBool(absl::string_view name) const;
|
221
|
+
|
222
|
+
// Object based get/set.
|
223
|
+
// Deal with the common case that we set a pointer to an object under
|
224
|
+
// the same name in every usage.
|
225
|
+
// Expects ChannelArgTypeTraits to exist for T, and T to expose:
|
226
|
+
// static string_view ChannelArgName();
|
227
|
+
template <typename T>
|
228
|
+
GRPC_MUST_USE_RESULT ChannelArgs SetObject(T* p) const {
|
229
|
+
return Set(T::ChannelArgName(), p);
|
230
|
+
}
|
231
|
+
template <typename T>
|
232
|
+
GRPC_MUST_USE_RESULT ChannelArgs SetObject(RefCountedPtr<T> p) const {
|
233
|
+
return Set(T::ChannelArgName(), std::move(p));
|
234
|
+
}
|
235
|
+
template <typename T>
|
236
|
+
T* GetObject() {
|
237
|
+
return GetPointer<T>(T::ChannelArgName());
|
238
|
+
}
|
239
|
+
template <typename T>
|
240
|
+
RefCountedPtr<T> GetObjectRef() {
|
241
|
+
auto* p = GetObject<T>();
|
242
|
+
if (p == nullptr) return nullptr;
|
243
|
+
return p->Ref();
|
244
|
+
}
|
245
|
+
|
246
|
+
bool operator<(const ChannelArgs& other) const { return args_ < other.args_; }
|
247
|
+
bool operator==(const ChannelArgs& other) const {
|
248
|
+
return args_ == other.args_;
|
249
|
+
}
|
250
|
+
|
251
|
+
// Helpers for commonly accessed things
|
252
|
+
|
253
|
+
bool WantMinimalStack() const {
|
254
|
+
return GetBool(GRPC_ARG_MINIMAL_STACK).value_or(false);
|
255
|
+
}
|
256
|
+
|
257
|
+
std::string ToString() const;
|
258
|
+
|
259
|
+
private:
|
260
|
+
explicit ChannelArgs(AVL<std::string, Value> args) : args_(std::move(args)) {}
|
261
|
+
|
262
|
+
AVL<std::string, Value> args_;
|
263
|
+
};
|
264
|
+
|
265
|
+
} // namespace grpc_core
|
266
|
+
|
32
267
|
/** Copy the arguments in \a src into a new instance */
|
33
268
|
grpc_channel_args* grpc_channel_args_copy(const grpc_channel_args* src);
|
34
269
|
|
@@ -120,20 +355,16 @@ grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
|
|
120
355
|
std::string grpc_channel_args_string(const grpc_channel_args* args);
|
121
356
|
|
122
357
|
namespace grpc_core {
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
*
|
127
|
-
* Does not take ownership of \a src.
|
128
|
-
* Should be called by any public API that receives channel args. */
|
129
|
-
const grpc_channel_args* RemoveGrpcInternalArgs(const grpc_channel_args* src);
|
130
|
-
/** Ensure no duplicate channel args, in preparation for moving to a map<> */
|
131
|
-
const grpc_channel_args* UniquifyChannelArgKeys(const grpc_channel_args* src);
|
358
|
+
// Ensure no duplicate channel args (with some backwards compatibility hacks).
|
359
|
+
// Eliminate any grpc.internal.* args.
|
360
|
+
// Return a C++ object.
|
361
|
+
ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src);
|
132
362
|
} // namespace grpc_core
|
133
363
|
|
134
364
|
// Takes ownership of the old_args
|
135
|
-
typedef
|
136
|
-
|
365
|
+
typedef grpc_core::ChannelArgs (
|
366
|
+
*grpc_channel_args_client_channel_creation_mutator)(
|
367
|
+
const char* target, grpc_core::ChannelArgs old_args,
|
137
368
|
grpc_channel_stack_type type);
|
138
369
|
|
139
370
|
// Should be called only once globaly before grpc is init'ed.
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
#include "src/core/lib/channel/channel_args_preconditioning.h"
|
18
18
|
|
19
|
-
#include <
|
19
|
+
#include <utility>
|
20
20
|
|
21
21
|
namespace grpc_core {
|
22
22
|
|
@@ -25,24 +25,18 @@ void ChannelArgsPreconditioning::Builder::RegisterStage(Stage stage) {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
ChannelArgsPreconditioning ChannelArgsPreconditioning::Builder::Build() {
|
28
|
-
// TODO(ctiller): should probably make this registered too.
|
29
|
-
stages_.emplace_back(RemoveGrpcInternalArgs);
|
30
|
-
stages_.emplace_back(UniquifyChannelArgKeys);
|
31
|
-
|
32
28
|
ChannelArgsPreconditioning preconditioning;
|
33
29
|
preconditioning.stages_ = std::move(stages_);
|
34
30
|
return preconditioning;
|
35
31
|
}
|
36
32
|
|
37
|
-
|
33
|
+
ChannelArgs ChannelArgsPreconditioning::PreconditionChannelArgs(
|
38
34
|
const grpc_channel_args* args) const {
|
39
|
-
|
35
|
+
ChannelArgs channel_args = ChannelArgsBuiltinPrecondition(args);
|
40
36
|
for (auto& stage : stages_) {
|
41
|
-
|
42
|
-
grpc_channel_args_destroy(owned_args);
|
43
|
-
owned_args = args;
|
37
|
+
channel_args = stage(std::move(channel_args));
|
44
38
|
}
|
45
|
-
return
|
39
|
+
return channel_args;
|
46
40
|
}
|
47
41
|
|
48
42
|
} // namespace grpc_core
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#include <functional>
|
21
21
|
#include <vector>
|
22
22
|
|
23
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
24
|
+
|
23
25
|
#include "src/core/lib/channel/channel_args.h"
|
24
26
|
|
25
27
|
namespace grpc_core {
|
@@ -33,8 +35,7 @@ class ChannelArgsPreconditioning {
|
|
33
35
|
// Take channel args and mutate them.
|
34
36
|
// Does not take ownership of the channel args passed in.
|
35
37
|
// Returns a new channel args object that is owned by the caller.
|
36
|
-
using Stage =
|
37
|
-
std::function<const grpc_channel_args*(const grpc_channel_args*)>;
|
38
|
+
using Stage = std::function<ChannelArgs(ChannelArgs)>;
|
38
39
|
|
39
40
|
class Builder {
|
40
41
|
public:
|
@@ -50,8 +51,7 @@ class ChannelArgsPreconditioning {
|
|
50
51
|
// Take channel args and precondition them.
|
51
52
|
// Does not take ownership of the channel args passed in.
|
52
53
|
// Returns a new channel args object that is owned by the caller.
|
53
|
-
const grpc_channel_args*
|
54
|
-
const grpc_channel_args* args) const;
|
54
|
+
ChannelArgs PreconditionChannelArgs(const grpc_channel_args* args) const;
|
55
55
|
|
56
56
|
private:
|
57
57
|
std::vector<Stage> stages_;
|
@@ -20,13 +20,14 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/channel/channel_stack.h"
|
22
22
|
|
23
|
-
#include <
|
24
|
-
|
23
|
+
#include <stdint.h>
|
24
|
+
|
25
|
+
#include <utility>
|
25
26
|
|
26
|
-
#include <grpc/support/alloc.h>
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
|
29
29
|
#include "src/core/lib/gpr/alloc.h"
|
30
|
+
#include "src/core/lib/promise/poll.h"
|
30
31
|
|
31
32
|
grpc_core::TraceFlag grpc_trace_channel(false, "channel");
|
32
33
|
grpc_core::TraceFlag grpc_trace_channel_stack(false, "channel_stack");
|
@@ -113,6 +114,8 @@ grpc_error_handle grpc_channel_stack_init(
|
|
113
114
|
}
|
114
115
|
}
|
115
116
|
|
117
|
+
stack->on_destroy.Init([]() {});
|
118
|
+
|
116
119
|
size_t call_size =
|
117
120
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
|
118
121
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
|
@@ -169,6 +172,9 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack) {
|
|
169
172
|
for (i = 0; i < count; i++) {
|
170
173
|
channel_elems[i].filter->destroy_channel_elem(&channel_elems[i]);
|
171
174
|
}
|
175
|
+
|
176
|
+
(*stack->on_destroy)();
|
177
|
+
stack->on_destroy.Destroy();
|
172
178
|
}
|
173
179
|
|
174
180
|
grpc_error_handle grpc_call_stack_init(
|
@@ -272,3 +278,35 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
|
|
272
278
|
reinterpret_cast<char*>(elem) -
|
273
279
|
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)));
|
274
280
|
}
|
281
|
+
|
282
|
+
void grpc_channel_stack_no_post_init(grpc_channel_stack*,
|
283
|
+
grpc_channel_element*) {}
|
284
|
+
|
285
|
+
namespace {
|
286
|
+
|
287
|
+
grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
|
288
|
+
return [elem](grpc_core::CallArgs args) {
|
289
|
+
return elem->filter->make_call_promise(elem, std::move(args),
|
290
|
+
ClientNext(elem + 1));
|
291
|
+
};
|
292
|
+
}
|
293
|
+
|
294
|
+
grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) {
|
295
|
+
return [elem](grpc_core::CallArgs args) {
|
296
|
+
return elem->filter->make_call_promise(elem, std::move(args),
|
297
|
+
ServerNext(elem - 1));
|
298
|
+
};
|
299
|
+
}
|
300
|
+
|
301
|
+
} // namespace
|
302
|
+
|
303
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
|
304
|
+
grpc_channel_stack::MakeCallPromise(grpc_core::CallArgs call_args) {
|
305
|
+
if (is_client) {
|
306
|
+
return ClientNext(grpc_channel_stack_element(this, 0))(
|
307
|
+
std::move(call_args));
|
308
|
+
} else {
|
309
|
+
return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
|
310
|
+
std::move(call_args));
|
311
|
+
}
|
312
|
+
}
|
@@ -50,27 +50,37 @@
|
|
50
50
|
|
51
51
|
#include <functional>
|
52
52
|
|
53
|
-
#include <grpc/
|
53
|
+
#include <grpc/impl/codegen/gpr_types.h>
|
54
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
55
|
+
#include <grpc/slice.h>
|
56
|
+
#include <grpc/status.h>
|
54
57
|
#include <grpc/support/log.h>
|
55
|
-
#include <grpc/support/time.h>
|
56
58
|
|
59
|
+
#include "src/core/lib/channel/context.h"
|
57
60
|
#include "src/core/lib/debug/trace.h"
|
58
61
|
#include "src/core/lib/gpr/time_precise.h"
|
62
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
59
63
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
64
|
+
#include "src/core/lib/gprpp/time.h"
|
60
65
|
#include "src/core/lib/iomgr/call_combiner.h"
|
66
|
+
#include "src/core/lib/iomgr/closure.h"
|
67
|
+
#include "src/core/lib/iomgr/error.h"
|
61
68
|
#include "src/core/lib/iomgr/polling_entity.h"
|
69
|
+
#include "src/core/lib/promise/arena_promise.h"
|
62
70
|
#include "src/core/lib/resource_quota/arena.h"
|
63
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
64
71
|
#include "src/core/lib/transport/transport.h"
|
65
72
|
|
73
|
+
struct grpc_call_element;
|
74
|
+
struct grpc_call_stack;
|
75
|
+
struct grpc_channel_element;
|
76
|
+
struct grpc_channel_stack;
|
77
|
+
|
66
78
|
typedef struct grpc_channel_element grpc_channel_element;
|
67
79
|
typedef struct grpc_call_element grpc_call_element;
|
68
80
|
|
69
81
|
typedef struct grpc_channel_stack grpc_channel_stack;
|
70
82
|
typedef struct grpc_call_stack grpc_call_stack;
|
71
83
|
|
72
|
-
#define GRPC_ARG_TRANSPORT "grpc.internal.transport"
|
73
|
-
|
74
84
|
struct grpc_channel_element_args {
|
75
85
|
grpc_channel_stack* channel_stack;
|
76
86
|
const grpc_channel_args* channel_args;
|
@@ -122,9 +132,8 @@ struct grpc_channel_filter {
|
|
122
132
|
- allocation of memory for call data
|
123
133
|
There is an on-going migration to move all filters to providing this, and
|
124
134
|
then to drop start_transport_stream_op_batch. */
|
125
|
-
grpc_core::ArenaPromise<grpc_core::
|
126
|
-
grpc_channel_element* elem,
|
127
|
-
grpc_core::ClientInitialMetadata initial_metadata,
|
135
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
|
136
|
+
grpc_channel_element* elem, grpc_core::CallArgs call_args,
|
128
137
|
grpc_core::NextPromiseFactory next_promise_factory);
|
129
138
|
/* Called to handle channel level operations - e.g. new calls, or transport
|
130
139
|
closure.
|
@@ -167,6 +176,10 @@ struct grpc_channel_filter {
|
|
167
176
|
Implementations may assume that elem->channel_data is all zeros. */
|
168
177
|
grpc_error_handle (*init_channel_elem)(grpc_channel_element* elem,
|
169
178
|
grpc_channel_element_args* args);
|
179
|
+
/* Post init per-channel data.
|
180
|
+
Called after all channel elements have been successfully created. */
|
181
|
+
void (*post_init_channel_elem)(grpc_channel_stack* stk,
|
182
|
+
grpc_channel_element* elem);
|
170
183
|
/* Destroy per channel data.
|
171
184
|
The filter does not need to do any chaining */
|
172
185
|
void (*destroy_channel_elem)(grpc_channel_element* elem);
|
@@ -198,10 +211,16 @@ struct grpc_call_element {
|
|
198
211
|
guarantees they live within a single malloc() allocation */
|
199
212
|
struct grpc_channel_stack {
|
200
213
|
grpc_stream_refcount refcount;
|
214
|
+
bool is_client;
|
201
215
|
size_t count;
|
202
216
|
/* Memory required for a call stack (computed at channel stack
|
203
217
|
initialization) */
|
204
218
|
size_t call_stack_size;
|
219
|
+
// TODO(ctiller): remove this mechanism... it's a hack to allow
|
220
|
+
// Channel to be separated from grpc_channel_stack's allocation. As the
|
221
|
+
// promise conversion continues, we'll reconsider what grpc_channel_stack
|
222
|
+
// should look like and this can go.
|
223
|
+
grpc_core::ManualConstructor<std::function<void()>> on_destroy;
|
205
224
|
|
206
225
|
// Minimal infrastructure to act like a RefCounted thing without converting
|
207
226
|
// everything.
|
@@ -214,6 +233,9 @@ struct grpc_channel_stack {
|
|
214
233
|
IncrementRefCount();
|
215
234
|
return grpc_core::RefCountedPtr<grpc_channel_stack>(this);
|
216
235
|
}
|
236
|
+
|
237
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> MakeCallPromise(
|
238
|
+
grpc_core::CallArgs call_args);
|
217
239
|
};
|
218
240
|
|
219
241
|
/* A call stack tracks a set of related filters for one call, and guarantees
|
@@ -225,6 +247,16 @@ struct grpc_call_stack {
|
|
225
247
|
about the address of the call stack itself. */
|
226
248
|
grpc_stream_refcount refcount;
|
227
249
|
size_t count;
|
250
|
+
|
251
|
+
// Minimal infrastructure to act like a RefCounted thing without converting
|
252
|
+
// everything.
|
253
|
+
// grpc_call_stack will be eliminated once the promise conversion completes.
|
254
|
+
void IncrementRefCount();
|
255
|
+
void Unref();
|
256
|
+
grpc_core::RefCountedPtr<grpc_call_stack> Ref() {
|
257
|
+
IncrementRefCount();
|
258
|
+
return grpc_core::RefCountedPtr<grpc_call_stack>(this);
|
259
|
+
}
|
228
260
|
};
|
229
261
|
|
230
262
|
/* Get a channel element given a channel stack and its index */
|
@@ -307,6 +339,14 @@ inline void grpc_channel_stack::Unref() {
|
|
307
339
|
GRPC_CHANNEL_STACK_UNREF(this, "smart_pointer");
|
308
340
|
}
|
309
341
|
|
342
|
+
inline void grpc_call_stack::IncrementRefCount() {
|
343
|
+
GRPC_CALL_STACK_REF(this, "smart_pointer");
|
344
|
+
}
|
345
|
+
|
346
|
+
inline void grpc_call_stack::Unref() {
|
347
|
+
GRPC_CALL_STACK_UNREF(this, "smart_pointer");
|
348
|
+
}
|
349
|
+
|
310
350
|
/* Destroy a call stack */
|
311
351
|
void grpc_call_stack_destroy(grpc_call_stack* stack,
|
312
352
|
const grpc_call_final_info* final_info,
|
@@ -336,6 +376,9 @@ void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
|
|
336
376
|
grpc_call_element* elem,
|
337
377
|
grpc_transport_stream_op_batch* op);
|
338
378
|
|
379
|
+
void grpc_channel_stack_no_post_init(grpc_channel_stack* stk,
|
380
|
+
grpc_channel_element* elem);
|
381
|
+
|
339
382
|
extern grpc_core::TraceFlag grpc_trace_channel;
|
340
383
|
|
341
384
|
#define GRPC_CALL_LOG_OP(sev, elem, op) \
|
@@ -20,20 +20,14 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
22
22
|
|
23
|
-
#include <
|
24
|
-
|
25
|
-
#include <grpc/support/alloc.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
23
|
+
#include <algorithm>
|
24
|
+
#include <utility>
|
27
25
|
|
28
26
|
#include "src/core/lib/channel/channel_args.h"
|
29
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
30
|
-
#include "src/core/lib/gprpp/memory.h"
|
31
27
|
|
32
28
|
namespace grpc_core {
|
33
29
|
|
34
|
-
ChannelStackBuilder::~ChannelStackBuilder()
|
35
|
-
grpc_channel_args_destroy(args_);
|
36
|
-
}
|
30
|
+
ChannelStackBuilder::~ChannelStackBuilder() = default;
|
37
31
|
|
38
32
|
ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
|
39
33
|
if (target == nullptr) {
|
@@ -44,86 +38,17 @@ ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
|
|
44
38
|
return *this;
|
45
39
|
}
|
46
40
|
|
47
|
-
ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(
|
48
|
-
|
49
|
-
grpc_channel_args_destroy(args_);
|
50
|
-
args_ = grpc_channel_args_copy(args);
|
41
|
+
ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(ChannelArgs args) {
|
42
|
+
args_ = std::move(args);
|
51
43
|
return *this;
|
52
44
|
}
|
53
45
|
|
54
|
-
void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter
|
55
|
-
|
56
|
-
stack_.insert(stack_.begin(), {filter, std::move(post_init)});
|
57
|
-
}
|
58
|
-
|
59
|
-
void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter,
|
60
|
-
PostInitFunc post_init) {
|
61
|
-
stack_.push_back({filter, std::move(post_init)});
|
46
|
+
void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter) {
|
47
|
+
stack_.insert(stack_.begin(), filter);
|
62
48
|
}
|
63
49
|
|
64
|
-
|
65
|
-
|
66
|
-
grpc_iomgr_cb_func destroy,
|
67
|
-
void* destroy_arg, void** result) {
|
68
|
-
// create an array of filters
|
69
|
-
std::vector<const grpc_channel_filter*> filters;
|
70
|
-
filters.reserve(stack_.size());
|
71
|
-
for (const auto& elem : stack_) {
|
72
|
-
filters.push_back(elem.filter);
|
73
|
-
}
|
74
|
-
|
75
|
-
// calculate the size of the channel stack
|
76
|
-
size_t channel_stack_size =
|
77
|
-
grpc_channel_stack_size(filters.data(), filters.size());
|
78
|
-
|
79
|
-
// allocate memory, with prefix_bytes followed by channel_stack_size
|
80
|
-
*result = gpr_zalloc(prefix_bytes + channel_stack_size);
|
81
|
-
// fetch a pointer to the channel stack
|
82
|
-
grpc_channel_stack* channel_stack = reinterpret_cast<grpc_channel_stack*>(
|
83
|
-
static_cast<char*>(*result) + prefix_bytes);
|
84
|
-
|
85
|
-
const grpc_channel_args* final_args;
|
86
|
-
if (transport_ != nullptr) {
|
87
|
-
static const grpc_arg_pointer_vtable vtable = {
|
88
|
-
// copy
|
89
|
-
[](void* p) { return p; },
|
90
|
-
// destroy
|
91
|
-
[](void*) {},
|
92
|
-
// cmp
|
93
|
-
[](void* a, void* b) { return QsortCompare(a, b); },
|
94
|
-
};
|
95
|
-
grpc_arg arg = grpc_channel_arg_pointer_create(
|
96
|
-
const_cast<char*>(GRPC_ARG_TRANSPORT), transport_, &vtable);
|
97
|
-
final_args = grpc_channel_args_copy_and_add(args_, &arg, 1);
|
98
|
-
} else {
|
99
|
-
final_args = args_;
|
100
|
-
}
|
101
|
-
|
102
|
-
// and initialize it
|
103
|
-
grpc_error_handle error = grpc_channel_stack_init(
|
104
|
-
initial_refs, destroy, destroy_arg == nullptr ? *result : destroy_arg,
|
105
|
-
filters.data(), filters.size(), final_args, name_, channel_stack);
|
106
|
-
|
107
|
-
if (final_args != args_) {
|
108
|
-
grpc_channel_args_destroy(final_args);
|
109
|
-
}
|
110
|
-
|
111
|
-
if (error != GRPC_ERROR_NONE) {
|
112
|
-
grpc_channel_stack_destroy(channel_stack);
|
113
|
-
gpr_free(*result);
|
114
|
-
*result = nullptr;
|
115
|
-
return error;
|
116
|
-
}
|
117
|
-
|
118
|
-
// run post-initialization functions
|
119
|
-
for (size_t i = 0; i < filters.size(); i++) {
|
120
|
-
if (stack_[i].post_init != nullptr) {
|
121
|
-
stack_[i].post_init(channel_stack,
|
122
|
-
grpc_channel_stack_element(channel_stack, i));
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
return GRPC_ERROR_NONE;
|
50
|
+
void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter) {
|
51
|
+
stack_.push_back(filter);
|
127
52
|
}
|
128
53
|
|
129
54
|
} // namespace grpc_core
|