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

Method peek

lib_acl_cpp/src/connpool/connect_manager.cpp:573–606  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

571}
572
573connect_pool* connect_manager::peek()
574{
575 connect_pool* pool;
576 size_t service_size, n;
577
578 unsigned long id = get_id();
579 lock_guard guard(lock_);
580
581 if (addrs_.empty()) {
582 logger_warn("pools's size is 0!");
583 return NULL;
584 }
585
586 conns_pools& pools = get_pools_by_id(id);
587 service_size = pools.pools.size();
588 // �����ǰ���ӳض���δ��ʼ������Ϊ�䴴���������ӳ�
589 if (service_size == 0) {
590 create_pools_for(pools.pools);
591 service_size = pools.pools.size();
592 assert(service_size > 0);
593 }
594
595 // �������е����ӳأ��ҳ�һ�����õ����ӳ�
596 for(size_t i = 0; i < service_size; i++) {
597 n = pools.conns_next++ % service_size;
598 pool = pools.pools[n];
599 if (pool->aliving()) {
600 return pool;
601 }
602 }
603
604 logger_error("all pool(size=%d) is dead!", (int) service_size);
605 return NULL;
606}
607
608connect_pool* connect_manager::peek(const char* addr,
609 bool exclusive /* = true */)

Callers

nothing calls this directly

Calls 8

acl_hash_crc32Function · 0.85
get_idFunction · 0.50
peekFunction · 0.50
emptyMethod · 0.45
sizeMethod · 0.45
alivingMethod · 0.45
lockMethod · 0.45
unlockMethod · 0.45

Tested by

no test coverage detected