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

Method peek

lib_acl_cpp/independent/connpool/src/connect_pool.cpp:47–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47connect_client* connect_pool::peek()
48{
49 lock_->lock();
50 if (alive_ == false)
51 {
52 time_t now = time(NULL);
53 if (now - last_dead_ < retry_inter_)
54 {
55 lock_->unlock();
56 return NULL;
57 }
58 alive_ = true;
59 }
60
61 connect_client* conn;
62
63 std::list<connect_client*>::iterator it = pool_.begin();
64 if (it != pool_.end())
65 {
66 conn = *it;
67 pool_.erase(it);
68 total_used_++;
69 current_used_++;
70 lock_->unlock();
71 return conn;
72 }
73 else if (count_ >= max_)
74 {
75 lock_->unlock();
76 return NULL;
77 }
78
79 conn = create_connect();
80 if (conn->open() == false)
81 {
82 delete conn;
83 alive_ = false;
84 time(&last_dead_);
85 (void) time(&last_dead_);
86 lock_->unlock();
87 return NULL;
88 }
89
90 count_++;
91
92 total_used_++;
93 current_used_++;
94
95 lock_->unlock();
96 return conn;
97}
98
99void connect_pool::put(connect_client* conn, bool keep /* = true */)
100{

Callers

nothing calls this directly

Calls 5

beginMethod · 0.80
lockMethod · 0.45
unlockMethod · 0.45
endMethod · 0.45
openMethod · 0.45

Tested by

no test coverage detected