| 523 | } |
| 524 | |
| 525 | void connect_manager::pools_dump(size_t step, std::vector<connect_pool*>& out) |
| 526 | { |
| 527 | size_t pools_size; |
| 528 | unsigned long id = get_id(); |
| 529 | |
| 530 | lock_.lock(); |
| 531 | |
| 532 | conns_pools& pools = get_pools_by_id(id); |
| 533 | pools_size = pools.pools.size(); |
| 534 | if (pools_size == 0) { |
| 535 | lock_.unlock(); |
| 536 | return; |
| 537 | } |
| 538 | |
| 539 | if (step == 0 || step > pools_size) { |
| 540 | step = pools_size; |
| 541 | } |
| 542 | |
| 543 | for (size_t i = 0; i < step; i++) { |
| 544 | connect_pool* pool = pools.pools[pools.check_next % pools_size]; |
| 545 | pools.check_next++; |
| 546 | pool->refer(); |
| 547 | out.push_back(pool); |
| 548 | } |
| 549 | |
| 550 | lock_.unlock(); |
| 551 | } |
| 552 | |
| 553 | size_t connect_manager::pools_release(std::vector<connect_pool*>& pools) |
| 554 | { |