* cluster. When the requested cluster is added and warmed up, the passed callback will be invoked
* The returned handle can be destroyed to prevent the callback from being invoked. Note that the
* destroying the handle does nothing. It is a responsibility of the caller to make sure that the
* An interface used by OdCdsApiImpl for sending notifications about the missing cluster that was
* Cluster manager is initialized in two phases. In the first phase which begins at the construction
* discovered through DNS or file based CDS) are initialized. This phase may complete synchronously
* configured. At the completion of the first phase cluster manager invokes callback set through the
* After the first phase has completed the server instance initializes services (i.e. RTDS) needed
* In the second phase all secondary clusters (with endpoint assignments provisioned by xDS servers)
// This method *must* be called prior to invoking any other methods on the class and *must* only
// be called once. This method should be called immediately after ClusterManagerImpl construction
// construction, a derived class cannot override any of the virtual methods and have them invoked
* If information about the cluster needs to be kept, use the ThreadLocalCluster::info() method to
* NOTE: This method may return nullptr even if the cluster exists (if it hasn't been warmed yet,
* Shutdown the cluster manager prior to destroying connection pools and other thread local data.
* Returns a shared_ptr to the singleton xDS-over-gRPC provider for upstream control plane muxing
* of xDS. This is treated somewhat as a special case in ClusterManager, since it does not relate
* logically to the management of clusters but instead is required early in ClusterManager/server
* IMPORTANT: This predicate must be completely self contained and thread safe. It will be posted
* @param odcds_resources_locator is a locator for ODCDS. Used over odcds_config if not a nullopt.