namespace grpc_core {
-extern TraceFlag grpc_xds_client_trace;
+extern TraceFlag xds_client_trace;
class XdsClient : public DualRefCounted<XdsClient> {
public:
// Callers should not instantiate directly. Use GetOrCreate() instead.
explicit XdsClient(grpc_error** error);
- ~XdsClient() override;
+ ~XdsClient();
grpc_pollset_set* interested_parties() const { return interested_parties_; }
ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
grpc_channel* channel);
- ~ChannelState() override;
+ ~ChannelState();
void Orphan() override;
absl::optional<XdsApi::EdsUpdate> update;
};
+ // TODO(roth): Change this to store exactly one instance of
+ // XdsClusterDropStats and exactly one instance of
+ // XdsClusterLocalityStats per locality. We can return multiple refs
+ // to the same object instead of registering multiple objects.
struct LoadReportState {
struct LocalityState {
- XdsClusterLocalityStats* locality_stats = nullptr;
- XdsClusterLocalityStats::Snapshot deleted_locality_stats;
+ std::set<XdsClusterLocalityStats*> locality_stats;
+ std::vector<XdsClusterLocalityStats::Snapshot> deleted_locality_stats;
};
- XdsClusterDropStats* drop_stats = nullptr;
+ std::set<XdsClusterDropStats*> drop_stats;
XdsClusterDropStats::Snapshot deleted_drop_stats;
std::map<RefCountedPtr<XdsLocalityName>, LocalityState,
XdsLocalityName::Less>
LoadReportState>
load_report_map_;
- // Stores the most recent accepted resource version for each resource type.
- std::map<std::string /*type*/, std::string /*version*/> resource_version_map_;
-
bool shutting_down_ = false;
};