Line data Source code
1 : #include "source/common/upstream/cluster_update_tracker.h" 2 : 3 : namespace Envoy { 4 : namespace Upstream { 5 : 6 : ClusterUpdateTracker::ClusterUpdateTracker(ClusterManager& cm, const std::string& cluster_name) 7 : : cluster_name_(cluster_name), 8 0 : cluster_update_callbacks_handle_(cm.addThreadLocalClusterUpdateCallbacks(*this)) { 9 0 : Upstream::ThreadLocalCluster* cluster = cm.getThreadLocalCluster(cluster_name_); 10 0 : if (cluster != nullptr) { 11 0 : thread_local_cluster_ = *cluster; 12 0 : } 13 0 : } 14 : 15 : void ClusterUpdateTracker::onClusterAddOrUpdate(absl::string_view cluster_name, 16 0 : ThreadLocalClusterCommand& get_cluster) { 17 0 : if (cluster_name != cluster_name_) { 18 0 : return; 19 0 : } 20 0 : thread_local_cluster_ = get_cluster(); 21 0 : } 22 : 23 0 : void ClusterUpdateTracker::onClusterRemoval(const std::string& cluster) { 24 0 : if (cluster != cluster_name_) { 25 0 : return; 26 0 : } 27 0 : thread_local_cluster_.reset(); 28 0 : } 29 : 30 : } // namespace Upstream 31 : } // namespace Envoy