| 653 | } |
| 654 | |
| 655 | static void main_fiber_monitor_idle(ACL_FIBER *fiber, void *ctx acl_unused) |
| 656 | { |
| 657 | time_t last = time(NULL); |
| 658 | |
| 659 | while (1) { |
| 660 | if (acl_atomic_clock_users(__clock) > 0) { |
| 661 | acl_fiber_sleep(1); |
| 662 | time(&last); |
| 663 | continue; |
| 664 | } |
| 665 | |
| 666 | if (time(NULL) - last >= acl_var_fiber_idle_limit) { |
| 667 | break; |
| 668 | } |
| 669 | |
| 670 | acl_fiber_sleep(1); |
| 671 | } |
| 672 | |
| 673 | acl_msg_info("%s(%d), %s: idle %ld seconds, limit %d," |
| 674 | "users %lld, used %lld", __FILE__, __LINE__, __FUNCTION__, |
| 675 | time(NULL) - last, acl_var_fiber_idle_limit, |
| 676 | acl_atomic_clock_users(__clock), |
| 677 | acl_atomic_clock_count(__clock)); |
| 678 | |
| 679 | main_stop_listen(); |
| 680 | main_server_onexit(); |
| 681 | main_stop_servers(); |
| 682 | main_free_servers(); |
| 683 | |
| 684 | main_server_exit(fiber, 0); |
| 685 | } |
| 686 | |
| 687 | static void main_thread_loop() |
| 688 | { |
nothing calls this directly
no test coverage detected
searching dependent graphs…