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,29 +21,31 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include <
|
24
|
+
#include <stdlib.h>
|
25
25
|
|
26
26
|
#include <cstdint>
|
27
|
-
#include <
|
28
|
-
|
29
|
-
#include
|
30
|
-
|
31
|
-
#include "absl/
|
27
|
+
#include <string>
|
28
|
+
#include <type_traits>
|
29
|
+
#include <utility>
|
30
|
+
|
31
|
+
#include "absl/container/inlined_vector.h"
|
32
|
+
#include "absl/functional/function_ref.h"
|
33
|
+
#include "absl/meta/type_traits.h"
|
34
|
+
#include "absl/strings/numbers.h"
|
35
|
+
#include "absl/strings/string_view.h"
|
32
36
|
#include "absl/types/optional.h"
|
33
37
|
|
34
|
-
#include <grpc/
|
35
|
-
#include <grpc/slice.h>
|
38
|
+
#include <grpc/impl/codegen/compression_types.h>
|
36
39
|
#include <grpc/status.h>
|
37
|
-
#include <grpc/support/
|
40
|
+
#include <grpc/support/log.h>
|
38
41
|
|
39
42
|
#include "src/core/lib/compression/compression_internal.h"
|
40
43
|
#include "src/core/lib/gprpp/chunked_vector.h"
|
41
44
|
#include "src/core/lib/gprpp/table.h"
|
42
|
-
#include "src/core/lib/
|
45
|
+
#include "src/core/lib/gprpp/time.h"
|
46
|
+
#include "src/core/lib/resource_quota/arena.h"
|
43
47
|
#include "src/core/lib/slice/slice.h"
|
44
|
-
#include "src/core/lib/surface/validate_metadata.h"
|
45
48
|
#include "src/core/lib/transport/parsed_metadata.h"
|
46
|
-
#include "src/core/lib/transport/timeout_encoding.h"
|
47
49
|
|
48
50
|
namespace grpc_core {
|
49
51
|
|
@@ -59,23 +61,9 @@ struct GrpcTimeoutMetadata {
|
|
59
61
|
using ValueType = Timestamp;
|
60
62
|
using MementoType = Duration;
|
61
63
|
static absl::string_view key() { return "grpc-timeout"; }
|
62
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
63
|
-
|
64
|
-
|
65
|
-
on_error("invalid value", value);
|
66
|
-
return Duration::Infinity();
|
67
|
-
}
|
68
|
-
return *timeout;
|
69
|
-
}
|
70
|
-
static ValueType MementoToValue(MementoType timeout) {
|
71
|
-
if (timeout == Duration::Infinity()) {
|
72
|
-
return Timestamp::InfFuture();
|
73
|
-
}
|
74
|
-
return ExecCtx::Get()->Now() + timeout;
|
75
|
-
}
|
76
|
-
static Slice Encode(ValueType x) {
|
77
|
-
return Timeout::FromDuration(x - ExecCtx::Get()->Now()).Encode();
|
78
|
-
}
|
64
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
65
|
+
static ValueType MementoToValue(MementoType timeout);
|
66
|
+
static Slice Encode(ValueType x);
|
79
67
|
static std::string DisplayValue(MementoType x) { return x.ToString(); }
|
80
68
|
};
|
81
69
|
|
@@ -91,28 +79,13 @@ struct TeMetadata {
|
|
91
79
|
};
|
92
80
|
using MementoType = ValueType;
|
93
81
|
static absl::string_view key() { return "te"; }
|
94
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
95
|
-
auto out = kInvalid;
|
96
|
-
if (value == "trailers") {
|
97
|
-
out = kTrailers;
|
98
|
-
} else {
|
99
|
-
on_error("invalid value", value);
|
100
|
-
}
|
101
|
-
return out;
|
102
|
-
}
|
82
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
103
83
|
static ValueType MementoToValue(MementoType te) { return te; }
|
104
84
|
static StaticSlice Encode(ValueType x) {
|
105
85
|
GPR_ASSERT(x == kTrailers);
|
106
86
|
return StaticSlice::FromStaticString("trailers");
|
107
87
|
}
|
108
|
-
static const char* DisplayValue(MementoType te)
|
109
|
-
switch (te) {
|
110
|
-
case ValueType::kTrailers:
|
111
|
-
return "trailers";
|
112
|
-
default:
|
113
|
-
return "<discarded-invalid-value>";
|
114
|
-
}
|
115
|
-
}
|
88
|
+
static const char* DisplayValue(MementoType te);
|
116
89
|
};
|
117
90
|
|
118
91
|
// content-type metadata trait.
|
@@ -128,47 +101,13 @@ struct ContentTypeMetadata {
|
|
128
101
|
};
|
129
102
|
using MementoType = ValueType;
|
130
103
|
static absl::string_view key() { return "content-type"; }
|
131
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
132
|
-
auto out = kInvalid;
|
133
|
-
auto value_string = value.as_string_view();
|
134
|
-
if (value_string == "application/grpc") {
|
135
|
-
out = kApplicationGrpc;
|
136
|
-
} else if (absl::StartsWith(value_string, "application/grpc;")) {
|
137
|
-
out = kApplicationGrpc;
|
138
|
-
} else if (absl::StartsWith(value_string, "application/grpc+")) {
|
139
|
-
out = kApplicationGrpc;
|
140
|
-
} else if (value_string.empty()) {
|
141
|
-
out = kEmpty;
|
142
|
-
} else {
|
143
|
-
on_error("invalid value", value);
|
144
|
-
}
|
145
|
-
return out;
|
146
|
-
}
|
104
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
147
105
|
static ValueType MementoToValue(MementoType content_type) {
|
148
106
|
return content_type;
|
149
107
|
}
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
return StaticSlice::FromStaticString("");
|
154
|
-
case kApplicationGrpc:
|
155
|
-
return StaticSlice::FromStaticString("application/grpc");
|
156
|
-
case kInvalid:
|
157
|
-
return StaticSlice::FromStaticString("application/grpc+unknown");
|
158
|
-
}
|
159
|
-
GPR_UNREACHABLE_CODE(
|
160
|
-
return StaticSlice::FromStaticString("unrepresentable value"));
|
161
|
-
}
|
162
|
-
static const char* DisplayValue(MementoType content_type) {
|
163
|
-
switch (content_type) {
|
164
|
-
case ValueType::kApplicationGrpc:
|
165
|
-
return "application/grpc";
|
166
|
-
case ValueType::kEmpty:
|
167
|
-
return "";
|
168
|
-
default:
|
169
|
-
return "<discarded-invalid-value>";
|
170
|
-
}
|
171
|
-
}
|
108
|
+
|
109
|
+
static StaticSlice Encode(ValueType x);
|
110
|
+
static const char* DisplayValue(MementoType content_type);
|
172
111
|
};
|
173
112
|
|
174
113
|
// scheme metadata trait.
|
@@ -185,38 +124,12 @@ struct HttpSchemeMetadata {
|
|
185
124
|
return Parse(value.as_string_view(), on_error);
|
186
125
|
}
|
187
126
|
static ValueType Parse(absl::string_view value,
|
188
|
-
MetadataParseErrorFn on_error)
|
189
|
-
if (value == "http") {
|
190
|
-
return kHttp;
|
191
|
-
} else if (value == "https") {
|
192
|
-
return kHttps;
|
193
|
-
}
|
194
|
-
on_error("invalid value", Slice::FromCopiedBuffer(value));
|
195
|
-
return kInvalid;
|
196
|
-
}
|
127
|
+
MetadataParseErrorFn on_error);
|
197
128
|
static ValueType MementoToValue(MementoType content_type) {
|
198
129
|
return content_type;
|
199
130
|
}
|
200
|
-
static StaticSlice Encode(ValueType x)
|
201
|
-
|
202
|
-
case kHttp:
|
203
|
-
return StaticSlice::FromStaticString("http");
|
204
|
-
case kHttps:
|
205
|
-
return StaticSlice::FromStaticString("https");
|
206
|
-
default:
|
207
|
-
abort();
|
208
|
-
}
|
209
|
-
}
|
210
|
-
static const char* DisplayValue(MementoType content_type) {
|
211
|
-
switch (content_type) {
|
212
|
-
case kHttp:
|
213
|
-
return "http";
|
214
|
-
case kHttps:
|
215
|
-
return "https";
|
216
|
-
default:
|
217
|
-
return "<discarded-invalid-value>";
|
218
|
-
}
|
219
|
-
}
|
131
|
+
static StaticSlice Encode(ValueType x);
|
132
|
+
static const char* DisplayValue(MementoType content_type);
|
220
133
|
};
|
221
134
|
|
222
135
|
// method metadata trait.
|
@@ -224,53 +137,18 @@ struct HttpMethodMetadata {
|
|
224
137
|
static constexpr bool kRepeatable = false;
|
225
138
|
enum ValueType {
|
226
139
|
kPost,
|
227
|
-
kPut,
|
228
140
|
kGet,
|
141
|
+
kPut,
|
229
142
|
kInvalid,
|
230
143
|
};
|
231
144
|
using MementoType = ValueType;
|
232
145
|
static absl::string_view key() { return ":method"; }
|
233
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
234
|
-
auto out = kInvalid;
|
235
|
-
auto value_string = value.as_string_view();
|
236
|
-
if (value_string == "POST") {
|
237
|
-
out = kPost;
|
238
|
-
} else if (value_string == "PUT") {
|
239
|
-
out = kPut;
|
240
|
-
} else if (value_string == "GET") {
|
241
|
-
out = kGet;
|
242
|
-
} else {
|
243
|
-
on_error("invalid value", value);
|
244
|
-
}
|
245
|
-
return out;
|
246
|
-
}
|
146
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
247
147
|
static ValueType MementoToValue(MementoType content_type) {
|
248
148
|
return content_type;
|
249
149
|
}
|
250
|
-
static StaticSlice Encode(ValueType x)
|
251
|
-
|
252
|
-
case kPost:
|
253
|
-
return StaticSlice::FromStaticString("POST");
|
254
|
-
case kPut:
|
255
|
-
return StaticSlice::FromStaticString("PUT");
|
256
|
-
case kGet:
|
257
|
-
return StaticSlice::FromStaticString("GET");
|
258
|
-
default:
|
259
|
-
abort();
|
260
|
-
}
|
261
|
-
}
|
262
|
-
static const char* DisplayValue(MementoType content_type) {
|
263
|
-
switch (content_type) {
|
264
|
-
case kPost:
|
265
|
-
return "POST";
|
266
|
-
case kPut:
|
267
|
-
return "PUT";
|
268
|
-
case kGet:
|
269
|
-
return "GET";
|
270
|
-
default:
|
271
|
-
return "<discarded-invalid-value>";
|
272
|
-
}
|
273
|
-
}
|
150
|
+
static StaticSlice Encode(ValueType x);
|
151
|
+
static const char* DisplayValue(MementoType content_type);
|
274
152
|
};
|
275
153
|
|
276
154
|
// Base type for metadata pertaining to a single compression algorithm
|
@@ -278,14 +156,7 @@ struct HttpMethodMetadata {
|
|
278
156
|
struct CompressionAlgorithmBasedMetadata {
|
279
157
|
using ValueType = grpc_compression_algorithm;
|
280
158
|
using MementoType = ValueType;
|
281
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
282
|
-
auto algorithm = ParseCompressionAlgorithm(value.as_string_view());
|
283
|
-
if (!algorithm.has_value()) {
|
284
|
-
on_error("invalid value", value);
|
285
|
-
return GRPC_COMPRESS_NONE;
|
286
|
-
}
|
287
|
-
return *algorithm;
|
288
|
-
}
|
159
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
289
160
|
static ValueType MementoToValue(MementoType x) { return x; }
|
290
161
|
static Slice Encode(ValueType x) {
|
291
162
|
GPR_ASSERT(x != GRPC_COMPRESS_ALGORITHMS_COUNT);
|
@@ -323,7 +194,7 @@ struct GrpcAcceptEncodingMetadata {
|
|
323
194
|
}
|
324
195
|
static ValueType MementoToValue(MementoType x) { return x; }
|
325
196
|
static Slice Encode(ValueType x) { return x.ToSlice(); }
|
326
|
-
static
|
197
|
+
static absl::string_view DisplayValue(MementoType x) { return x.ToString(); }
|
327
198
|
};
|
328
199
|
|
329
200
|
struct SimpleSliceBasedMetadata {
|
@@ -357,10 +228,10 @@ struct HostMetadata : public SimpleSliceBasedMetadata {
|
|
357
228
|
static absl::string_view key() { return "host"; }
|
358
229
|
};
|
359
230
|
|
360
|
-
//
|
361
|
-
struct
|
231
|
+
// endpoint-load-metrics-bin metadata trait.
|
232
|
+
struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
|
362
233
|
static constexpr bool kRepeatable = false;
|
363
|
-
static absl::string_view key() { return "
|
234
|
+
static absl::string_view key() { return "endpoint-load-metrics-bin"; }
|
364
235
|
};
|
365
236
|
|
366
237
|
// grpc-server-stats-bin metadata trait.
|
@@ -393,9 +264,9 @@ struct HttpPathMetadata : public SimpleSliceBasedMetadata {
|
|
393
264
|
static absl::string_view key() { return ":path"; }
|
394
265
|
};
|
395
266
|
|
396
|
-
// We separate SimpleIntBasedMetadata into two pieces: one that does not
|
397
|
-
// on the invalid value, and one that does. This allows the compiler to
|
398
|
-
// see the functions that are shared, and helps reduce code bloat here.
|
267
|
+
// We separate SimpleIntBasedMetadata into two pieces: one that does not
|
268
|
+
// depend on the invalid value, and one that does. This allows the compiler to
|
269
|
+
// easily see the functions that are shared, and helps reduce code bloat here.
|
399
270
|
template <typename Int>
|
400
271
|
struct SimpleIntBasedMetadataBase {
|
401
272
|
using ValueType = Int;
|
@@ -441,14 +312,7 @@ struct GrpcRetryPushbackMsMetadata {
|
|
441
312
|
static ValueType MementoToValue(MementoType x) { return x; }
|
442
313
|
static Slice Encode(Duration x) { return Slice::FromInt64(x.millis()); }
|
443
314
|
static int64_t DisplayValue(Duration x) { return x.millis(); }
|
444
|
-
static Duration ParseMemento(Slice value, MetadataParseErrorFn on_error)
|
445
|
-
int64_t out;
|
446
|
-
if (!absl::SimpleAtoi(value.as_string_view(), &out)) {
|
447
|
-
on_error("not an integer", value);
|
448
|
-
return Duration::NegativeInfinity();
|
449
|
-
}
|
450
|
-
return Duration::Milliseconds(out);
|
451
|
-
}
|
315
|
+
static Duration ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
452
316
|
};
|
453
317
|
|
454
318
|
// :status metadata trait.
|
@@ -461,6 +325,7 @@ struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
|
|
461
325
|
// "secret" metadata trait used to pass load balancing token between filters.
|
462
326
|
// This should not be exposed outside of gRPC core.
|
463
327
|
class GrpcLbClientStats;
|
328
|
+
|
464
329
|
struct GrpcLbClientStatsMetadata {
|
465
330
|
static constexpr bool kRepeatable = false;
|
466
331
|
static absl::string_view key() { return "grpclb_client_stats"; }
|
@@ -490,28 +355,9 @@ struct LbCostBinMetadata {
|
|
490
355
|
};
|
491
356
|
using MementoType = ValueType;
|
492
357
|
static ValueType MementoToValue(MementoType value) { return value; }
|
493
|
-
static Slice Encode(const ValueType& x)
|
494
|
-
|
495
|
-
|
496
|
-
memcpy(slice.data(), &x.cost, sizeof(double));
|
497
|
-
memcpy(slice.data() + sizeof(double), x.name.data(), x.name.length());
|
498
|
-
return Slice(std::move(slice));
|
499
|
-
}
|
500
|
-
static std::string DisplayValue(MementoType x) {
|
501
|
-
return absl::StrCat(x.name, ":", x.cost);
|
502
|
-
}
|
503
|
-
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
|
504
|
-
if (value.length() < sizeof(double)) {
|
505
|
-
on_error("too short", value);
|
506
|
-
return {0, ""};
|
507
|
-
}
|
508
|
-
MementoType out;
|
509
|
-
memcpy(&out.cost, value.data(), sizeof(double));
|
510
|
-
out.name = std::string(
|
511
|
-
reinterpret_cast<const char*>(value.data()) + sizeof(double),
|
512
|
-
value.length() - sizeof(double));
|
513
|
-
return out;
|
514
|
-
}
|
358
|
+
static Slice Encode(const ValueType& x);
|
359
|
+
static std::string DisplayValue(MementoType x);
|
360
|
+
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
515
361
|
};
|
516
362
|
|
517
363
|
// Annotation added by a transport to note whether a failed request was never
|
@@ -523,14 +369,15 @@ struct GrpcStreamNetworkState {
|
|
523
369
|
kNotSentOnWire,
|
524
370
|
kNotSeenByServer,
|
525
371
|
};
|
526
|
-
static std::string DisplayValue(ValueType x)
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
372
|
+
static std::string DisplayValue(ValueType x);
|
373
|
+
};
|
374
|
+
|
375
|
+
// Annotation added by a server transport to note the peer making a request.
|
376
|
+
struct PeerString {
|
377
|
+
static absl::string_view DebugKey() { return "PeerString"; }
|
378
|
+
static constexpr bool kRepeatable = false;
|
379
|
+
using ValueType = absl::string_view;
|
380
|
+
static std::string DisplayValue(ValueType x);
|
534
381
|
};
|
535
382
|
|
536
383
|
// Annotation added by various systems to describe the reason for a failure.
|
@@ -538,16 +385,31 @@ struct GrpcStatusContext {
|
|
538
385
|
static absl::string_view DebugKey() { return "GrpcStatusContext"; }
|
539
386
|
static constexpr bool kRepeatable = true;
|
540
387
|
using ValueType = std::string;
|
541
|
-
static const std::string& DisplayValue(const std::string& x)
|
388
|
+
static const std::string& DisplayValue(const std::string& x);
|
542
389
|
};
|
543
390
|
|
544
391
|
namespace metadata_detail {
|
545
392
|
|
546
|
-
//
|
547
|
-
//
|
548
|
-
//
|
549
|
-
|
550
|
-
|
393
|
+
// Build a key/value formatted debug string.
|
394
|
+
// Output looks like 'key1: value1, key2: value2'
|
395
|
+
// The string is expected to be readable, but not necessarily parsable.
|
396
|
+
class DebugStringBuilder {
|
397
|
+
public:
|
398
|
+
// Add one key/value pair to the output.
|
399
|
+
void Add(absl::string_view key, absl::string_view value);
|
400
|
+
|
401
|
+
// Finalize the output and return the string.
|
402
|
+
// Subsequent Add calls are UB.
|
403
|
+
std::string TakeOutput() { return std::move(out_); }
|
404
|
+
|
405
|
+
private:
|
406
|
+
std::string out_;
|
407
|
+
};
|
408
|
+
|
409
|
+
// IsEncodable: Given a trait, determine if that trait is encodable, or is
|
410
|
+
// just a value attached to a MetadataMap. We use the presence of the key()
|
411
|
+
// static method to determine if a trait is encodable or not - encodable
|
412
|
+
// traits have string names, and non-encodable traits do not.
|
551
413
|
template <typename Trait, typename Ignored = void>
|
552
414
|
struct IsEncodableTrait {
|
553
415
|
static const bool value = false;
|
@@ -597,8 +459,8 @@ struct NameLookup<void> {
|
|
597
459
|
};
|
598
460
|
|
599
461
|
// Helper to take a slice to a memento to a value.
|
600
|
-
// By splitting this part out we can scale code size as the number of
|
601
|
-
// value) types, rather than as the number of traits.
|
462
|
+
// By splitting this part out we can scale code size as the number of
|
463
|
+
// (memento, value) types, rather than as the number of traits.
|
602
464
|
template <typename ParseMementoFn, typename MementoToValueFn>
|
603
465
|
struct ParseValue {
|
604
466
|
template <ParseMementoFn parse_memento, MementoToValueFn memento_to_value>
|
@@ -647,8 +509,8 @@ class ParseHelper {
|
|
647
509
|
};
|
648
510
|
|
649
511
|
// This is an "Op" type for NameLookup.
|
650
|
-
// Used for MetadataMap::Append, its Found/NotFound methods turn a slice into
|
651
|
-
// value and add it to a container.
|
512
|
+
// Used for MetadataMap::Append, its Found/NotFound methods turn a slice into
|
513
|
+
// a value and add it to a container.
|
652
514
|
template <typename Container>
|
653
515
|
class AppendHelper {
|
654
516
|
public:
|
@@ -665,7 +527,7 @@ class AppendHelper {
|
|
665
527
|
}
|
666
528
|
|
667
529
|
GPR_ATTRIBUTE_NOINLINE void NotFound(absl::string_view key) {
|
668
|
-
container_->
|
530
|
+
container_->unknown_.Append(key, std::move(value_));
|
669
531
|
}
|
670
532
|
|
671
533
|
private:
|
@@ -688,7 +550,7 @@ class RemoveHelper {
|
|
688
550
|
}
|
689
551
|
|
690
552
|
GPR_ATTRIBUTE_NOINLINE void NotFound(absl::string_view key) {
|
691
|
-
container_->
|
553
|
+
container_->unknown_.Remove(key);
|
692
554
|
}
|
693
555
|
|
694
556
|
private:
|
@@ -696,8 +558,8 @@ class RemoveHelper {
|
|
696
558
|
};
|
697
559
|
|
698
560
|
// This is an "Op" type for NameLookup.
|
699
|
-
// Used for MetadataMap::GetStringValue, its Found/NotFound methods generated
|
700
|
-
// string value from the container.
|
561
|
+
// Used for MetadataMap::GetStringValue, its Found/NotFound methods generated
|
562
|
+
// a string value from the container.
|
701
563
|
template <typename Container>
|
702
564
|
class GetStringValueHelper {
|
703
565
|
public:
|
@@ -747,7 +609,7 @@ class GetStringValueHelper {
|
|
747
609
|
|
748
610
|
GPR_ATTRIBUTE_NOINLINE absl::optional<absl::string_view> NotFound(
|
749
611
|
absl::string_view key) {
|
750
|
-
return container_->
|
612
|
+
return container_->unknown_.GetStringValue(key, backing_);
|
751
613
|
}
|
752
614
|
|
753
615
|
private:
|
@@ -760,7 +622,17 @@ using LogFn = absl::FunctionRef<void(absl::string_view, absl::string_view)>;
|
|
760
622
|
|
761
623
|
template <typename T>
|
762
624
|
struct AdaptDisplayValueToLog {
|
763
|
-
static std::string ToString(const T& value) { return
|
625
|
+
static std::string ToString(const T& value) { return std::to_string(value); }
|
626
|
+
};
|
627
|
+
|
628
|
+
template <>
|
629
|
+
struct AdaptDisplayValueToLog<std::string> {
|
630
|
+
static std::string ToString(const std::string& value) { return value; }
|
631
|
+
};
|
632
|
+
|
633
|
+
template <>
|
634
|
+
struct AdaptDisplayValueToLog<const std::string&> {
|
635
|
+
static std::string ToString(const std::string& value) { return value; }
|
764
636
|
};
|
765
637
|
|
766
638
|
template <>
|
@@ -916,7 +788,7 @@ class CopySink {
|
|
916
788
|
}
|
917
789
|
|
918
790
|
void Encode(const Slice& key, const Slice& value) {
|
919
|
-
dst_->
|
791
|
+
dst_->unknown_.Append(key.as_string_view(), value.Ref());
|
920
792
|
}
|
921
793
|
|
922
794
|
private:
|
@@ -972,6 +844,31 @@ class TransportSizeEncoder {
|
|
972
844
|
uint32_t size_ = 0;
|
973
845
|
};
|
974
846
|
|
847
|
+
// Handle unknown (non-trait-based) fields in the metadata map.
|
848
|
+
class UnknownMap {
|
849
|
+
public:
|
850
|
+
explicit UnknownMap(Arena* arena) : unknown_(arena) {}
|
851
|
+
|
852
|
+
using BackingType = ChunkedVector<std::pair<Slice, Slice>, 10>;
|
853
|
+
|
854
|
+
void Append(absl::string_view key, Slice value);
|
855
|
+
void Remove(absl::string_view key);
|
856
|
+
absl::optional<absl::string_view> GetStringValue(absl::string_view key,
|
857
|
+
std::string* backing) const;
|
858
|
+
|
859
|
+
BackingType::ConstForwardIterator begin() const { return unknown_.cbegin(); }
|
860
|
+
BackingType::ConstForwardIterator end() const { return unknown_.cend(); }
|
861
|
+
|
862
|
+
bool empty() const { return unknown_.empty(); }
|
863
|
+
size_t size() const { return unknown_.size(); }
|
864
|
+
void Clear() { unknown_.Clear(); }
|
865
|
+
Arena* arena() const { return unknown_.arena(); }
|
866
|
+
|
867
|
+
private:
|
868
|
+
// Backing store for added metadata.
|
869
|
+
ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
|
870
|
+
};
|
871
|
+
|
975
872
|
} // namespace metadata_detail
|
976
873
|
|
977
874
|
// Helper function for encoders
|
@@ -1032,21 +929,23 @@ MetadataValueAsSlice(typename Which::ValueType value) {
|
|
1032
929
|
// // Parse a memento from a slice
|
1033
930
|
// // Takes ownership of value
|
1034
931
|
// // Calls fn in the case of an error that should be reported to the user
|
1035
|
-
// static MementoType ParseMemento(Slice value, MementoParseErrorFn fn) {
|
932
|
+
// static MementoType ParseMemento(Slice value, MementoParseErrorFn fn) {
|
933
|
+
// ...
|
1036
934
|
// }
|
1037
935
|
// // Convert a memento to a value
|
1038
936
|
// static ValueType MementoToValue(MementoType memento) { ... }
|
1039
937
|
// // Convert a value to its canonical text wire format (the format that
|
1040
938
|
// // ParseMemento will accept!)
|
1041
939
|
// static Slice Encode(const ValueType& value);
|
1042
|
-
// // Convert a value to something that can be passed to StrCat and
|
940
|
+
// // Convert a value to something that can be passed to StrCat and
|
941
|
+
// displayed
|
1043
942
|
// // for debugging
|
1044
943
|
// static SomeStrCatableType DisplayValue(MementoType value) { ... }
|
1045
944
|
// };
|
1046
945
|
//
|
1047
|
-
// Non-encodable traits are determined by missing the key() method, and have
|
1048
|
-
// following signature (and by convention omit the Metadata part of the
|
1049
|
-
// name):
|
946
|
+
// Non-encodable traits are determined by missing the key() method, and have
|
947
|
+
// the following signature (and by convention omit the Metadata part of the
|
948
|
+
// type name):
|
1050
949
|
// // Traits for the GrpcXyz field:
|
1051
950
|
// struct GrpcXyz {
|
1052
951
|
// // The string key that should be used for debug dumps - should not be a
|
@@ -1056,7 +955,8 @@ MetadataValueAsSlice(typename Which::ValueType value) {
|
|
1056
955
|
// static constexpr bool kRepeatable = ...;
|
1057
956
|
// // The type that's stored on MetadataBatch
|
1058
957
|
// using ValueType = ...;
|
1059
|
-
// // Convert a value to something that can be passed to StrCat and
|
958
|
+
// // Convert a value to something that can be passed to StrCat and
|
959
|
+
// displayed
|
1060
960
|
// // for debugging
|
1061
961
|
// static SomeStrCatableType DisplayValue(ValueType value) { ... }
|
1062
962
|
// };
|
@@ -1069,10 +969,10 @@ MetadataValueAsSlice(typename Which::ValueType value) {
|
|
1069
969
|
// in the compression table. This is what mementos are used for.
|
1070
970
|
//
|
1071
971
|
// A trait offers the capability to turn a slice into a memento via
|
1072
|
-
// ParseMemento. This is exposed to users of MetadataMap via the Parse()
|
1073
|
-
// that returns a ParsedMetadata object. That ParsedMetadata object
|
1074
|
-
// be used to set the same value on many different MetadataMaps
|
1075
|
-
// to reparse.
|
972
|
+
// ParseMemento. This is exposed to users of MetadataMap via the Parse()
|
973
|
+
// method, that returns a ParsedMetadata object. That ParsedMetadata object
|
974
|
+
// can in turn be used to set the same value on many different MetadataMaps
|
975
|
+
// without having to reparse.
|
1076
976
|
//
|
1077
977
|
// Implementation wise, ParsedMetadata is a type erased wrapper around
|
1078
978
|
// MementoType. When we set a value on MetadataMap, we first turn that memento
|
@@ -1125,12 +1025,11 @@ class MetadataMap {
|
|
1125
1025
|
}
|
1126
1026
|
|
1127
1027
|
std::string DebugString() const {
|
1128
|
-
|
1129
|
-
Log([&
|
1130
|
-
|
1131
|
-
absl::StrAppend(&out, absl::CEscape(key), ": ", absl::CEscape(value));
|
1028
|
+
metadata_detail::DebugStringBuilder builder;
|
1029
|
+
Log([&builder](absl::string_view key, absl::string_view value) {
|
1030
|
+
builder.Add(key, value);
|
1132
1031
|
});
|
1133
|
-
return
|
1032
|
+
return builder.TakeOutput();
|
1134
1033
|
}
|
1135
1034
|
|
1136
1035
|
// Get the pointer to the value of some known metadata.
|
@@ -1277,36 +1176,9 @@ class MetadataMap {
|
|
1277
1176
|
template <typename Which>
|
1278
1177
|
using Value = metadata_detail::Value<Which>;
|
1279
1178
|
|
1280
|
-
void AppendUnknown(absl::string_view key, Slice value) {
|
1281
|
-
unknown_.EmplaceBack(Slice::FromCopiedString(key), value.Ref());
|
1282
|
-
}
|
1283
|
-
|
1284
|
-
void RemoveUnknown(absl::string_view key) {
|
1285
|
-
unknown_.SetEnd(std::remove_if(unknown_.begin(), unknown_.end(),
|
1286
|
-
[key](const std::pair<Slice, Slice>& p) {
|
1287
|
-
return p.first.as_string_view() == key;
|
1288
|
-
}));
|
1289
|
-
}
|
1290
|
-
|
1291
|
-
absl::optional<absl::string_view> GetStringValueUnknown(
|
1292
|
-
absl::string_view key, std::string* backing) const {
|
1293
|
-
absl::optional<absl::string_view> out;
|
1294
|
-
for (const auto& p : unknown_) {
|
1295
|
-
if (p.first.as_string_view() == key) {
|
1296
|
-
if (!out.has_value()) {
|
1297
|
-
out = p.second.as_string_view();
|
1298
|
-
} else {
|
1299
|
-
out = *backing = absl::StrCat(*out, ",", p.second.as_string_view());
|
1300
|
-
}
|
1301
|
-
}
|
1302
|
-
}
|
1303
|
-
return out;
|
1304
|
-
}
|
1305
|
-
|
1306
1179
|
// Table of known metadata types.
|
1307
1180
|
Table<Value<Traits>...> table_;
|
1308
|
-
|
1309
|
-
ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
|
1181
|
+
metadata_detail::UnknownMap unknown_;
|
1310
1182
|
};
|
1311
1183
|
|
1312
1184
|
// Ok/not-ok check for metadata maps that contain GrpcStatusMetadata, so that
|
@@ -1324,8 +1196,8 @@ template <typename Derived, typename... Traits>
|
|
1324
1196
|
MetadataMap<Derived, Traits...>::MetadataMap(MetadataMap&& other) noexcept
|
1325
1197
|
: table_(std::move(other.table_)), unknown_(std::move(other.unknown_)) {}
|
1326
1198
|
|
1327
|
-
// We never create MetadataMap directly, instead we create Derived, but we
|
1328
|
-
// to be able to move it without redeclaring this.
|
1199
|
+
// We never create MetadataMap directly, instead we create Derived, but we
|
1200
|
+
// want to be able to move it without redeclaring this.
|
1329
1201
|
// NOLINTNEXTLINE(misc-unconventional-assign-operator)
|
1330
1202
|
template <typename Derived, typename... Traits>
|
1331
1203
|
Derived& MetadataMap<Derived, Traits...>::operator=(
|
@@ -1376,12 +1248,13 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
|
|
1376
1248
|
grpc_core::GrpcTimeoutMetadata, grpc_core::GrpcPreviousRpcAttemptsMetadata,
|
1377
1249
|
grpc_core::GrpcRetryPushbackMsMetadata, grpc_core::UserAgentMetadata,
|
1378
1250
|
grpc_core::GrpcMessageMetadata, grpc_core::HostMetadata,
|
1379
|
-
grpc_core::
|
1251
|
+
grpc_core::EndpointLoadMetricsBinMetadata,
|
1380
1252
|
grpc_core::GrpcServerStatsBinMetadata, grpc_core::GrpcTraceBinMetadata,
|
1381
1253
|
grpc_core::GrpcTagsBinMetadata, grpc_core::GrpcLbClientStatsMetadata,
|
1382
1254
|
grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata,
|
1383
1255
|
// Non-encodable things
|
1384
|
-
grpc_core::GrpcStreamNetworkState, grpc_core::
|
1256
|
+
grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
|
1257
|
+
grpc_core::GrpcStatusContext>;
|
1385
1258
|
|
1386
1259
|
struct grpc_metadata_batch : public grpc_metadata_batch_base {
|
1387
1260
|
using grpc_metadata_batch_base::grpc_metadata_batch_base;
|