| 458 | } |
| 459 | |
| 460 | void FetchManager::update() { |
| 461 | // Update all active promises first |
| 462 | for (auto& promise : mActivePromises) { |
| 463 | if (promise.valid()) { |
| 464 | promise.update(); |
| 465 | } |
| 466 | } |
| 467 | |
| 468 | // Then clean up completed/invalid promises in a separate pass |
| 469 | cleanup_completed_promises(); |
| 470 | |
| 471 | // Auto-unregister from async system when no more promises |
| 472 | if (mActivePromises.empty()) { |
| 473 | task::Executor::instance().unregister_runner(this); |
| 474 | |
| 475 | if (mEngineListener) { |
| 476 | EngineEvents::removeListener(mEngineListener.get()); |
| 477 | mEngineListener.reset(); |
| 478 | } |
| 479 | } |
| 480 | } |
| 481 | |
| 482 | bool FetchManager::has_active_tasks() const { |
| 483 | return !mActivePromises.empty(); |
no test coverage detected