| 644 | } |
| 645 | |
| 646 | List<CelestialRequest> CelestialSlaveDatabase::pullRequests() { |
| 647 | RecursiveMutexLocker locker(m_mutex); |
| 648 | |
| 649 | List<CelestialRequest> requests; |
| 650 | |
| 651 | auto chunkIt = makeSMutableMapIterator(m_pendingChunkRequests); |
| 652 | while (chunkIt.hasNext()) { |
| 653 | auto& pair = chunkIt.next(); |
| 654 | if (!pair.second.running()) { |
| 655 | requests.append(makeLeft(pair.first)); |
| 656 | pair.second.restart(m_requestTimeout); |
| 657 | } else if (pair.second.timeUp()) { |
| 658 | chunkIt.remove(); |
| 659 | } |
| 660 | } |
| 661 | |
| 662 | auto systemIt = makeSMutableMapIterator(m_pendingSystemRequests); |
| 663 | while (systemIt.hasNext()) { |
| 664 | auto& pair = systemIt.next(); |
| 665 | if (!pair.second.running()) { |
| 666 | requests.append(makeRight(pair.first)); |
| 667 | pair.second.restart(m_requestTimeout); |
| 668 | } else if (pair.second.timeUp()) { |
| 669 | systemIt.remove(); |
| 670 | } |
| 671 | } |
| 672 | |
| 673 | return requests; |
| 674 | } |
| 675 | |
| 676 | void CelestialSlaveDatabase::pushResponses(List<CelestialResponse> responses) { |
| 677 | RecursiveMutexLocker locker(m_mutex); |