From ea3ac163419afeeba75eda97d433ed348f5b21f9 Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner <mm@ucw.sh> Date: Tue, 11 Jun 2019 15:52:11 +0200 Subject: [PATCH] Handle network disconnects --- Src/Model/Network/TcpListener.cpp | 5 ++++- Src/Model/Network/TcpListener.h | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Src/Model/Network/TcpListener.cpp b/Src/Model/Network/TcpListener.cpp index bfd7a68..0a04c53 100644 --- a/Src/Model/Network/TcpListener.cpp +++ b/Src/Model/Network/TcpListener.cpp @@ -11,7 +11,10 @@ void TcpListener::acceptConnection() while (this->hasPendingConnections()) { QTcpSocket *socket = this->nextPendingConnection(); - _sockets.push_back(socket); + _sockets.insert(socket); + QObject::connect(socket, &QTcpSocket::disconnected, [this, socket](){ + _sockets.erase(socket); + }); } } diff --git a/Src/Model/Network/TcpListener.h b/Src/Model/Network/TcpListener.h index 23461d9..58a00dd 100644 --- a/Src/Model/Network/TcpListener.h +++ b/Src/Model/Network/TcpListener.h @@ -8,7 +8,7 @@ #include "../TrackedComponents/pose/FishPose.h" -#include <vector> +#include <unordered_set> #include <chrono> class TcpListener : public QTcpServer @@ -27,5 +27,5 @@ public slots: std::chrono::system_clock::time_point ts); private: - std::vector<QTcpSocket *> _sockets; + std::unordered_set<QTcpSocket *> _sockets; }; -- GitLab