xds_routing.h
Go to the documentation of this file.
1 //
2 //
3 // Copyright 2021 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 //
18 
19 #ifndef GRPC_CORE_EXT_XDS_XDS_ROUTING_H
20 #define GRPC_CORE_EXT_XDS_XDS_ROUTING_H
21 
23 
24 #include <stddef.h>
25 
26 #include <map>
27 #include <string>
28 #include <vector>
29 
30 #include "absl/strings/string_view.h"
31 #include "absl/types/optional.h"
32 
34 
39 
40 namespace grpc_core {
41 
42 class XdsRouting {
43  public:
45  public:
46  virtual ~VirtualHostListIterator() = default;
47  // Returns the number of virtual hosts in the list.
48  virtual size_t Size() const = 0;
49  // Returns the domain list for the virtual host at the specified index.
50  virtual const std::vector<std::string>& GetDomainsForVirtualHost(
51  size_t index) const = 0;
52  };
53 
55  public:
56  virtual ~RouteListIterator() = default;
57  // Number of routes.
58  virtual size_t Size() const = 0;
59  // Returns the matchers for the route at the specified index.
61  size_t index) const = 0;
62  };
63 
64  // Returns the index of the selected virtual host in the list.
66  const VirtualHostListIterator& vhost_iterator, absl::string_view domain);
67 
68  // Returns the index in route_list_iterator to use for a request with
69  // the specified path and metadata, or nullopt if no route matches.
71  const RouteListIterator& route_list_iterator, absl::string_view path,
72  grpc_metadata_batch* initial_metadata);
73 
74  // Returns true if \a domain_pattern is a valid domain pattern, false
75  // otherwise.
76  static bool IsValidDomainPattern(absl::string_view domain_pattern);
77 
78  // Returns the metadata value(s) for the specified key.
79  // As special cases, binary headers return a value of absl::nullopt, and
80  // "content-type" header returns "application/grpc".
82  grpc_metadata_batch* initial_metadata, absl::string_view header_name,
83  std::string* concatenated_value);
84 
86  // Map of field name to list of elements for that field
87  std::map<std::string, std::vector<std::string>> per_filter_configs;
89  // Guaranteed to be nullptr if error is GRPC_ERROR_NONE
90  grpc_channel_args* args = nullptr;
91  };
92 
93  // Generates a map of per_filter_configs. \a args is consumed.
95  const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
96  http_filters,
100  cluster_weight,
102 };
103 
104 } // namespace grpc_core
105 
106 #endif // GRPC_CORE_EXT_XDS_XDS_ROUTING_H
grpc_core::XdsRouting::GeneratePerHttpFilterConfigsResult::error
grpc_error_handle error
Definition: xds_routing.h:88
GRPC_ERROR_NONE
#define GRPC_ERROR_NONE
Definition: error.h:234
metadata_batch.h
grpc_core::XdsRouting::RouteListIterator::GetMatchersForRoute
virtual const XdsRouteConfigResource::Route::Matchers & GetMatchersForRoute(size_t index) const =0
route
XdsRouteConfigResource::Route route
Definition: xds_resolver.cc:337
grpc_core
Definition: call_metric_recorder.h:31
grpc_core::XdsRouteConfigResource::VirtualHost
Definition: xds_route_config.h:176
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
xds_route_config.h
check_documentation.path
path
Definition: check_documentation.py:57
grpc_core::XdsRouting::VirtualHostListIterator
Definition: xds_routing.h:44
grpc_core::XdsRouting
Definition: xds_routing.h:42
grpc_channel_args
Definition: grpc_types.h:132
grpc_types.h
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
grpc_core::XdsRouting::RouteListIterator::Size
virtual size_t Size() const =0
grpc_core::XdsRouting::RouteListIterator
Definition: xds_routing.h:54
absl::optional< size_t >
grpc_core::XdsRouting::GetHeaderValue
static absl::optional< absl::string_view > GetHeaderValue(grpc_metadata_batch *initial_metadata, absl::string_view header_name, std::string *concatenated_value)
Definition: xds_routing.cc:182
xds_listener.h
error.h
grpc_core::XdsRouteConfigResource::Route
Definition: xds_route_config.h:80
grpc_core::XdsRouting::FindVirtualHostForDomain
static absl::optional< size_t > FindVirtualHostForDomain(const VirtualHostListIterator &vhost_iterator, absl::string_view domain)
Definition: xds_routing.cc:98
grpc_core::XdsRouteConfigResource::Route::RouteAction::ClusterWeight
Definition: xds_route_config.h:125
grpc_core::XdsRouting::VirtualHostListIterator::GetDomainsForVirtualHost
virtual const std::vector< std::string > & GetDomainsForVirtualHost(size_t index) const =0
grpc_core::XdsRouting::VirtualHostListIterator::Size
virtual size_t Size() const =0
grpc_core::XdsRouting::GeneratePerHttpFilterConfigsResult::per_filter_configs
std::map< std::string, std::vector< std::string > > per_filter_configs
Definition: xds_routing.h:87
index
int index
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:1184
grpc_core::XdsRouting::GetRouteForRequest
static absl::optional< size_t > GetRouteForRequest(const RouteListIterator &route_list_iterator, absl::string_view path, grpc_metadata_batch *initial_metadata)
Definition: xds_routing.cc:162
grpc_core::XdsRouting::GeneratePerHTTPFilterConfigs
static GeneratePerHttpFilterConfigsResult GeneratePerHTTPFilterConfigs(const std::vector< XdsListenerResource::HttpConnectionManager::HttpFilter > &http_filters, const XdsRouteConfigResource::VirtualHost &vhost, const XdsRouteConfigResource::Route &route, const XdsRouteConfigResource::Route::RouteAction::ClusterWeight *cluster_weight, grpc_channel_args *args)
Definition: xds_routing.cc:222
grpc_core::XdsRouting::GeneratePerHttpFilterConfigsResult
Definition: xds_routing.h:85
grpc_core::XdsRouting::RouteListIterator::~RouteListIterator
virtual ~RouteListIterator()=default
grpc_core::XdsRouteConfigResource::Route::Matchers
Definition: xds_route_config.h:82
grpc_error
Definition: error_internal.h:42
grpc_metadata_batch
Definition: metadata_batch.h:1259
grpc_core::XdsRouting::VirtualHostListIterator::~VirtualHostListIterator
virtual ~VirtualHostListIterator()=default
grpc_core::XdsRouting::IsValidDomainPattern
static bool IsValidDomainPattern(absl::string_view domain_pattern)
Definition: xds_routing.cc:178
grpc_core::XdsRouting::GeneratePerHttpFilterConfigsResult::args
grpc_channel_args * args
Definition: xds_routing.h:90
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:57