| 2423 | } |
| 2424 | |
| 2425 | static bool runtime_wait_for_count(cbm_daemon_runtime_service_t *service, size_t expected, |
| 2426 | uint32_t timeout_ms, bool connections) { |
| 2427 | if (!service) { |
| 2428 | return false; |
| 2429 | } |
| 2430 | uint64_t deadline = runtime_deadline_after(timeout_ms); |
| 2431 | for (;;) { |
| 2432 | size_t actual = connections ? cbm_daemon_runtime_service_active_connections(service) |
| 2433 | : cbm_daemon_runtime_service_active_clients(service); |
| 2434 | if (actual == expected) { |
| 2435 | return true; |
| 2436 | } |
| 2437 | if (cbm_now_ms() >= deadline) { |
| 2438 | return false; |
| 2439 | } |
| 2440 | runtime_wait_tick(deadline); |
| 2441 | } |
| 2442 | } |
| 2443 | |
| 2444 | bool cbm_daemon_runtime_service_wait_for_clients(cbm_daemon_runtime_service_t *service, |
| 2445 | size_t expected, uint32_t timeout_ms) { |
no test coverage detected