Skip to content

Commit b1785fa

Browse files
committed
Calling set_idle_ttl/set_check_inter in connect_manager should set all pools' status.
1 parent 738bef8 commit b1785fa

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

lib_acl_cpp/samples/connect_manager/connect_manager.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
#include "connect_pool.h"
33
#include "connect_manager.h"
44

5-
connect_manager::connect_manager(size_t min_conns, time_t ttl)
5+
connect_manager::connect_manager(size_t min_conns)
66
: min_conns_(min_conns)
77
{
8-
this->set_idle_ttl(ttl);
98
}
109

1110
connect_manager::~connect_manager()

lib_acl_cpp/samples/connect_manager/connect_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class connect_manager : public acl::connect_manager
44
{
55
public:
6-
connect_manager(size_t min_conns, time_t ttl);
6+
connect_manager(size_t min_conns);
77

88
virtual ~connect_manager();
99

lib_acl_cpp/samples/connect_manager/main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ static void init(const char* addrs, int max, int min, int ttl,
3333
int check_type, const char* proto)
3434
{
3535
// 创建 HTTP 请求连接池集群管理对象
36-
__conn_manager = new connect_manager((size_t) min, (time_t) ttl);
36+
__conn_manager = new connect_manager((size_t) min);
3737

3838
// 添加服务器集群地址
3939
__conn_manager->init(addrs, addrs, (size_t) max);
40+
__conn_manager->set_idle_ttl(ttl);
4041

4142
printf(">>>start monitor thread\r\n");
4243

lib_acl_cpp/src/connpool/connect_manager.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,28 +76,37 @@ static int check_addr(const char* addr, string& buf, size_t default_count)
7676
void connect_manager::set_retry_inter(int n)
7777
{
7878
lock_guard guard(lock_);
79-
80-
if (n == retry_inter_) {
81-
return;
82-
}
8379
retry_inter_ = n;
8480
for (manager_it mit = manager_.begin(); mit != manager_.end(); ++mit) {
8581
for (pools_t::iterator it = mit->second->pools.begin();
86-
it != mit->second->pools.end(); ++it) {
87-
82+
it != mit->second->pools.end(); ++it) {
8883
(*it)->set_retry_inter(retry_inter_);
8984
}
9085
}
9186
}
9287

9388
void connect_manager::set_check_inter(int n)
9489
{
90+
lock_guard guard(lock_);
9591
check_inter_ = n;
92+
for (manager_it it = manager_.begin(); it != manager_.end(); ++it) {
93+
for (pools_it it2 = it->second->pools.begin();
94+
it2 != it->second->pools.end(); ++it2) {
95+
(*it2)->set_check_inter(n);
96+
}
97+
}
9698
}
9799

98100
void connect_manager::set_idle_ttl(time_t ttl)
99101
{
102+
lock_guard guard(lock_);
100103
idle_ttl_ = ttl;
104+
for (manager_it it = manager_.begin(); it != manager_.end(); ++it) {
105+
for (pools_it it2 = it->second->pools.begin();
106+
it2 != it->second->pools.end(); ++it2) {
107+
(*it2)->set_idle_ttl(ttl);
108+
}
109+
}
101110
}
102111

103112
void connect_manager::init(const char* default_addr, const char* addr_list,

0 commit comments

Comments
 (0)