SendQueue auto thread cleanup

This commit is contained in:
Atlante45 2015-07-29 16:38:37 -07:00
parent 313fcea9fb
commit 116ff17fcf
3 changed files with 3 additions and 9 deletions

View file

@ -38,14 +38,9 @@ Connection::Connection(Socket* parentSocket, HifiSockAddr destination, unique_pt
Connection::~Connection() {
if (_sendQueue) {
// tell our send queue to stop and wait until its send thread is done
QThread* sendQueueThread = _sendQueue->thread();
_sendQueue->stop();
_sendQueue->deleteLater();
sendQueueThread->quit();
sendQueueThread->wait();
_sendQueue.release();
}
}

View file

@ -42,8 +42,6 @@ public:
void sync(); // rate control method, fired by Socket for all connections on SYN interval
SequenceNumber nextACK() const;
void processReceivedSequenceNumber(SequenceNumber seq);
void processControl(std::unique_ptr<ControlPacket> controlPacket);
@ -60,6 +58,7 @@ private:
void processNAK(std::unique_ptr<ControlPacket> controlPacket);
void processTimeoutNAK(std::unique_ptr<ControlPacket> controlPacket);
SequenceNumber nextACK() const;
void updateRTT(int rtt);
int estimatedTimeout() const;

View file

@ -29,7 +29,7 @@ std::unique_ptr<SendQueue> SendQueue::create(Socket* socket, HifiSockAddr dest)
auto queue = std::unique_ptr<SendQueue>(new SendQueue(socket, dest));
// Setup queue private thread
QThread* thread = new QThread(queue.get());
QThread* thread = new QThread();
thread->setObjectName("Networking: SendQueue"); // Name thread for easier debug
connect(queue.get(), &QObject::destroyed, thread, &QThread::quit); // Thread auto cleanup
connect(thread, &QThread::finished, thread, &QThread::deleteLater); // Thread auto cleanup