| 571 | } |
| 572 | |
| 573 | void DoExecute() override { |
| 574 | while (true) { |
| 575 | { |
| 576 | TGuard<TMutex> g(PurgeMutex_); |
| 577 | |
| 578 | if (Shutdown_) |
| 579 | return; |
| 580 | |
| 581 | CondPurge_.WaitI(PurgeMutex_); |
| 582 | } |
| 583 | |
| 584 | PurgeCache(); |
| 585 | |
| 586 | InPurging_.Release(); |
| 587 | } |
| 588 | } |
| 589 | |
| 590 | void PurgeCache() noexcept { |
| 591 | //try remove at least ExceedSoftLimit() oldest connections from cache |