| 89 | } |
| 90 | |
| 91 | bool UniverseConnection::receiveAny(unsigned timeout) { |
| 92 | MutexLocker locker(m_mutex); |
| 93 | if (!m_receiveQueue.empty()) |
| 94 | return true; |
| 95 | |
| 96 | auto timer = Timer::withMilliseconds(timeout); |
| 97 | while (true) { |
| 98 | m_packetSocket->readData(); |
| 99 | m_receiveQueue.appendAll(m_packetSocket->receivePackets()); |
| 100 | if (!m_receiveQueue.empty()) |
| 101 | return true; |
| 102 | |
| 103 | if (timer.timeUp() || !m_packetSocket->isOpen()) |
| 104 | return false; |
| 105 | |
| 106 | Thread::sleep(PacketSocketPollSleep); |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | PacketSocket& UniverseConnection::packetSocket() { |
| 111 | return *m_packetSocket; |