From f2474da8648b95340456a2695fc2c90e043dabec Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Thu, 13 Dec 2007 16:22:02 +0000 Subject: added Synccommand / now connection updates work / sync is multi connection capable --- connectionList.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'connectionList.cpp') diff --git a/connectionList.cpp b/connectionList.cpp index 1186263..3b1c528 100644 --- a/connectionList.cpp +++ b/connectionList.cpp @@ -41,22 +41,43 @@ ConnectionList::~ConnectionList() { } -void ConnectionList::addConnection(ConnectionParam &conn, const std::string &name) +void ConnectionList::addConnection(ConnectionParam &conn, u_int16_t mux ) { Lock lock(mutex_); - std::pair ret = connections_.insert(ConnectionMap::value_type(name, conn)); + std::pair ret = connections_.insert(ConnectionMap::value_type(mux, conn)); if(!ret.second) { connections_.erase(ret.first); - connections_.insert(ConnectionMap::value_type(name, conn)); + connections_.insert(ConnectionMap::value_type(mux, conn)); } } -ConnectionParam & ConnectionList::getConnection() +const ConnectionMap::iterator ConnectionList::getEnd() +{ + return connections_.end(); +} + +const ConnectionMap::iterator ConnectionList::getConnection(u_int16_t mux) +{ + Lock lock(mutex_); + ConnectionMap::iterator it = connections_.find(mux); + return it; +} + + +ConnectionParam & ConnectionList::getOrNewConnection(u_int16_t mux) { Lock lock(mutex_); - ConnectionMap::iterator it = connections_.begin(); + ConnectionMap::iterator it = connections_.find(mux); + if(it!=connections_.end()) + return it->second; + SeqWindow * seq= new SeqWindow(0); + seq_nr_t seq_nr_=0; + KeyDerivation * kd = new KeyDerivation; + ConnectionParam conn ( (*kd), (*seq), seq_nr_, "", 0); + connections_.insert(ConnectionMap::value_type(mux, conn)); + it = connections_.find(mux); return it->second; } -- cgit v1.2.3