Reserver base port for incoming DCS

master
Geoffrey Merck 4 years ago
parent 633205a94d
commit 12eb81d2fb

@ -41,9 +41,18 @@ CDCSProtocolHandlerPool::~CDCSProtocolHandlerPool()
} }
} }
CDCSProtocolHandler *CDCSProtocolHandlerPool::getIncomingHandler()
{
return getHandler(m_basePort);
}
CDCSProtocolHandler *CDCSProtocolHandlerPool::getHandler() 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)) while (m_pool.end() != m_pool.find(port))
port++; // find an unused port port++; // find an unused port
CDCSProtocolHandler *proto = new CDCSProtocolHandler(port, m_address); CDCSProtocolHandler *proto = new CDCSProtocolHandler(port, m_address);

@ -31,6 +31,7 @@ public:
~CDCSProtocolHandlerPool(); ~CDCSProtocolHandlerPool();
CDCSProtocolHandler *getHandler(); CDCSProtocolHandler *getHandler();
CDCSProtocolHandler *getIncomingHandler();
void release(CDCSProtocolHandler *handler); void release(CDCSProtocolHandler *handler);
DCS_TYPE read(); DCS_TYPE read();
@ -41,6 +42,7 @@ public:
void close(); void close();
private: private:
CDCSProtocolHandler *getHandler(unsigned int port);
std::map<int,CDCSProtocolHandler *> m_pool; std::map<int,CDCSProtocolHandler *> m_pool;
std::map<int,CDCSProtocolHandler *>::iterator m_index; std::map<int,CDCSProtocolHandler *>::iterator m_index;
unsigned int m_basePort; unsigned int m_basePort;

Loading…
Cancel
Save

Powered by TurnKey Linux.