From 12eb81d2fb5a139ac9417a015953b3083fe9b941 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sun, 26 Dec 2021 08:02:27 +0100 Subject: [PATCH] Reserver base port for incoming DCS --- DCSProtocolHandlerPool.cpp | 11 ++++++++++- DCSProtocolHandlerPool.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/DCSProtocolHandlerPool.cpp b/DCSProtocolHandlerPool.cpp index e92867d..354c921 100644 --- a/DCSProtocolHandlerPool.cpp +++ b/DCSProtocolHandlerPool.cpp @@ -41,9 +41,18 @@ CDCSProtocolHandlerPool::~CDCSProtocolHandlerPool() } } +CDCSProtocolHandler *CDCSProtocolHandlerPool::getIncomingHandler() +{ + return getHandler(m_basePort); +} + CDCSProtocolHandler *CDCSProtocolHandlerPool::getHandler() { - unsigned int port = m_basePort; + return getHandler(m_basePort + 1U); +} + +CDCSProtocolHandler *CDCSProtocolHandlerPool::getHandler(unsigned int port) +{ while (m_pool.end() != m_pool.find(port)) port++; // find an unused port CDCSProtocolHandler *proto = new CDCSProtocolHandler(port, m_address); diff --git a/DCSProtocolHandlerPool.h b/DCSProtocolHandlerPool.h index 6b5cbea..d9cf3d7 100644 --- a/DCSProtocolHandlerPool.h +++ b/DCSProtocolHandlerPool.h @@ -31,6 +31,7 @@ public: ~CDCSProtocolHandlerPool(); CDCSProtocolHandler *getHandler(); + CDCSProtocolHandler *getIncomingHandler(); void release(CDCSProtocolHandler *handler); DCS_TYPE read(); @@ -41,6 +42,7 @@ public: void close(); private: + CDCSProtocolHandler *getHandler(unsigned int port); std::map m_pool; std::map::iterator m_index; unsigned int m_basePort;