TCPSocketMap.cc

Go to the documentation of this file.
00001 //
00002 // Copyright (C) 2004 Andras Varga
00003 //
00004 // This program is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Lesser General Public License
00006 // as published by the Free Software Foundation; either version 2
00007 // of the License, or (at your option) any later version.
00008 //
00009 // This program is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 // GNU Lesser General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU Lesser General Public License
00015 // along with this program; if not, see <http://www.gnu.org/licenses/>.
00016 //
00017 
00018 #include <omnetpp.h>
00019 #include "TCPSocketMap.h"
00020 
00021 
00022 TCPSocket *TCPSocketMap::findSocketFor(cMessage *msg)
00023 {
00024     TCPCommand *ind = dynamic_cast<TCPCommand *>(msg->getControlInfo());
00025     if (!ind)
00026         opp_error("TCPSocketMap: findSocketFor(): no TCPCommand control info in message (not from TCP?)");
00027     int connId = ind->getConnId();
00028     SocketMap::iterator i = socketMap.find(connId);
00029     ASSERT(i==socketMap.end() || i->first==i->second->getConnectionId());
00030     return (i==socketMap.end()) ? NULL : i->second;
00031 }
00032 
00033 void TCPSocketMap::addSocket(TCPSocket *socket)
00034 {
00035     ASSERT(socketMap.find(socket->getConnectionId())==socketMap.end());
00036     socketMap[socket->getConnectionId()] = socket;
00037 }
00038 
00039 TCPSocket *TCPSocketMap::removeSocket(TCPSocket *socket)
00040 {
00041     SocketMap::iterator i = socketMap.find(socket->getConnectionId());
00042     if (i!=socketMap.end())
00043         socketMap.erase(i);
00044     return socket;
00045 }
00046 
00047 void TCPSocketMap::deleteSockets()
00048 {
00049     for (SocketMap::iterator i=socketMap.begin(); i!=socketMap.end(); ++i)
00050        delete i->second;
00051 }