summaryrefslogtreecommitdiff
path: root/connectionList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'connectionList.cpp')
-rw-r--r--connectionList.cpp31
1 files changed, 26 insertions, 5 deletions
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<ConnectionMap::iterator, bool> ret = connections_.insert(ConnectionMap::value_type(name, conn));
+ std::pair<ConnectionMap::iterator, bool> 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;
}