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;