#include <TCPSrvHostApp.h>
Public Member Functions | |
void | removeThread (TCPServerThreadBase *thread) |
Protected Member Functions | |
virtual void | initialize () |
virtual void | handleMessage (cMessage *msg) |
virtual void | finish () |
void | updateDisplay () |
Protected Attributes | |
TCPSocket | serverSocket |
TCPSocketMap | socketMap |
|
00071 { 00072 }
|
|
00041 { 00042 if (msg->isSelfMessage()) 00043 { 00044 TCPServerThreadBase *thread = (TCPServerThreadBase *)msg->contextPointer(); 00045 thread->timerExpired(msg); 00046 } 00047 else 00048 { 00049 TCPSocket *socket = socketMap.findSocketFor(msg); 00050 if (!socket) 00051 { 00052 // new connection -- create new socket object and server process 00053 socket = new TCPSocket(msg); 00054 socket->setOutputGate(gate("tcpOut")); 00055 00056 const char *serverThreadClass = par("serverThreadClass"); 00057 TCPServerThreadBase *proc = check_and_cast<TCPServerThreadBase *>(createOne(serverThreadClass)); 00058 00059 socket->setCallbackObject(proc); 00060 proc->init(this, socket); 00061 00062 socketMap.addSocket(socket); 00063 00064 updateDisplay(); 00065 } 00066 socket->processMessage(msg); 00067 } 00068 }
|
|
00022 { 00023 const char *address = par("address"); 00024 int port = par("port"); 00025 00026 serverSocket.setOutputGate(gate("tcpOut")); 00027 serverSocket.bind(address[0] ? IPvXAddress(address) : IPvXAddress(), port); 00028 serverSocket.listen(); 00029 }
|
|
00075 { 00076 // remove socket 00077 socketMap.removeSocket(thread->socket()); 00078 00079 // remove thread object 00080 delete thread; 00081 00082 updateDisplay(); 00083 }
|
|
00032 { 00033 if (!ev.isGUI()) return; 00034 00035 char buf[32]; 00036 sprintf(buf, "%d threads", socketMap.size()); 00037 displayString().setTagArg("t", 0, buf); 00038 }
|
|
|
|
|