19 #ifndef GRPC_CORE_EXT_XDS_XDS_API_H
20 #define GRPC_CORE_EXT_XDS_XDS_API_H
28 #include "absl/container/inlined_vector.h"
29 #include "absl/types/optional.h"
32 #include "upb/def.hpp"
66 return absl::StrFormat(
"Duration seconds: %ld, nanos %d",
seconds,
nanos);
71 std::map<std::string, XdsHttpFilterImpl::FilterConfig>;
96 std::unique_ptr<RE2>
regex =
nullptr;
313 std::shared_ptr<FilterChainData>
data;
463 return !(*
this == other);
468 std::map<XdsLocalityName*, Locality, XdsLocalityName::Less>
localities;
494 drop_category_list_.emplace_back(
496 if (parts_per_million == 1000000) drop_all_ =
true;
501 bool ShouldDrop(
const std::string** category_name)
const;
504 return drop_category_list_;
510 return drop_category_list_ == other.drop_category_list_;
513 return !(*
this == other);
520 bool drop_all_ =
false;
549 std::pair<std::string , std::string >,
597 ResourceMetadata::ClientResourceStatus::REQUESTED,
601 ResourceMetadata::ClientResourceStatus::DOES_NOT_EXIST,
605 ResourceMetadata::ClientResourceStatus::ACKED,
609 ResourceMetadata::ClientResourceStatus::NACKED,
636 const std::string& type_url,
637 const std::set<absl::string_view>& resource_names,
638 const std::string& version,
645 const std::set<absl::string_view>& expected_listener_names,
646 const std::set<absl::string_view>& expected_route_configuration_names,
647 const std::set<absl::string_view>& expected_cluster_names,
648 const std::set<absl::string_view>& expected_eds_service_names);
660 bool* send_all_clusters,
661 std::set<std::string>* cluster_names,
672 upb::SymbolTable symtab_;
673 const std::string build_version_;
674 const std::string user_agent_name_;
675 const std::string user_agent_version_;
Definition: ref_counted.h:282
Definition: ref_counted_ptr.h:35
Definition: matchers.h:31
Definition: xds_api.h:479
absl::InlinedVector< DropCategory, 2 > DropCategoryList
Definition: xds_api.h:491
bool ShouldDrop(const std::string **category_name) const
Definition: xds_api.cc:772
void AddCategory(std::string name, uint32_t parts_per_million)
Definition: xds_api.h:493
bool drop_all() const
Definition: xds_api.h:507
std::string ToString() const
Definition: xds_api.cc:786
bool operator!=(const DropConfig &other) const
Definition: xds_api.h:512
bool operator==(const DropConfig &other) const
Definition: xds_api.h:509
const DropCategoryList & drop_category_list() const
Definition: xds_api.h:503
std::map< std::string, EdsResourceData > EdsUpdateMap
Definition: xds_api.h:539
std::map< absl::string_view, ResourceTypeMetadata > ResourceTypeMetadataMap
Definition: xds_api.h:594
static const char * kCdsTypeUrl
Definition: xds_api.h:56
std::map< absl::string_view, const ResourceMetadata * > ResourceMetadataMap
Definition: xds_api.h:588
static const char * kLdsTypeUrl
Definition: xds_api.h:54
XdsApi(XdsClient *client, TraceFlag *tracer, const XdsBootstrap::Node *node)
Definition: xds_api.cc:870
std::map< std::string, CdsResourceData > CdsUpdateMap
Definition: xds_api.h:449
grpc_error_handle ParseLrsResponse(const grpc_slice &encoded_response, bool *send_all_clusters, std::set< std::string > *cluster_names, grpc_millis *load_reporting_interval)
Definition: xds_api.cc:3627
grpc_slice CreateAdsRequest(const XdsBootstrap::XdsServer &server, const std::string &type_url, const std::set< absl::string_view > &resource_names, const std::string &version, const std::string &nonce, grpc_error_handle error, bool populate_node)
Definition: xds_api.cc:1113
grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map)
Definition: xds_api.cc:3563
static const char * kEdsTypeUrl
Definition: xds_api.h:57
std::string AssembleClientConfig(const ResourceTypeMetadataMap &resource_type_metadata_map)
Definition: xds_api.cc:3892
grpc_slice CreateLrsInitialRequest(const XdsBootstrap::XdsServer &server)
Definition: xds_api.cc:3492
std::map< std::string, XdsHttpFilterImpl::FilterConfig > TypedPerFilterConfig
Definition: xds_api.h:71
static const char * kRdsTypeUrl
Definition: xds_api.h:55
AdsParseResult ParseAdsResponse(const XdsBootstrap::XdsServer &server, const grpc_slice &encoded_response, const std::set< absl::string_view > &expected_listener_names, const std::set< absl::string_view > &expected_route_configuration_names, const std::set< absl::string_view > &expected_cluster_names, const std::set< absl::string_view > &expected_eds_service_names)
Definition: xds_api.cc:3399
std::map< std::pair< std::string, std::string >, ClusterLoadReport > ClusterLoadReportMap
Definition: xds_api.h:550
std::map< std::string, RdsResourceData > RdsUpdateMap
Definition: xds_api.h:393
std::map< std::string, LdsResourceData > LdsUpdateMap
Definition: xds_api.h:385
Definition: xds_client.h:44
@ envoy_admin_v3_REQUESTED
Definition: config_dump.upb.h:98
@ envoy_admin_v3_NACKED
Definition: config_dump.upb.h:101
@ envoy_admin_v3_ACKED
Definition: config_dump.upb.h:100
@ envoy_admin_v3_DOES_NOT_EXIST
Definition: config_dump.upb.h:99
#define GRPC_ERROR_NONE
The following "special" errors can be propagated without allocating memory.
Definition: error.h:228
int64_t grpc_millis
Definition: exec_ctx.h:37
grpc_error_handle error
Definition: lame_client.cc:54
Round Robin Policy.
Definition: backend_metric.cc:26
absl::InlinedVector< ServerAddress, 1 > ServerAddressList
Definition: server_address.h:111
bool XdsSecurityEnabled()
Definition: xds_api.cc:132
Definition: xds_api.h:619
std::string version
Definition: xds_api.h:621
RdsUpdateMap rds_update_map
Definition: xds_api.h:625
std::string nonce
Definition: xds_api.h:622
LdsUpdateMap lds_update_map
Definition: xds_api.h:624
grpc_error_handle parse_error
Definition: xds_api.h:620
std::string type_url
Definition: xds_api.h:623
CdsUpdateMap cds_update_map
Definition: xds_api.h:626
EdsUpdateMap eds_update_map
Definition: xds_api.h:627
std::set< std::string > resource_names_failed
Definition: xds_api.h:628
Definition: xds_api.h:444
std::string serialized_proto
Definition: xds_api.h:446
CdsUpdate resource
Definition: xds_api.h:445
Definition: xds_api.h:395
std::string ToString() const
Definition: xds_api.cc:699
std::string lb_policy
Definition: xds_api.h:419
std::string eds_service_name
Definition: xds_api.h:401
std::vector< std::string > prioritized_cluster_names
Definition: xds_api.h:407
uint64_t max_ring_size
Definition: xds_api.h:422
std::string dns_hostname
Definition: xds_api.h:404
uint64_t min_ring_size
Definition: xds_api.h:421
ClusterType
Definition: xds_api.h:396
@ LOGICAL_DNS
Definition: xds_api.h:396
@ AGGREGATE
Definition: xds_api.h:396
@ EDS
Definition: xds_api.h:396
ClusterType cluster_type
Definition: xds_api.h:397
CommonTlsContext common_tls_context
Definition: xds_api.h:410
uint32_t max_concurrent_requests
Definition: xds_api.h:425
bool operator==(const CdsUpdate &other) const
Definition: xds_api.h:427
absl::optional< std::string > lrs_load_reporting_server_name
Definition: xds_api.h:416
Definition: xds_api.h:541
grpc_millis load_report_interval
Definition: xds_api.h:546
XdsClusterDropStats::Snapshot dropped_requests
Definition: xds_api.h:542
std::map< RefCountedPtr< XdsLocalityName >, XdsClusterLocalityStats::Snapshot, XdsLocalityName::Less > locality_stats
Definition: xds_api.h:545
Definition: xds_api.h:182
std::string ToString() const
Definition: xds_api.cc:431
bool operator==(const CertificateProviderInstance &other) const
Definition: xds_api.h:186
std::string instance_name
Definition: xds_api.h:183
bool Empty() const
Definition: xds_api.cc:444
std::string certificate_name
Definition: xds_api.h:184
Definition: xds_api.h:171
bool operator==(const CertificateValidationContext &other) const
Definition: xds_api.h:174
bool Empty() const
Definition: xds_api.cc:423
std::vector< StringMatcher > match_subject_alt_names
Definition: xds_api.h:172
std::string ToString() const
Definition: xds_api.cc:413
Definition: xds_api.h:195
bool Empty() const
Definition: xds_api.cc:468
std::string ToString() const
Definition: xds_api.cc:453
CertificateProviderInstance validation_context_certificate_provider_instance
Definition: xds_api.h:198
bool operator==(const CombinedCertificateValidationContext &other) const
Definition: xds_api.h:200
CertificateValidationContext default_validation_context
Definition: xds_api.h:196
Definition: xds_api.h:170
CombinedCertificateValidationContext combined_validation_context
Definition: xds_api.h:211
bool operator==(const CommonTlsContext &other) const
Definition: xds_api.h:213
std::string ToString() const
Definition: xds_api.cc:478
bool Empty() const
Definition: xds_api.cc:492
CertificateProviderInstance tls_certificate_certificate_provider_instance
Definition: xds_api.h:210
Definition: xds_api.h:223
bool require_client_certificate
Definition: xds_api.h:225
bool operator==(const DownstreamTlsContext &other) const
Definition: xds_api.h:227
std::string ToString() const
Definition: xds_api.cc:501
bool Empty() const
Definition: xds_api.cc:507
CommonTlsContext common_tls_context
Definition: xds_api.h:224
bool operator==(const Duration &other) const
Definition: xds_api.h:62
int64_t seconds
Definition: xds_api.h:60
int32_t nanos
Definition: xds_api.h:61
std::string ToString() const
Definition: xds_api.h:65
Definition: xds_api.h:533
std::string serialized_proto
Definition: xds_api.h:535
EdsUpdate resource
Definition: xds_api.h:534
Definition: xds_api.h:481
bool operator==(const DropCategory &other) const
Definition: xds_api.h:482
const uint32_t parts_per_million
Definition: xds_api.h:488
std::string name
Definition: xds_api.h:487
Definition: xds_api.h:453
ServerAddressList endpoints
Definition: xds_api.h:456
bool operator!=(const Locality &other) const
Definition: xds_api.h:462
uint32_t lb_weight
Definition: xds_api.h:455
std::string ToString() const
Definition: xds_api.cc:741
RefCountedPtr< XdsLocalityName > name
Definition: xds_api.h:454
bool operator==(const Locality &other) const
Definition: xds_api.h:458
Definition: xds_api.h:452
std::string ToString() const
Definition: xds_api.cc:764
std::map< XdsLocalityName *, Locality, XdsLocalityName::Less > localities
Definition: xds_api.h:468
bool operator==(const Priority &other) const
Definition: xds_api.cc:751
Definition: xds_api.h:451
RefCountedPtr< DropConfig > drop_config
Definition: xds_api.h:524
absl::InlinedVector< Priority, 2 > PriorityList
Definition: xds_api.h:473
bool operator==(const EdsUpdate &other) const
Definition: xds_api.h:526
PriorityList priorities
Definition: xds_api.h:523
std::string ToString() const
Definition: xds_api.cc:796
Definition: xds_api.h:380
std::string serialized_proto
Definition: xds_api.h:382
LdsUpdate resource
Definition: xds_api.h:381
Definition: xds_api.h:283
HttpConnectionManager http_connection_manager
Definition: xds_api.h:287
bool operator==(const FilterChainData &other) const
Definition: xds_api.h:289
DownstreamTlsContext downstream_tls_context
Definition: xds_api.h:284
std::string ToString() const
Definition: xds_api.cc:550
Definition: xds_api.h:318
uint32_t prefix_len
Definition: xds_api.h:320
bool operator==(const CidrRange &other) const
Definition: xds_api.h:322
grpc_resolved_address address
Definition: xds_api.h:319
std::string ToString() const
Definition: xds_api.cc:560
Definition: xds_api.h:346
ConnectionSourceTypesArray source_types_array
Definition: xds_api.h:350
bool operator==(const DestinationIp &other) const
Definition: xds_api.h:352
absl::optional< CidrRange > prefix_range
Definition: xds_api.h:347
Definition: xds_api.h:312
bool operator==(const FilterChainDataSharedPtr &other) const
Definition: xds_api.h:314
std::shared_ptr< FilterChainData > data
Definition: xds_api.h:313
Definition: xds_api.h:330
bool operator==(const SourceIp &other) const
Definition: xds_api.h:334
absl::optional< CidrRange > prefix_range
Definition: xds_api.h:331
SourcePortsMap ports_map
Definition: xds_api.h:332
Definition: xds_api.h:311
DestinationIpVector destination_ip_vector
Definition: xds_api.h:359
bool operator==(const FilterChainMap &other) const
Definition: xds_api.h:361
std::vector< SourceIp > SourceIpVector
Definition: xds_api.h:339
ConnectionSourceType
Definition: xds_api.h:340
std::map< uint16_t, FilterChainDataSharedPtr > SourcePortsMap
Definition: xds_api.h:329
std::array< SourceIpVector, 3 > ConnectionSourceTypesArray
Definition: xds_api.h:345
std::string ToString() const
Definition: xds_api.cc:641
std::vector< DestinationIp > DestinationIpVector
Definition: xds_api.h:358
Definition: xds_api.h:254
bool operator==(const HttpFilter &other) const
Definition: xds_api.h:258
XdsHttpFilterImpl::FilterConfig config
Definition: xds_api.h:256
std::string ToString() const
Definition: xds_api.cc:541
std::string name
Definition: xds_api.h:255
Definition: xds_api.h:244
Duration http_max_stream_duration
Definition: xds_api.h:249
absl::optional< RdsUpdate > rds_update
Definition: xds_api.h:252
bool operator==(const HttpConnectionManager &other) const
Definition: xds_api.h:266
std::string route_config_name
Definition: xds_api.h:246
std::string ToString() const
Definition: xds_api.cc:515
std::vector< HttpFilter > http_filters
Definition: xds_api.h:264
Definition: xds_api.h:238
struct grpc_core::XdsApi::LdsUpdate::FilterChainMap filter_chain_map
bool operator==(const LdsUpdate &other) const
Definition: xds_api.h:370
ListenerType
Definition: xds_api.h:239
struct grpc_core::XdsApi::LdsUpdate::FilterChainData filter_chain_data
std::string ToString() const
Definition: xds_api.cc:678
enum grpc_core::XdsApi::LdsUpdate::ListenerType type
absl::optional< FilterChainData > default_filter_chain
Definition: xds_api.h:368
HttpConnectionManager http_connection_manager
Definition: xds_api.h:277
std::string address
Definition: xds_api.h:281
Definition: xds_api.h:387
std::string serialized_proto
Definition: xds_api.h:389
RdsUpdate resource
Definition: xds_api.h:388
Definition: xds_api.h:150
std::vector< Route > routes
Definition: xds_api.h:152
bool operator==(const VirtualHost &other) const
Definition: xds_api.h:155
std::vector< std::string > domains
Definition: xds_api.h:151
TypedPerFilterConfig typed_per_filter_config
Definition: xds_api.h:153
Definition: xds_api.h:149
bool operator==(const RdsUpdate &other) const
Definition: xds_api.h:163
std::string ToString() const
Definition: xds_api.cc:283
std::vector< VirtualHost > virtual_hosts
Definition: xds_api.h:161
VirtualHost * FindVirtualHostForDomain(const std::string &domain)
Definition: xds_api.cc:368
Definition: xds_api.h:120
TypedPerFilterConfig typed_per_filter_config
Definition: xds_api.h:123
std::string ToString() const
Definition: xds_api.cc:235
uint32_t weight
Definition: xds_api.h:122
bool operator==(const ClusterWeight &other) const
Definition: xds_api.h:125
std::string name
Definition: xds_api.h:121
bool operator==(const HashPolicy &other) const
bool terminal
Definition: xds_api.h:93
std::string ToString() const
Definition: xds_api.cc:197
Type
Definition: xds_api.h:91
@ CHANNEL_ID
Definition: xds_api.h:91
@ HEADER
Definition: xds_api.h:91
std::string header_name
Definition: xds_api.h:95
HashPolicy()
Definition: xds_api.h:99
HashPolicy & operator=(const HashPolicy &other)
Definition: xds_api.cc:154
Type type
Definition: xds_api.h:92
std::string regex_substitution
Definition: xds_api.h:97
std::unique_ptr< RE2 > regex
Definition: xds_api.h:96
std::vector< HeaderMatcher > header_matchers
Definition: xds_api.h:79
absl::optional< uint32_t > fraction_per_million
Definition: xds_api.h:80
StringMatcher path_matcher
Definition: xds_api.h:78
std::string ToString() const
Definition: xds_api.cc:221
bool operator==(const Matchers &other) const
Definition: xds_api.h:82
Matchers matchers
Definition: xds_api.h:113
absl::optional< Duration > max_stream_duration
Definition: xds_api.h:136
TypedPerFilterConfig typed_per_filter_config
Definition: xds_api.h:138
std::vector< HashPolicy > hash_policies
Definition: xds_api.h:114
bool operator==(const Route &other) const
Definition: xds_api.h:140
std::string ToString() const
Definition: xds_api.cc:252
std::vector< ClusterWeight > weighted_clusters
Definition: xds_api.h:131
std::string cluster_name
Definition: xds_api.h:119
Definition: xds_bootstrap.h:52
Definition: xds_bootstrap.h:61
Definition: xds_client_stats.h:107
Definition: xds_client_stats.h:174
Definition: xds_http_filters.h:43
Definition: xds_client_stats.h:46
Definition: error_internal.h:41
Definition: resolve_address.h:44
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1].
Definition: slice.h:60
TraceFlag * tracer
Definition: xds_api.cc:907
XdsClient * client
Definition: xds_api.cc:906