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
@@ -252,8 +252,8 @@ static void accept_new_connection(grpc_custom_socket* socket) {
|
|
252
252
|
uv_socket->accept_error = GRPC_ERROR_NONE;
|
253
253
|
uv_socket->pending_connections -= 1;
|
254
254
|
if (uv_socket->accept_error != GRPC_ERROR_NONE) {
|
255
|
-
uv_stream_t
|
256
|
-
uv_accept((uv_stream_t*)uv_socket->handle, &
|
255
|
+
uv_stream_t phony_handle;
|
256
|
+
uv_accept((uv_stream_t*)uv_socket->handle, &phony_handle);
|
257
257
|
uv_socket->accept_cb(socket, new_socket, error);
|
258
258
|
} else {
|
259
259
|
uv_socket_t* uv_new_socket = (uv_socket_t*)gpr_malloc(sizeof(uv_socket_t));
|
@@ -409,7 +409,7 @@ static void timer_init(grpc_timer* timer, grpc_millis deadline,
|
|
409
409
|
}
|
410
410
|
gpr_mu_unlock(&shard->mu);
|
411
411
|
|
412
|
-
/* Deadline may have decreased, we need to adjust the
|
412
|
+
/* Deadline may have decreased, we need to adjust the main queue. Note
|
413
413
|
that there is a potential racy unlocked region here. There could be a
|
414
414
|
reordering of multiple grpc_timer_init calls, at this point, but the < test
|
415
415
|
below should ensure that we err on the side of caution. There could
|
@@ -639,7 +639,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_millis now,
|
|
639
639
|
|
640
640
|
/* An grpc_timer_init() on the shard could intervene here, adding a new
|
641
641
|
timer that is earlier than new_min_deadline. However,
|
642
|
-
grpc_timer_init() will block on the
|
642
|
+
grpc_timer_init() will block on the mutex before it can call
|
643
643
|
set_min_deadline, so this one will complete first and then the Addtimer
|
644
644
|
will reduce the min_deadline (perhaps unnecessarily). */
|
645
645
|
g_shard_queue[0]->min_deadline = new_min_deadline;
|
@@ -133,7 +133,7 @@ static void run_some_timers() {
|
|
133
133
|
}
|
134
134
|
grpc_core::ExecCtx::Get()->Flush();
|
135
135
|
gpr_mu_lock(&g_mu);
|
136
|
-
// garbage collect any threads
|
136
|
+
// garbage collect any threads that are dead
|
137
137
|
gc_completed_threads();
|
138
138
|
// get ready to wait again
|
139
139
|
++g_waiter_count;
|
@@ -0,0 +1,339 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/support/port_platform.h>
|
16
|
+
|
17
|
+
#include "src/core/lib/matchers/matchers.h"
|
18
|
+
|
19
|
+
#include "absl/memory/memory.h"
|
20
|
+
#include "absl/strings/str_cat.h"
|
21
|
+
#include "absl/strings/str_format.h"
|
22
|
+
#include "absl/strings/str_join.h"
|
23
|
+
#include "absl/strings/str_split.h"
|
24
|
+
|
25
|
+
namespace grpc_core {
|
26
|
+
|
27
|
+
//
|
28
|
+
// StringMatcher
|
29
|
+
//
|
30
|
+
|
31
|
+
absl::StatusOr<StringMatcher> StringMatcher::Create(Type type,
|
32
|
+
absl::string_view matcher,
|
33
|
+
bool case_sensitive) {
|
34
|
+
if (type == Type::SAFE_REGEX) {
|
35
|
+
RE2::Options options;
|
36
|
+
options.set_case_sensitive(case_sensitive);
|
37
|
+
auto regex_matcher = absl::make_unique<RE2>(std::string(matcher), options);
|
38
|
+
if (!regex_matcher->ok()) {
|
39
|
+
return absl::InvalidArgumentError(
|
40
|
+
"Invalid regex string specified in matcher.");
|
41
|
+
}
|
42
|
+
return StringMatcher(std::move(regex_matcher), case_sensitive);
|
43
|
+
} else {
|
44
|
+
return StringMatcher(type, matcher, case_sensitive);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
StringMatcher::StringMatcher(Type type, absl::string_view matcher,
|
49
|
+
bool case_sensitive)
|
50
|
+
: type_(type), string_matcher_(matcher), case_sensitive_(case_sensitive) {}
|
51
|
+
|
52
|
+
StringMatcher::StringMatcher(std::unique_ptr<RE2> regex_matcher,
|
53
|
+
bool case_sensitive)
|
54
|
+
: type_(Type::SAFE_REGEX),
|
55
|
+
regex_matcher_(std::move(regex_matcher)),
|
56
|
+
case_sensitive_(case_sensitive) {}
|
57
|
+
|
58
|
+
StringMatcher::StringMatcher(const StringMatcher& other)
|
59
|
+
: type_(other.type_), case_sensitive_(other.case_sensitive_) {
|
60
|
+
if (type_ == Type::SAFE_REGEX) {
|
61
|
+
RE2::Options options;
|
62
|
+
options.set_case_sensitive(other.case_sensitive_);
|
63
|
+
regex_matcher_ =
|
64
|
+
absl::make_unique<RE2>(other.regex_matcher_->pattern(), options);
|
65
|
+
} else {
|
66
|
+
string_matcher_ = other.string_matcher_;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
StringMatcher& StringMatcher::operator=(const StringMatcher& other) {
|
71
|
+
type_ = other.type_;
|
72
|
+
if (type_ == Type::SAFE_REGEX) {
|
73
|
+
RE2::Options options;
|
74
|
+
options.set_case_sensitive(other.case_sensitive_);
|
75
|
+
regex_matcher_ =
|
76
|
+
absl::make_unique<RE2>(other.regex_matcher_->pattern(), options);
|
77
|
+
} else {
|
78
|
+
string_matcher_ = other.string_matcher_;
|
79
|
+
}
|
80
|
+
case_sensitive_ = other.case_sensitive_;
|
81
|
+
return *this;
|
82
|
+
}
|
83
|
+
|
84
|
+
StringMatcher::StringMatcher(StringMatcher&& other) noexcept
|
85
|
+
: type_(other.type_), case_sensitive_(other.case_sensitive_) {
|
86
|
+
if (type_ == Type::SAFE_REGEX) {
|
87
|
+
regex_matcher_ = std::move(other.regex_matcher_);
|
88
|
+
} else {
|
89
|
+
string_matcher_ = std::move(other.string_matcher_);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
StringMatcher& StringMatcher::operator=(StringMatcher&& other) noexcept {
|
94
|
+
type_ = other.type_;
|
95
|
+
if (type_ == Type::SAFE_REGEX) {
|
96
|
+
regex_matcher_ = std::move(other.regex_matcher_);
|
97
|
+
} else {
|
98
|
+
string_matcher_ = std::move(other.string_matcher_);
|
99
|
+
}
|
100
|
+
case_sensitive_ = other.case_sensitive_;
|
101
|
+
return *this;
|
102
|
+
}
|
103
|
+
|
104
|
+
bool StringMatcher::operator==(const StringMatcher& other) const {
|
105
|
+
if (type_ != other.type_ || case_sensitive_ != other.case_sensitive_) {
|
106
|
+
return false;
|
107
|
+
}
|
108
|
+
if (type_ == Type::SAFE_REGEX) {
|
109
|
+
return regex_matcher_->pattern() == other.regex_matcher_->pattern();
|
110
|
+
} else {
|
111
|
+
return string_matcher_ == other.string_matcher_;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
bool StringMatcher::Match(absl::string_view value) const {
|
116
|
+
switch (type_) {
|
117
|
+
case Type::EXACT:
|
118
|
+
return case_sensitive_ ? value == string_matcher_
|
119
|
+
: absl::EqualsIgnoreCase(value, string_matcher_);
|
120
|
+
case StringMatcher::Type::PREFIX:
|
121
|
+
return case_sensitive_
|
122
|
+
? absl::StartsWith(value, string_matcher_)
|
123
|
+
: absl::StartsWithIgnoreCase(value, string_matcher_);
|
124
|
+
case StringMatcher::Type::SUFFIX:
|
125
|
+
return case_sensitive_ ? absl::EndsWith(value, string_matcher_)
|
126
|
+
: absl::EndsWithIgnoreCase(value, string_matcher_);
|
127
|
+
case StringMatcher::Type::CONTAINS:
|
128
|
+
return case_sensitive_
|
129
|
+
? absl::StrContains(value, string_matcher_)
|
130
|
+
: absl::StrContains(absl::AsciiStrToLower(value),
|
131
|
+
absl::AsciiStrToLower(string_matcher_));
|
132
|
+
case StringMatcher::Type::SAFE_REGEX:
|
133
|
+
return RE2::FullMatch(std::string(value), *regex_matcher_);
|
134
|
+
default:
|
135
|
+
return false;
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
std::string StringMatcher::ToString() const {
|
140
|
+
switch (type_) {
|
141
|
+
case Type::EXACT:
|
142
|
+
return absl::StrFormat("StringMatcher{exact=%s%s}", string_matcher_,
|
143
|
+
case_sensitive_ ? "" : ", case_sensitive=false");
|
144
|
+
case Type::PREFIX:
|
145
|
+
return absl::StrFormat("StringMatcher{prefix=%s%s}", string_matcher_,
|
146
|
+
case_sensitive_ ? "" : ", case_sensitive=false");
|
147
|
+
case Type::SUFFIX:
|
148
|
+
return absl::StrFormat("StringMatcher{suffix=%s%s}", string_matcher_,
|
149
|
+
case_sensitive_ ? "" : ", case_sensitive=false");
|
150
|
+
case Type::CONTAINS:
|
151
|
+
return absl::StrFormat("StringMatcher{contains=%s%s}", string_matcher_,
|
152
|
+
case_sensitive_ ? "" : ", case_sensitive=false");
|
153
|
+
case Type::SAFE_REGEX:
|
154
|
+
return absl::StrFormat("StringMatcher{safe_regex=%s%s}",
|
155
|
+
regex_matcher_->pattern(),
|
156
|
+
case_sensitive_ ? "" : ", case_sensitive=false");
|
157
|
+
default:
|
158
|
+
return "";
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
//
|
163
|
+
// HeaderMatcher
|
164
|
+
//
|
165
|
+
|
166
|
+
absl::StatusOr<HeaderMatcher> HeaderMatcher::Create(
|
167
|
+
absl::string_view name, Type type, absl::string_view matcher,
|
168
|
+
int64_t range_start, int64_t range_end, bool present_match,
|
169
|
+
bool invert_match) {
|
170
|
+
if (static_cast<int>(type) < 5) {
|
171
|
+
// Only for EXACT, PREFIX, SUFFIX, SAFE_REGEX and CONTAINS.
|
172
|
+
absl::StatusOr<StringMatcher> string_matcher =
|
173
|
+
StringMatcher::Create(static_cast<StringMatcher::Type>(type), matcher,
|
174
|
+
/*case_sensitive=*/true);
|
175
|
+
if (!string_matcher.ok()) {
|
176
|
+
return string_matcher.status();
|
177
|
+
}
|
178
|
+
return HeaderMatcher(name, type, std::move(string_matcher.value()),
|
179
|
+
invert_match);
|
180
|
+
} else if (type == Type::RANGE) {
|
181
|
+
if (range_start > range_end) {
|
182
|
+
return absl::InvalidArgumentError(
|
183
|
+
"Invalid range specifier specified: end cannot be smaller than "
|
184
|
+
"start.");
|
185
|
+
}
|
186
|
+
return HeaderMatcher(name, range_start, range_end, invert_match);
|
187
|
+
} else {
|
188
|
+
return HeaderMatcher(name, present_match, invert_match);
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
192
|
+
HeaderMatcher::HeaderMatcher(absl::string_view name, Type type,
|
193
|
+
StringMatcher string_matcher, bool invert_match)
|
194
|
+
: name_(name),
|
195
|
+
type_(type),
|
196
|
+
matcher_(std::move(string_matcher)),
|
197
|
+
invert_match_(invert_match) {}
|
198
|
+
|
199
|
+
HeaderMatcher::HeaderMatcher(absl::string_view name, int64_t range_start,
|
200
|
+
int64_t range_end, bool invert_match)
|
201
|
+
: name_(name),
|
202
|
+
type_(Type::RANGE),
|
203
|
+
range_start_(range_start),
|
204
|
+
range_end_(range_end),
|
205
|
+
invert_match_(invert_match) {}
|
206
|
+
|
207
|
+
HeaderMatcher::HeaderMatcher(absl::string_view name, bool present_match,
|
208
|
+
bool invert_match)
|
209
|
+
: name_(name),
|
210
|
+
type_(Type::PRESENT),
|
211
|
+
present_match_(present_match),
|
212
|
+
invert_match_(invert_match) {}
|
213
|
+
|
214
|
+
HeaderMatcher::HeaderMatcher(const HeaderMatcher& other)
|
215
|
+
: name_(other.name_),
|
216
|
+
type_(other.type_),
|
217
|
+
invert_match_(other.invert_match_) {
|
218
|
+
switch (type_) {
|
219
|
+
case Type::RANGE:
|
220
|
+
range_start_ = other.range_start_;
|
221
|
+
range_end_ = other.range_end_;
|
222
|
+
break;
|
223
|
+
case Type::PRESENT:
|
224
|
+
present_match_ = other.present_match_;
|
225
|
+
break;
|
226
|
+
default:
|
227
|
+
matcher_ = other.matcher_;
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
HeaderMatcher& HeaderMatcher::operator=(const HeaderMatcher& other) {
|
232
|
+
name_ = other.name_;
|
233
|
+
type_ = other.type_;
|
234
|
+
invert_match_ = other.invert_match_;
|
235
|
+
switch (type_) {
|
236
|
+
case Type::RANGE:
|
237
|
+
range_start_ = other.range_start_;
|
238
|
+
range_end_ = other.range_end_;
|
239
|
+
break;
|
240
|
+
case Type::PRESENT:
|
241
|
+
present_match_ = other.present_match_;
|
242
|
+
break;
|
243
|
+
default:
|
244
|
+
matcher_ = other.matcher_;
|
245
|
+
}
|
246
|
+
return *this;
|
247
|
+
}
|
248
|
+
|
249
|
+
HeaderMatcher::HeaderMatcher(HeaderMatcher&& other) noexcept
|
250
|
+
: name_(std::move(other.name_)),
|
251
|
+
type_(other.type_),
|
252
|
+
invert_match_(other.invert_match_) {
|
253
|
+
switch (type_) {
|
254
|
+
case Type::RANGE:
|
255
|
+
range_start_ = other.range_start_;
|
256
|
+
range_end_ = other.range_end_;
|
257
|
+
break;
|
258
|
+
case Type::PRESENT:
|
259
|
+
present_match_ = other.present_match_;
|
260
|
+
break;
|
261
|
+
default:
|
262
|
+
matcher_ = std::move(other.matcher_);
|
263
|
+
}
|
264
|
+
}
|
265
|
+
|
266
|
+
HeaderMatcher& HeaderMatcher::operator=(HeaderMatcher&& other) noexcept {
|
267
|
+
name_ = std::move(other.name_);
|
268
|
+
type_ = other.type_;
|
269
|
+
invert_match_ = other.invert_match_;
|
270
|
+
switch (type_) {
|
271
|
+
case Type::RANGE:
|
272
|
+
range_start_ = other.range_start_;
|
273
|
+
range_end_ = other.range_end_;
|
274
|
+
break;
|
275
|
+
case Type::PRESENT:
|
276
|
+
present_match_ = other.present_match_;
|
277
|
+
break;
|
278
|
+
default:
|
279
|
+
matcher_ = std::move(other.matcher_);
|
280
|
+
}
|
281
|
+
return *this;
|
282
|
+
}
|
283
|
+
|
284
|
+
bool HeaderMatcher::operator==(const HeaderMatcher& other) const {
|
285
|
+
if (name_ != other.name_) return false;
|
286
|
+
if (type_ != other.type_) return false;
|
287
|
+
if (invert_match_ != other.invert_match_) return false;
|
288
|
+
switch (type_) {
|
289
|
+
case Type::RANGE:
|
290
|
+
return range_start_ == other.range_start_ &&
|
291
|
+
range_end_ == other.range_end_;
|
292
|
+
case Type::PRESENT:
|
293
|
+
return present_match_ == other.present_match_;
|
294
|
+
default:
|
295
|
+
return matcher_ == other.matcher_;
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
bool HeaderMatcher::Match(
|
300
|
+
const absl::optional<absl::string_view>& value) const {
|
301
|
+
bool match;
|
302
|
+
if (type_ == Type::PRESENT) {
|
303
|
+
match = value.has_value() == present_match_;
|
304
|
+
} else if (!value.has_value()) {
|
305
|
+
// All other types fail to match if field is not present.
|
306
|
+
match = false;
|
307
|
+
} else if (type_ == Type::RANGE) {
|
308
|
+
int64_t int_value;
|
309
|
+
match = absl::SimpleAtoi(value.value(), &int_value) &&
|
310
|
+
int_value >= range_start_ && int_value < range_end_;
|
311
|
+
} else {
|
312
|
+
match = matcher_.Match(value.value());
|
313
|
+
}
|
314
|
+
return match != invert_match_;
|
315
|
+
}
|
316
|
+
|
317
|
+
std::string HeaderMatcher::ToString() const {
|
318
|
+
switch (type_) {
|
319
|
+
case Type::RANGE:
|
320
|
+
return absl::StrFormat("HeaderMatcher{%s %srange=[%d, %d]}", name_,
|
321
|
+
invert_match_ ? "not " : "", range_start_,
|
322
|
+
range_end_);
|
323
|
+
case Type::PRESENT:
|
324
|
+
return absl::StrFormat("HeaderMatcher{%s %spresent=%s}", name_,
|
325
|
+
invert_match_ ? "not " : "",
|
326
|
+
present_match_ ? "true" : "false");
|
327
|
+
case Type::EXACT:
|
328
|
+
case Type::PREFIX:
|
329
|
+
case Type::SUFFIX:
|
330
|
+
case Type::SAFE_REGEX:
|
331
|
+
case Type::CONTAINS:
|
332
|
+
return absl::StrFormat("HeaderMatcher{%s %s%s}", name_,
|
333
|
+
invert_match_ ? "not " : "", matcher_.ToString());
|
334
|
+
default:
|
335
|
+
return "";
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
} // namespace grpc_core
|
@@ -0,0 +1,160 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_MATCHERS_MATCHERS_H
|
16
|
+
#define GRPC_CORE_LIB_MATCHERS_MATCHERS_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <memory>
|
21
|
+
#include <string>
|
22
|
+
|
23
|
+
#include "absl/status/statusor.h"
|
24
|
+
#include "absl/strings/string_view.h"
|
25
|
+
#include "absl/types/optional.h"
|
26
|
+
|
27
|
+
#include "re2/re2.h"
|
28
|
+
|
29
|
+
namespace grpc_core {
|
30
|
+
|
31
|
+
class StringMatcher {
|
32
|
+
public:
|
33
|
+
enum class Type {
|
34
|
+
EXACT, // value stored in string_matcher_ field
|
35
|
+
PREFIX, // value stored in string_matcher_ field
|
36
|
+
SUFFIX, // value stored in string_matcher_ field
|
37
|
+
SAFE_REGEX, // pattern stored in regex_matcher_ field
|
38
|
+
CONTAINS, // value stored in string_matcher_ field
|
39
|
+
};
|
40
|
+
|
41
|
+
// Creates StringMatcher instance. Returns error status on failure.
|
42
|
+
static absl::StatusOr<StringMatcher> Create(Type type,
|
43
|
+
absl::string_view matcher,
|
44
|
+
bool case_sensitive = true);
|
45
|
+
|
46
|
+
StringMatcher() = default;
|
47
|
+
StringMatcher(const StringMatcher& other);
|
48
|
+
StringMatcher& operator=(const StringMatcher& other);
|
49
|
+
StringMatcher(StringMatcher&& other) noexcept;
|
50
|
+
StringMatcher& operator=(StringMatcher&& other) noexcept;
|
51
|
+
bool operator==(const StringMatcher& other) const;
|
52
|
+
|
53
|
+
bool Match(absl::string_view value) const;
|
54
|
+
|
55
|
+
std::string ToString() const;
|
56
|
+
|
57
|
+
Type type() const { return type_; }
|
58
|
+
|
59
|
+
// Valid for EXACT, PREFIX, SUFFIX and CONTAINS
|
60
|
+
const std::string& string_matcher() const { return string_matcher_; }
|
61
|
+
|
62
|
+
// Valid for SAFE_REGEX
|
63
|
+
RE2* regex_matcher() const { return regex_matcher_.get(); }
|
64
|
+
|
65
|
+
bool case_sensitive() const { return case_sensitive_; }
|
66
|
+
|
67
|
+
private:
|
68
|
+
StringMatcher(Type type, absl::string_view matcher, bool case_sensitive);
|
69
|
+
StringMatcher(std::unique_ptr<RE2> regex_matcher, bool case_sensitive);
|
70
|
+
|
71
|
+
Type type_ = Type::EXACT;
|
72
|
+
std::string string_matcher_;
|
73
|
+
std::unique_ptr<RE2> regex_matcher_;
|
74
|
+
bool case_sensitive_ = true;
|
75
|
+
};
|
76
|
+
|
77
|
+
class HeaderMatcher {
|
78
|
+
public:
|
79
|
+
enum class Type {
|
80
|
+
EXACT, // value stored in StringMatcher field
|
81
|
+
PREFIX, // value stored in StringMatcher field
|
82
|
+
SUFFIX, // value stored in StringMatcher field
|
83
|
+
SAFE_REGEX, // value stored in StringMatcher field
|
84
|
+
CONTAINS, // value stored in StringMatcher field
|
85
|
+
RANGE, // uses range_start and range_end fields
|
86
|
+
PRESENT, // uses present_match field
|
87
|
+
};
|
88
|
+
|
89
|
+
// Make sure that the first five HeaderMatcher::Type enum values match up to
|
90
|
+
// the corresponding StringMatcher::Type enum values, so that it's safe to
|
91
|
+
// convert by casting when delegating to StringMatcher.
|
92
|
+
static_assert(static_cast<StringMatcher::Type>(Type::EXACT) ==
|
93
|
+
StringMatcher::Type::EXACT,
|
94
|
+
"");
|
95
|
+
static_assert(static_cast<StringMatcher::Type>(Type::PREFIX) ==
|
96
|
+
StringMatcher::Type::PREFIX,
|
97
|
+
"");
|
98
|
+
static_assert(static_cast<StringMatcher::Type>(Type::SUFFIX) ==
|
99
|
+
StringMatcher::Type::SUFFIX,
|
100
|
+
"");
|
101
|
+
static_assert(static_cast<StringMatcher::Type>(Type::SAFE_REGEX) ==
|
102
|
+
StringMatcher::Type::SAFE_REGEX,
|
103
|
+
"");
|
104
|
+
static_assert(static_cast<StringMatcher::Type>(Type::CONTAINS) ==
|
105
|
+
StringMatcher::Type::CONTAINS,
|
106
|
+
"");
|
107
|
+
|
108
|
+
// Creates HeaderMatcher instance. Returns error status on failure.
|
109
|
+
static absl::StatusOr<HeaderMatcher> Create(absl::string_view name, Type type,
|
110
|
+
absl::string_view matcher,
|
111
|
+
int64_t range_start = 0,
|
112
|
+
int64_t range_end = 0,
|
113
|
+
bool present_match = false,
|
114
|
+
bool invert_match = false);
|
115
|
+
|
116
|
+
HeaderMatcher() = default;
|
117
|
+
HeaderMatcher(const HeaderMatcher& other);
|
118
|
+
HeaderMatcher& operator=(const HeaderMatcher& other);
|
119
|
+
HeaderMatcher(HeaderMatcher&& other) noexcept;
|
120
|
+
HeaderMatcher& operator=(HeaderMatcher&& other) noexcept;
|
121
|
+
bool operator==(const HeaderMatcher& other) const;
|
122
|
+
|
123
|
+
const std::string& name() const { return name_; }
|
124
|
+
|
125
|
+
Type type() const { return type_; }
|
126
|
+
|
127
|
+
// Valid for EXACT, PREFIX, SUFFIX and CONTAINS
|
128
|
+
const std::string& string_matcher() const {
|
129
|
+
return matcher_.string_matcher();
|
130
|
+
}
|
131
|
+
|
132
|
+
// Valid for SAFE_REGEX
|
133
|
+
RE2* regex_matcher() const { return matcher_.regex_matcher(); }
|
134
|
+
|
135
|
+
bool Match(const absl::optional<absl::string_view>& value) const;
|
136
|
+
|
137
|
+
std::string ToString() const;
|
138
|
+
|
139
|
+
private:
|
140
|
+
// For StringMatcher.
|
141
|
+
HeaderMatcher(absl::string_view name, Type type, StringMatcher matcher,
|
142
|
+
bool invert_match);
|
143
|
+
// For RangeMatcher.
|
144
|
+
HeaderMatcher(absl::string_view name, int64_t range_start, int64_t range_end,
|
145
|
+
bool invert_match);
|
146
|
+
// For PresentMatcher.
|
147
|
+
HeaderMatcher(absl::string_view name, bool present_match, bool invert_match);
|
148
|
+
|
149
|
+
std::string name_;
|
150
|
+
Type type_ = Type::EXACT;
|
151
|
+
StringMatcher matcher_;
|
152
|
+
int64_t range_start_;
|
153
|
+
int64_t range_end_;
|
154
|
+
bool present_match_;
|
155
|
+
bool invert_match_ = false;
|
156
|
+
};
|
157
|
+
|
158
|
+
} // namespace grpc_core
|
159
|
+
|
160
|
+
#endif /* GRPC_CORE_LIB_MATCHERS_MATCHERS_H */
|