@@ -32,10 +32,10 @@ class __UpstreamManager
3232 return &kInstance ;
3333 }
3434
35- void add_policy_name ( const std::string& name )
35+ void add_upstream_policy (UPSGroupPolicy *policy )
3636 {
3737 pthread_mutex_lock (&this ->mutex );
38- this ->upstream_names .push_back (name );
38+ this ->upstream_policies .push_back (policy );
3939 pthread_mutex_unlock (&this ->mutex );
4040 }
4141
@@ -47,14 +47,12 @@ class __UpstreamManager
4747
4848 ~__UpstreamManager ()
4949 {
50- WFNameService *ns = WFGlobal::get_name_service ();
51-
52- for (const std::string& name : this ->upstream_names )
53- delete dynamic_cast <UPSGroupPolicy *>(ns->del_policy (name.c_str ()));
50+ for (UPSGroupPolicy *policy : this ->upstream_policies )
51+ delete policy;
5452 }
5553
5654 pthread_mutex_t mutex;
57- std::vector<std::string> upstream_names ;
55+ std::vector<UPSGroupPolicy *> upstream_policies ;
5856};
5957
6058static unsigned int __default_consistent_hash (const char *path,
@@ -80,7 +78,7 @@ int UpstreamManager::upstream_create_consistent_hash(const std::string& name,
8078 __default_consistent_hash);
8179 if (ns->add_policy (name.c_str (), policy) >= 0 )
8280 {
83- __UpstreamManager::get_instance ()->add_policy_name (name );
81+ __UpstreamManager::get_instance ()->add_upstream_policy (policy );
8482 return 0 ;
8583 }
8684
@@ -96,7 +94,7 @@ int UpstreamManager::upstream_create_weighted_random(const std::string& name,
9694
9795 if (ns->add_policy (name.c_str (), policy) >= 0 )
9896 {
99- __UpstreamManager::get_instance ()->add_policy_name (name );
97+ __UpstreamManager::get_instance ()->add_upstream_policy (policy );
10098 return 0 ;
10199 }
102100
@@ -111,7 +109,7 @@ int UpstreamManager::upstream_create_vnswrr(const std::string& name)
111109
112110 if (ns->add_policy (name.c_str (), policy) >= 0 )
113111 {
114- __UpstreamManager::get_instance ()->add_policy_name (name );
112+ __UpstreamManager::get_instance ()->add_upstream_policy (policy );
115113 return 0 ;
116114 }
117115
@@ -132,7 +130,7 @@ int UpstreamManager::upstream_create_manual(const std::string& name,
132130 __default_consistent_hash);
133131 if (ns->add_policy (name.c_str (), policy) >= 0 )
134132 {
135- __UpstreamManager::get_instance ()->add_policy_name (name );
133+ __UpstreamManager::get_instance ()->add_upstream_policy (policy );
136134 return 0 ;
137135 }
138136
@@ -183,10 +181,7 @@ int UpstreamManager::upstream_delete(const std::string& name)
183181 UPSGroupPolicy *policy = dynamic_cast <UPSGroupPolicy *>(ns->del_policy (name.c_str ()));
184182
185183 if (policy)
186- {
187- delete policy;
188184 return 0 ;
189- }
190185
191186 errno = ENOENT;
192187 return -1 ;
0 commit comments