MCPcopy Create free account
hub / github.com/acl-dev/acl / timer_callback

Method timer_callback

lib_acl_cpp/src/connpool/check_timer.cpp:25–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23}
24
25void check_timer::timer_callback(unsigned int id)
26{
27 id_ = (int) id;
28
29 if (stopping_) {
30 logger("check_timer stopping ...");
31 return;
32 }
33
34 connect_manager& manager = monitor_.get_manager();
35
36 // �Զ���Ⲣ�رչ��ڿ��г����ӣ��Զ��ر��쳣���ӣ��Զ�����ÿ�����ӳص���С������
37 manager.check_conns(monitor_.get_check_step(),
38 monitor_.check_idle_on(), monitor_.kick_dead_on(),
39 monitor_.keep_conns_on(), monitor_.get_threads(), NULL);
40
41 if (!monitor_.check_server_on()) {
42 return;
43 }
44
45 // ��ʼ�ռ���������˷�������ԣ����������÷����ַ�����������
46
47 // ����ȡ���з�������ַ����ΪҪ�����Ķ����ڶ��̻߳����У�
48 // ������Ҫ���л���������
49 manager.lock();
50
51 const std::vector<connect_pool*>& pools = manager.get_pools();
52
53 for (std::vector<connect_pool*>::const_iterator cit = pools.begin();
54 cit != pools.end(); ++cit) {
55
56 const char* addr = (*cit)->get_addr();
57 if (addr == NULL || *addr == 0) {
58 logger_warn("addr null");
59 continue;
60 }
61
62 std::map<string, int>::iterator it = addrs_.find(addr);
63 if (it == addrs_.end()) {
64 addrs_[addr] = 1;
65 } else {
66 it->second++;
67 }
68 }
69
70 manager.unlock();
71
72 //if (addrs_.empty())
73 // logger_warn(">>>no addr been set!<<<");
74
75 // �������з�������ַ
76
77 struct timeval begin;
78 std::map<string, int>::iterator cit_next;
79
80 for (std::map<string, int>::iterator cit = addrs_.begin();
81 cit != addrs_.end(); cit = cit_next) {
82

Callers

nothing calls this directly

Calls 15

openFunction · 0.85
check_connsMethod · 0.80
beginMethod · 0.80
set_pools_statusMethod · 0.80
add_open_callbackMethod · 0.80
add_close_callbackMethod · 0.80
add_timeout_callbackMethod · 0.80
check_clientClass · 0.70
gettimeofdayFunction · 0.50
lockMethod · 0.45
endMethod · 0.45
get_addrMethod · 0.45

Tested by

no test coverage detected