17 #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_H 18 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_H 77 std::unique_ptr<ServiceConfigWatcherInterface> watcher,
89 std::unique_ptr<ClusterWatcherInterface> watcher);
99 std::unique_ptr<EndpointWatcherInterface> watcher);
130 template <
typename T>
143 XdsClient* xds_client()
const {
return xds_client_.get(); }
144 AdsCallState* ads_calld()
const;
145 LrsCallState* lrs_calld()
const;
147 void MaybeStartAdsCall();
150 void MaybeStartLrsCall();
153 bool HasActiveAdsCall()
const;
155 void StartConnectivityWatchLocked();
156 void CancelConnectivityWatchLocked();
162 RefCountedPtr<XdsClient> xds_client_;
166 bool shutting_down_ =
false;
167 StateWatcher* watcher_ =
nullptr;
170 OrphanablePtr<RetryableCall<AdsCallState>> ads_calld_;
171 OrphanablePtr<RetryableCall<LrsCallState>> lrs_calld_;
174 struct ClusterState {
175 std::map<ClusterWatcherInterface*, std::unique_ptr<ClusterWatcherInterface>>
177 std::map<EndpointWatcherInterface*,
178 std::unique_ptr<EndpointWatcherInterface>>
180 std::set<XdsClientStats*> client_stats;
182 EdsUpdate eds_update;
190 static void NotifyOnServiceConfig(
void* arg,
grpc_error* error);
193 static void* ChannelArgCopy(
void* p);
194 static void ChannelArgDestroy(
void* p);
195 static int ChannelArgCmp(
void* p,
void* q);
204 std::unique_ptr<XdsBootstrap> bootstrap_;
207 std::unique_ptr<ServiceConfigWatcherInterface> service_config_watcher_;
213 OrphanablePtr<ChannelState> chand_;
218 ClusterState cluster_state_;
221 bool shutting_down_ =
false;
Definition: xds_client_stats.h:93
Definition: xds_api.h:134
Definition: string_view.h:69
Definition: xds_client.h:43
void RemoveClientStats(StringView lrs_server, StringView cluster, XdsClientStats *client_stats)
Definition: xds_client.cc:1347
Definition: xds_api.h:140
An array of arguments that can be passed around.
Definition: grpc_types.h:132
Definition: grpc_types.h:85
Definition: error_internal.h:39
virtual ~ClusterWatcherInterface()=default
A single argument...
Definition: grpc_types.h:103
virtual ~ServiceConfigWatcherInterface()=default
static RefCountedPtr< XdsClient > GetFromChannelArgs(const grpc_channel_args &args)
Definition: xds_client.cc:1432
Definition: orphanable.h:77
Round Robin Policy.
Definition: backend_metric.cc:24
virtual void OnClusterChanged(CdsUpdate cluster_data)=0
void WatchClusterData(StringView cluster, std::unique_ptr< ClusterWatcherInterface > watcher)
Definition: xds_client.cc:1292
virtual void OnServiceConfigChanged(RefCountedPtr< ServiceConfig > service_config)=0
virtual ~EndpointWatcherInterface()=default
Definition: xds_client.h:54
~XdsClient()
Definition: xds_client.cc:1284
void ResetBackoff()
Definition: xds_client.cc:1364
Definition: combiner.h:33
void Orphan() override
Definition: xds_client.cc:1286
Definition: ref_counted_ptr.h:35
Definition: xds_client.h:64
void CancelClusterDataWatch(StringView cluster, ClusterWatcherInterface *watcher)
Definition: xds_client.cc:1304
struct grpc_pollset_set grpc_pollset_set
Definition: pollset_set.h:31
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
Definition: memory.h:45
virtual void OnError(grpc_error *error)=0
XdsClient(Combiner *combiner, grpc_pollset_set *interested_parties, StringView server_name, std::unique_ptr< ServiceConfigWatcherInterface > watcher, const grpc_channel_args &channel_args, grpc_error **error)
Definition: xds_client.cc:1252
void WatchEndpointData(StringView cluster, std::unique_ptr< EndpointWatcherInterface > watcher)
Definition: xds_client.cc:1315
A closure over a grpc_iomgr_cb_func.
Definition: closure.h:56
void CancelEndpointDataWatch(StringView cluster, EndpointWatcherInterface *watcher)
Definition: xds_client.cc:1327
TraceFlag xds_client_trace
virtual void OnError(grpc_error *error)=0
Definition: xds_client.h:40
void AddClientStats(StringView lrs_server, StringView cluster, XdsClientStats *client_stats)
Definition: xds_client.cc:1338
virtual void OnError(grpc_error *error)=0
virtual void OnEndpointChanged(EdsUpdate update)=0
grpc_arg MakeChannelArg() const
Definition: xds_client.cc:1426