|
INET Framework for OMNeT++/OMNEST
|
#include <TCPSrvHostApp.h>
Public Member Functions | |
| virtual void | removeThread (TCPServerThreadBase *thread) |
Protected Member Functions | |
| virtual void | initialize () |
| virtual void | handleMessage (cMessage *msg) |
| virtual void | finish () |
| virtual void | updateDisplay () |
Protected Attributes | |
| TCPSocket | serverSocket |
| TCPSocketMap | socketMap |
Hosts a server application, to be subclassed from TCPServerProcess (which is a sSimpleModule). Creates one instance (using dynamic module creation) for each incoming connection. More info in the corresponding NED file.
| void TCPSrvHostApp::finish | ( | ) | [protected, virtual] |
{
}
| void TCPSrvHostApp::handleMessage | ( | cMessage * | msg | ) | [protected, virtual] |
{
if (msg->isSelfMessage())
{
TCPServerThreadBase *thread = (TCPServerThreadBase *)msg->getContextPointer();
thread->timerExpired(msg);
}
else
{
TCPSocket *socket = socketMap.findSocketFor(msg);
if (!socket)
{
// new connection -- create new socket object and server process
socket = new TCPSocket(msg);
socket->setOutputGate(gate("tcpOut"));
const char *serverThreadClass = par("serverThreadClass");
TCPServerThreadBase *proc = check_and_cast<TCPServerThreadBase *>(createOne(serverThreadClass));
socket->setCallbackObject(proc);
proc->init(this, socket);
socketMap.addSocket(socket);
updateDisplay();
}
socket->processMessage(msg);
}
}
| void TCPSrvHostApp::initialize | ( | ) | [protected, virtual] |
{
const char *address = par("address");
int port = par("port");
serverSocket.setOutputGate(gate("tcpOut"));
serverSocket.bind(address[0] ? IPvXAddress(address) : IPvXAddress(), port);
serverSocket.listen();
}
| void TCPSrvHostApp::removeThread | ( | TCPServerThreadBase * | thread | ) | [virtual] |
{
// remove socket
socketMap.removeSocket(thread->getSocket());
// remove thread object
delete thread;
updateDisplay();
}
| void TCPSrvHostApp::updateDisplay | ( | ) | [protected, virtual] |
Referenced by handleMessage(), and removeThread().
TCPSocket TCPSrvHostApp::serverSocket [protected] |
Referenced by initialize().
TCPSocketMap TCPSrvHostApp::socketMap [protected] |
Referenced by handleMessage(), removeThread(), and updateDisplay().