grpc 1.35.0.pre1 → 1.37.1
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 +121 -89
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/impl/codegen/port_platform.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +359 -331
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -4
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +232 -110
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +1 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +34 -50
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +307 -155
- data/src/core/ext/filters/client_channel/server_address.cc +9 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +69 -146
- data/src/core/ext/filters/client_channel/subchannel.h +63 -95
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +500 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +490 -178
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +39 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +2149 -666
- data/src/core/ext/xds/xds_api.h +321 -119
- data/src/core/ext/xds/xds_bootstrap.cc +80 -45
- data/src/core/ext/xds/xds_bootstrap.h +17 -5
- data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
- data/src/core/ext/xds/xds_certificate_provider.h +83 -44
- data/src/core/ext/xds/xds_client.cc +181 -34
- data/src/core/ext/xds/xds_client.h +29 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +425 -24
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +7 -0
- data/src/core/lib/channel/channelz.cc +92 -4
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/handshaker.cc +2 -44
- data/src/core/lib/channel/handshaker.h +1 -18
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli_security_connector.cc +2 -2
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -2
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +11 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.cc +6 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/resource_quota.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.cc +121 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +25 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +5 -8
- data/src/core/lib/iomgr/tcp_uv.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.h +2 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +9 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +32 -14
- data/src/core/lib/security/transport/security_handshaker.cc +33 -5
- data/src/core/lib/security/transport/server_auth_filter.cc +7 -0
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +38 -19
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +43 -36
- data/src/core/lib/surface/server.h +76 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +14 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +18 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +0 -3
- data/src/core/tsi/ssl_transport_security.h +0 -3
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +715 -713
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +67 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -99
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +362 -50
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +140 -84
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -88,6 +88,12 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
88
88
|
explicit XdsClient(grpc_error** error);
|
89
89
|
~XdsClient() override;
|
90
90
|
|
91
|
+
const XdsBootstrap& bootstrap() const {
|
92
|
+
// bootstrap_ is guaranteed to be non-null since XdsClient::GetOrCreate()
|
93
|
+
// would return a null object if bootstrap_ was null.
|
94
|
+
return *bootstrap_;
|
95
|
+
}
|
96
|
+
|
91
97
|
CertificateProviderStore& certificate_provider_store() {
|
92
98
|
return *certificate_provider_store_;
|
93
99
|
}
|
@@ -185,6 +191,15 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
185
191
|
// Resets connection backoff state.
|
186
192
|
void ResetBackoff();
|
187
193
|
|
194
|
+
// Dumps the active xDS config in JSON format.
|
195
|
+
// Individual xDS resource is encoded as envoy.admin.v3.*ConfigDump. Returns
|
196
|
+
// envoy.service.status.v3.ClientConfig which also includes the config
|
197
|
+
// status (e.g., CLIENT_REQUESTED, CLIENT_ACKED, CLIENT_NACKED).
|
198
|
+
//
|
199
|
+
// Expected to be invoked by wrapper languages in their CSDS service
|
200
|
+
// implementation.
|
201
|
+
std::string DumpClientConfigBinary();
|
202
|
+
|
188
203
|
private:
|
189
204
|
// Contains a channel to the xds server and all the data related to the
|
190
205
|
// channel. Holds a ref to the xds client object.
|
@@ -215,6 +230,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
215
230
|
void MaybeStartLrsCall();
|
216
231
|
void StopLrsCall();
|
217
232
|
|
233
|
+
bool HasAdsCall() const;
|
218
234
|
bool HasActiveAdsCall() const;
|
219
235
|
|
220
236
|
void StartConnectivityWatchLocked();
|
@@ -248,6 +264,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
248
264
|
watchers;
|
249
265
|
// The latest data seen from LDS.
|
250
266
|
absl::optional<XdsApi::LdsUpdate> update;
|
267
|
+
XdsApi::ResourceMetadata meta;
|
251
268
|
};
|
252
269
|
|
253
270
|
struct RouteConfigState {
|
@@ -256,6 +273,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
256
273
|
watchers;
|
257
274
|
// The latest data seen from RDS.
|
258
275
|
absl::optional<XdsApi::RdsUpdate> update;
|
276
|
+
XdsApi::ResourceMetadata meta;
|
259
277
|
};
|
260
278
|
|
261
279
|
struct ClusterState {
|
@@ -263,6 +281,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
263
281
|
watchers;
|
264
282
|
// The latest data seen from CDS.
|
265
283
|
absl::optional<XdsApi::CdsUpdate> update;
|
284
|
+
XdsApi::ResourceMetadata meta;
|
266
285
|
};
|
267
286
|
|
268
287
|
struct EndpointState {
|
@@ -271,6 +290,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
271
290
|
watchers;
|
272
291
|
// The latest data seen from EDS.
|
273
292
|
absl::optional<XdsApi::EdsUpdate> update;
|
293
|
+
XdsApi::ResourceMetadata meta;
|
274
294
|
};
|
275
295
|
|
276
296
|
struct LoadReportState {
|
@@ -293,6 +313,12 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
293
313
|
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshotLocked(
|
294
314
|
bool send_all_clusters, const std::set<std::string>& clusters);
|
295
315
|
|
316
|
+
void UpdateResourceMetadataWithFailedParseResult(
|
317
|
+
grpc_millis update_time, const XdsApi::AdsParseResult& result);
|
318
|
+
void UpdatePendingResources(
|
319
|
+
const std::string& type_url,
|
320
|
+
XdsApi::ResourceMetadataMap* resource_metadata_map);
|
321
|
+
|
296
322
|
const grpc_millis request_timeout_;
|
297
323
|
grpc_pollset_set* interested_parties_;
|
298
324
|
std::unique_ptr<XdsBootstrap> bootstrap_;
|
@@ -329,6 +355,9 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
329
355
|
namespace internal {
|
330
356
|
void SetXdsChannelArgsForTest(grpc_channel_args* args);
|
331
357
|
void UnsetGlobalXdsClientForTest();
|
358
|
+
// Sets bootstrap config to be used when no env var is set.
|
359
|
+
// Does not take ownership of config.
|
360
|
+
void SetXdsFallbackBootstrapConfig(const char* config);
|
332
361
|
} // namespace internal
|
333
362
|
|
334
363
|
} // namespace grpc_core
|
@@ -137,7 +137,8 @@ XdsClusterLocalityStats::GetSnapshotAndReset() {
|
|
137
137
|
// not related to a single reporting interval.
|
138
138
|
total_requests_in_progress_.Load(MemoryOrder::RELAXED),
|
139
139
|
GetAndResetCounter(&total_error_requests_),
|
140
|
-
GetAndResetCounter(&total_issued_requests_)
|
140
|
+
GetAndResetCounter(&total_issued_requests_),
|
141
|
+
{}};
|
141
142
|
MutexLock lock(&backend_metrics_mu_);
|
142
143
|
snapshot.backend_metrics = std::move(backend_metrics_);
|
143
144
|
return snapshot;
|
@@ -56,10 +56,10 @@ class XdsLocalityName : public RefCounted<XdsLocalityName> {
|
|
56
56
|
}
|
57
57
|
};
|
58
58
|
|
59
|
-
XdsLocalityName(std::string region, std::string zone, std::string
|
59
|
+
XdsLocalityName(std::string region, std::string zone, std::string sub_zone)
|
60
60
|
: region_(std::move(region)),
|
61
61
|
zone_(std::move(zone)),
|
62
|
-
sub_zone_(std::move(
|
62
|
+
sub_zone_(std::move(sub_zone)) {}
|
63
63
|
|
64
64
|
bool operator==(const XdsLocalityName& other) const {
|
65
65
|
return region_ == other.region_ && zone_ == other.zone_ &&
|
@@ -0,0 +1,226 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2021 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/xds/xds_http_fault_filter.h"
|
20
|
+
|
21
|
+
#include <grpc/grpc.h>
|
22
|
+
|
23
|
+
#include <string>
|
24
|
+
|
25
|
+
#include "absl/status/statusor.h"
|
26
|
+
#include "absl/strings/str_cat.h"
|
27
|
+
#include "absl/strings/str_format.h"
|
28
|
+
#include "absl/strings/string_view.h"
|
29
|
+
#include "envoy/extensions/filters/common/fault/v3/fault.upb.h"
|
30
|
+
#include "envoy/extensions/filters/http/fault/v3/fault.upb.h"
|
31
|
+
#include "envoy/extensions/filters/http/fault/v3/fault.upbdefs.h"
|
32
|
+
#include "envoy/type/v3/percent.upb.h"
|
33
|
+
#include "google/protobuf/any.upb.h"
|
34
|
+
#include "google/protobuf/duration.upb.h"
|
35
|
+
#include "google/protobuf/wrappers.upb.h"
|
36
|
+
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
37
|
+
#include "src/core/ext/xds/xds_http_filters.h"
|
38
|
+
#include "src/core/lib/channel/channel_args.h"
|
39
|
+
#include "src/core/lib/channel/channel_stack.h"
|
40
|
+
#include "src/core/lib/channel/status_util.h"
|
41
|
+
#include "src/core/lib/json/json.h"
|
42
|
+
#include "src/core/lib/transport/status_conversion.h"
|
43
|
+
#include "upb/def.h"
|
44
|
+
|
45
|
+
namespace grpc_core {
|
46
|
+
|
47
|
+
const char* kXdsHttpFaultFilterConfigName =
|
48
|
+
"envoy.extensions.filters.http.fault.v3.HTTPFault";
|
49
|
+
|
50
|
+
namespace {
|
51
|
+
|
52
|
+
uint32_t GetDenominator(const envoy_type_v3_FractionalPercent* fraction) {
|
53
|
+
if (fraction != nullptr) {
|
54
|
+
const auto denominator =
|
55
|
+
static_cast<envoy_type_v3_FractionalPercent_DenominatorType>(
|
56
|
+
envoy_type_v3_FractionalPercent_denominator(fraction));
|
57
|
+
switch (denominator) {
|
58
|
+
case envoy_type_v3_FractionalPercent_MILLION:
|
59
|
+
return 1000000;
|
60
|
+
case envoy_type_v3_FractionalPercent_TEN_THOUSAND:
|
61
|
+
return 10000;
|
62
|
+
case envoy_type_v3_FractionalPercent_HUNDRED:
|
63
|
+
default:
|
64
|
+
return 100;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
// Use 100 as the default denominator
|
68
|
+
return 100;
|
69
|
+
}
|
70
|
+
|
71
|
+
absl::StatusOr<Json> ParseHttpFaultIntoJson(upb_strview serialized_http_fault,
|
72
|
+
upb_arena* arena) {
|
73
|
+
auto* http_fault = envoy_extensions_filters_http_fault_v3_HTTPFault_parse(
|
74
|
+
serialized_http_fault.data, serialized_http_fault.size, arena);
|
75
|
+
if (http_fault == nullptr) {
|
76
|
+
return absl::InvalidArgumentError(
|
77
|
+
"could not parse fault injection filter config");
|
78
|
+
}
|
79
|
+
// NOTE(lidiz): Here, we are manually translating the upb messages into the
|
80
|
+
// JSON form of the filter config as part of method config, which will be
|
81
|
+
// directly used later by service config. In this way, we can validate the
|
82
|
+
// filter configs, and NACK if needed. It also allows the service config to
|
83
|
+
// function independently without xDS, but not the other way around.
|
84
|
+
// NOTE(lidiz): please refer to FaultInjectionPolicy for ground truth
|
85
|
+
// definitions, located at:
|
86
|
+
// src/core/ext/filters/fault_injection/service_config_parser.h
|
87
|
+
Json::Object fault_injection_policy_json;
|
88
|
+
// Section 1: Parse the abort injection config
|
89
|
+
const auto* fault_abort =
|
90
|
+
envoy_extensions_filters_http_fault_v3_HTTPFault_abort(http_fault);
|
91
|
+
if (fault_abort != nullptr) {
|
92
|
+
grpc_status_code abort_grpc_status_code = GRPC_STATUS_OK;
|
93
|
+
// Try if gRPC status code is set first
|
94
|
+
int abort_grpc_status_code_raw =
|
95
|
+
envoy_extensions_filters_http_fault_v3_FaultAbort_grpc_status(
|
96
|
+
fault_abort);
|
97
|
+
if (abort_grpc_status_code_raw != 0) {
|
98
|
+
if (!grpc_status_code_from_int(abort_grpc_status_code_raw,
|
99
|
+
&abort_grpc_status_code)) {
|
100
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
101
|
+
"invalid gRPC status code: ", abort_grpc_status_code_raw));
|
102
|
+
}
|
103
|
+
} else {
|
104
|
+
// if gRPC status code is empty, check http status
|
105
|
+
int abort_http_status_code =
|
106
|
+
envoy_extensions_filters_http_fault_v3_FaultAbort_http_status(
|
107
|
+
fault_abort);
|
108
|
+
if (abort_http_status_code != 0 and abort_http_status_code != 200) {
|
109
|
+
abort_grpc_status_code =
|
110
|
+
grpc_http2_status_to_grpc_status(abort_http_status_code);
|
111
|
+
}
|
112
|
+
}
|
113
|
+
// Set the abort_code, even if it's OK
|
114
|
+
fault_injection_policy_json["abortCode"] =
|
115
|
+
grpc_status_code_to_string(abort_grpc_status_code);
|
116
|
+
// Set the headers if we enabled header abort injection control
|
117
|
+
if (envoy_extensions_filters_http_fault_v3_FaultAbort_has_header_abort(
|
118
|
+
fault_abort)) {
|
119
|
+
fault_injection_policy_json["abortCodeHeader"] =
|
120
|
+
"x-envoy-fault-abort-grpc-request";
|
121
|
+
fault_injection_policy_json["abortPercentageHeader"] =
|
122
|
+
"x-envoy-fault-abort-percentage";
|
123
|
+
}
|
124
|
+
// Set the fraction percent
|
125
|
+
auto* percent =
|
126
|
+
envoy_extensions_filters_http_fault_v3_FaultAbort_percentage(
|
127
|
+
fault_abort);
|
128
|
+
fault_injection_policy_json["abortPercentageNumerator"] =
|
129
|
+
Json(envoy_type_v3_FractionalPercent_numerator(percent));
|
130
|
+
fault_injection_policy_json["abortPercentageDenominator"] =
|
131
|
+
Json(GetDenominator(percent));
|
132
|
+
}
|
133
|
+
// Section 2: Parse the delay injection config
|
134
|
+
const auto* fault_delay =
|
135
|
+
envoy_extensions_filters_http_fault_v3_HTTPFault_delay(http_fault);
|
136
|
+
if (fault_delay != nullptr) {
|
137
|
+
// Parse the delay duration
|
138
|
+
const auto* delay_duration =
|
139
|
+
envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(
|
140
|
+
fault_delay);
|
141
|
+
if (delay_duration != nullptr) {
|
142
|
+
fault_injection_policy_json["delay"] = absl::StrFormat(
|
143
|
+
"%d.%09ds", google_protobuf_Duration_seconds(delay_duration),
|
144
|
+
google_protobuf_Duration_nanos(delay_duration));
|
145
|
+
}
|
146
|
+
// Set the headers if we enabled header delay injection control
|
147
|
+
if (envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(
|
148
|
+
fault_delay)) {
|
149
|
+
fault_injection_policy_json["delayHeader"] =
|
150
|
+
"x-envoy-fault-delay-request";
|
151
|
+
fault_injection_policy_json["delayPercentageHeader"] =
|
152
|
+
"x-envoy-fault-delay-request-percentage";
|
153
|
+
}
|
154
|
+
// Set the fraction percent
|
155
|
+
auto* percent =
|
156
|
+
envoy_extensions_filters_common_fault_v3_FaultDelay_percentage(
|
157
|
+
fault_delay);
|
158
|
+
fault_injection_policy_json["delayPercentageNumerator"] =
|
159
|
+
Json(envoy_type_v3_FractionalPercent_numerator(percent));
|
160
|
+
fault_injection_policy_json["delayPercentageDenominator"] =
|
161
|
+
Json(GetDenominator(percent));
|
162
|
+
}
|
163
|
+
// Section 3: Parse the maximum active faults
|
164
|
+
const auto* max_fault_wrapper =
|
165
|
+
envoy_extensions_filters_http_fault_v3_HTTPFault_max_active_faults(
|
166
|
+
http_fault);
|
167
|
+
if (max_fault_wrapper != nullptr) {
|
168
|
+
fault_injection_policy_json["maxFaults"] =
|
169
|
+
google_protobuf_UInt32Value_value(max_fault_wrapper);
|
170
|
+
}
|
171
|
+
return fault_injection_policy_json;
|
172
|
+
}
|
173
|
+
|
174
|
+
} // namespace
|
175
|
+
|
176
|
+
void XdsHttpFaultFilter::PopulateSymtab(upb_symtab* symtab) const {
|
177
|
+
envoy_extensions_filters_http_fault_v3_HTTPFault_getmsgdef(symtab);
|
178
|
+
}
|
179
|
+
|
180
|
+
absl::StatusOr<XdsHttpFilterImpl::FilterConfig>
|
181
|
+
XdsHttpFaultFilter::GenerateFilterConfig(upb_strview serialized_filter_config,
|
182
|
+
upb_arena* arena) const {
|
183
|
+
absl::StatusOr<Json> parse_result =
|
184
|
+
ParseHttpFaultIntoJson(serialized_filter_config, arena);
|
185
|
+
if (!parse_result.ok()) {
|
186
|
+
return parse_result.status();
|
187
|
+
}
|
188
|
+
return FilterConfig{kXdsHttpFaultFilterConfigName, std::move(*parse_result)};
|
189
|
+
}
|
190
|
+
|
191
|
+
absl::StatusOr<XdsHttpFilterImpl::FilterConfig>
|
192
|
+
XdsHttpFaultFilter::GenerateFilterConfigOverride(
|
193
|
+
upb_strview serialized_filter_config, upb_arena* arena) const {
|
194
|
+
// HTTPFault filter has the same message type in HTTP connection manager's
|
195
|
+
// filter config and in overriding filter config field.
|
196
|
+
return GenerateFilterConfig(serialized_filter_config, arena);
|
197
|
+
}
|
198
|
+
|
199
|
+
const grpc_channel_filter* XdsHttpFaultFilter::channel_filter() const {
|
200
|
+
return &FaultInjectionFilterVtable;
|
201
|
+
}
|
202
|
+
|
203
|
+
grpc_channel_args* XdsHttpFaultFilter::ModifyChannelArgs(
|
204
|
+
grpc_channel_args* args) const {
|
205
|
+
grpc_arg args_to_add = grpc_channel_arg_integer_create(
|
206
|
+
const_cast<char*>(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG), 1);
|
207
|
+
grpc_channel_args* new_args =
|
208
|
+
grpc_channel_args_copy_and_add(args, &args_to_add, 1);
|
209
|
+
// Since this function takes the ownership of the channel args, it needs to
|
210
|
+
// deallocate the old ones to prevent leak.
|
211
|
+
grpc_channel_args_destroy(args);
|
212
|
+
return new_args;
|
213
|
+
}
|
214
|
+
|
215
|
+
absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
|
216
|
+
XdsHttpFaultFilter::GenerateServiceConfig(
|
217
|
+
const FilterConfig& hcm_filter_config,
|
218
|
+
const FilterConfig* filter_config_override) const {
|
219
|
+
Json policy_json = filter_config_override != nullptr
|
220
|
+
? filter_config_override->config
|
221
|
+
: hcm_filter_config.config;
|
222
|
+
// The policy JSON may be empty, that's allowed.
|
223
|
+
return ServiceConfigJsonEntry{"faultInjectionPolicy", policy_json.Dump()};
|
224
|
+
}
|
225
|
+
|
226
|
+
} // namespace grpc_core
|
@@ -0,0 +1,63 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2021 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <grpc/grpc.h>
|
23
|
+
|
24
|
+
#include "absl/status/statusor.h"
|
25
|
+
#include "src/core/ext/xds/xds_http_filters.h"
|
26
|
+
#include "upb/def.h"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
extern const char* kXdsHttpFaultFilterConfigName;
|
31
|
+
|
32
|
+
class XdsHttpFaultFilter : public XdsHttpFilterImpl {
|
33
|
+
public:
|
34
|
+
// Overrides the PopulateSymtab method
|
35
|
+
void PopulateSymtab(upb_symtab* symtab) const override;
|
36
|
+
|
37
|
+
// Overrides the GenerateFilterConfig method
|
38
|
+
absl::StatusOr<FilterConfig> GenerateFilterConfig(
|
39
|
+
upb_strview serialized_filter_config, upb_arena* arena) const override;
|
40
|
+
|
41
|
+
// Overrides the GenerateFilterConfigOverride method
|
42
|
+
absl::StatusOr<FilterConfig> GenerateFilterConfigOverride(
|
43
|
+
upb_strview serialized_filter_config, upb_arena* arena) const override;
|
44
|
+
|
45
|
+
// Overrides the channel_filter method
|
46
|
+
const grpc_channel_filter* channel_filter() const override;
|
47
|
+
|
48
|
+
// Overrides the ModifyChannelArgs method
|
49
|
+
grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const override;
|
50
|
+
|
51
|
+
// Overrides the GenerateServiceConfig method
|
52
|
+
absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
53
|
+
const FilterConfig& hcm_filter_config,
|
54
|
+
const FilterConfig* filter_config_override) const override;
|
55
|
+
|
56
|
+
bool IsSupportedOnClients() const override { return true; }
|
57
|
+
|
58
|
+
bool IsSupportedOnServers() const override { return false; }
|
59
|
+
};
|
60
|
+
|
61
|
+
} // namespace grpc_core
|
62
|
+
|
63
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H */
|
@@ -0,0 +1,114 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2021 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/xds/xds_http_filters.h"
|
20
|
+
|
21
|
+
#include "envoy/extensions/filters/http/router/v3/router.upb.h"
|
22
|
+
#include "envoy/extensions/filters/http/router/v3/router.upbdefs.h"
|
23
|
+
#include "src/core/ext/xds/xds_http_fault_filter.h"
|
24
|
+
|
25
|
+
namespace grpc_core {
|
26
|
+
|
27
|
+
const char* kXdsHttpRouterFilterConfigName =
|
28
|
+
"envoy.extensions.filters.http.router.v3.Router";
|
29
|
+
|
30
|
+
namespace {
|
31
|
+
|
32
|
+
class XdsHttpRouterFilter : public XdsHttpFilterImpl {
|
33
|
+
public:
|
34
|
+
void PopulateSymtab(upb_symtab* symtab) const override {
|
35
|
+
envoy_extensions_filters_http_router_v3_Router_getmsgdef(symtab);
|
36
|
+
}
|
37
|
+
|
38
|
+
absl::StatusOr<FilterConfig> GenerateFilterConfig(
|
39
|
+
upb_strview serialized_filter_config, upb_arena* arena) const override {
|
40
|
+
if (envoy_extensions_filters_http_router_v3_Router_parse(
|
41
|
+
serialized_filter_config.data, serialized_filter_config.size,
|
42
|
+
arena) == nullptr) {
|
43
|
+
return absl::InvalidArgumentError("could not parse router filter config");
|
44
|
+
}
|
45
|
+
return FilterConfig{kXdsHttpRouterFilterConfigName, Json()};
|
46
|
+
}
|
47
|
+
|
48
|
+
absl::StatusOr<FilterConfig> GenerateFilterConfigOverride(
|
49
|
+
upb_strview /*serialized_filter_config*/,
|
50
|
+
upb_arena* /*arena*/) const override {
|
51
|
+
return absl::InvalidArgumentError(
|
52
|
+
"router filter does not support config override");
|
53
|
+
}
|
54
|
+
|
55
|
+
// No-op -- this filter is special-cased by the xds resolver.
|
56
|
+
const grpc_channel_filter* channel_filter() const override { return nullptr; }
|
57
|
+
|
58
|
+
// No-op -- this filter is special-cased by the xds resolver.
|
59
|
+
absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
60
|
+
const FilterConfig& /*hcm_filter_config*/,
|
61
|
+
const FilterConfig* /*filter_config_override*/) const override {
|
62
|
+
return absl::UnimplementedError("router filter should never be called");
|
63
|
+
}
|
64
|
+
|
65
|
+
bool IsSupportedOnClients() const override { return true; }
|
66
|
+
|
67
|
+
bool IsSupportedOnServers() const override { return true; }
|
68
|
+
};
|
69
|
+
|
70
|
+
using FilterOwnerList = std::vector<std::unique_ptr<XdsHttpFilterImpl>>;
|
71
|
+
using FilterRegistryMap = std::map<absl::string_view, XdsHttpFilterImpl*>;
|
72
|
+
|
73
|
+
FilterOwnerList* g_filters = nullptr;
|
74
|
+
FilterRegistryMap* g_filter_registry = nullptr;
|
75
|
+
|
76
|
+
} // namespace
|
77
|
+
|
78
|
+
void XdsHttpFilterRegistry::RegisterFilter(
|
79
|
+
std::unique_ptr<XdsHttpFilterImpl> filter,
|
80
|
+
const std::set<absl::string_view>& config_proto_type_names) {
|
81
|
+
for (auto config_proto_type_name : config_proto_type_names) {
|
82
|
+
(*g_filter_registry)[config_proto_type_name] = filter.get();
|
83
|
+
}
|
84
|
+
g_filters->push_back(std::move(filter));
|
85
|
+
}
|
86
|
+
|
87
|
+
const XdsHttpFilterImpl* XdsHttpFilterRegistry::GetFilterForType(
|
88
|
+
absl::string_view proto_type_name) {
|
89
|
+
auto it = g_filter_registry->find(proto_type_name);
|
90
|
+
if (it == g_filter_registry->end()) return nullptr;
|
91
|
+
return it->second;
|
92
|
+
}
|
93
|
+
|
94
|
+
void XdsHttpFilterRegistry::PopulateSymtab(upb_symtab* symtab) {
|
95
|
+
for (const auto& filter : *g_filters) {
|
96
|
+
filter->PopulateSymtab(symtab);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
void XdsHttpFilterRegistry::Init() {
|
101
|
+
g_filters = new FilterOwnerList;
|
102
|
+
g_filter_registry = new FilterRegistryMap;
|
103
|
+
RegisterFilter(absl::make_unique<XdsHttpRouterFilter>(),
|
104
|
+
{kXdsHttpRouterFilterConfigName});
|
105
|
+
RegisterFilter(absl::make_unique<XdsHttpFaultFilter>(),
|
106
|
+
{kXdsHttpFaultFilterConfigName});
|
107
|
+
}
|
108
|
+
|
109
|
+
void XdsHttpFilterRegistry::Shutdown() {
|
110
|
+
delete g_filter_registry;
|
111
|
+
delete g_filters;
|
112
|
+
}
|
113
|
+
|
114
|
+
} // namespace grpc_core
|