Package: inet.applications.tcpapp
TcpGenericServerApp
simple moduleGeneric server application for modelling TCP-based request-reply style protocols or applications.
The module accepts any number of incoming TCP connections, and expects to receive messages of class GenericAppMsg on them. A message should contain how large the reply should be (number of bytes). TcpGenericServerApp will just change the length of the received message accordingly, and send back the same message object. The reply can be delayed by a constant time (replyDelay parameter).
Compatible with both Ipv4 and Ipv6.
See also: GenericAppMsg, TcpBasicClientApp, TelnetApp
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
Name | Type | Default value | Description |
---|---|---|---|
localAddress | string | "" |
local address; may be left empty ("") |
localPort | int | 1000 |
localPort number to listen on |
replyDelay | double | 0s | |
stopOperationExtraTime | double | -1s |
extra time after lifecycle stop operation finished |
stopOperationTimeout | double | 2s |
timeout value for lifecycle stop operation |
Properties
Name | Value | Description |
---|---|---|
display | i=block/app | |
lifecycleSupport |
Gates
Name | Direction | Size | Description |
---|---|---|---|
socketIn | input | ||
socketOut | output |
Signals
Name | Type | Unit |
---|---|---|
packetReceived | inet::Packet | |
packetSent | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
packetReceived | packets received | packetReceived | count, sum(packetBytes), vector(packetBytes) | none | |
packetSent | packets sent | packetSent | count, sum(packetBytes), vector(packetBytes) | none | |
endToEndDelay | end-to-end delay | dataAge(packetReceived) | histogram, weightedHistogram, vector | s | none |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
Incoming messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
socketIn | Indication | 3 (TcpStatusInd::TCP_I_AVAILABLE) | TcpAvailableInfo | Tcp | SocketInd |
socketIn | Indication | 3 (TcpStatusInd::TCP_I_AVAILABLE) | TcpAvailableInfo | TcpLwip | SocketInd, TransportProtocolInd |
socketIn | Indication | 4 (TcpStatusInd::TCP_I_ESTABLISHED) | TcpConnectInfo | Tcp | SocketInd |
socketIn | Indication | 4 (TcpStatusInd::TCP_I_ESTABLISHED) | TcpConnectInfo | TcpLwip | SocketInd, TransportProtocolInd |
socketIn | Indication | 5 (TcpStatusInd::TCP_I_PEER_CLOSED) | TcpCommand | Tcp | SocketInd |
socketIn | Indication | 6 (TcpStatusInd::TCP_I_CLOSED) | TcpCommand | Tcp | SocketInd |
socketIn | Packet | 1 (TcpStatusInd::TCP_I_DATA) | Tcp | SocketInd |
Outgoing messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
socketOut | Packet | 4 (TcpCommandCode::TCP_C_SEND) | Tcp | DispatchProtocolReq, SocketReq | |
socketOut | Request | 2 (TcpCommandCode::TCP_C_OPEN_PASSIVE) | TcpOpenCommand | Tcp | DispatchProtocolReq, SocketReq |
socketOut | Request | 2 (TcpCommandCode::TCP_C_OPEN_PASSIVE) | TcpOpenCommand | TcpLwip | DispatchProtocolReq, SocketReq |
socketOut | Request | 3 (TcpCommandCode::TCP_C_ACCEPT) | TcpAcceptCommand | Tcp | DispatchProtocolReq, SocketReq |
socketOut | Request | 3 (TcpCommandCode::TCP_C_ACCEPT) | TcpAcceptCommand | TcpLwip | DispatchProtocolReq, SocketReq |
socketOut | Request | 5 (TcpCommandCode::TCP_C_CLOSE) | Tcp | DispatchProtocolReq, SocketReq |
Packet operations (observed)
chunkType | packetAction |
---|---|
peekData, peekDataAt | |
GenericAppMsg | insertAtBack |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | addTagIfAbsent |
SocketInd | findTag, getTag |
SocketReq | addTag, addTagIfAbsent |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
CreationTimeTag | addTag, getAllTags |
Source code
// // Generic server application for modelling TCP-based request-reply style // protocols or applications. // // The module accepts any number of incoming TCP connections, and expects // to receive messages of class ~GenericAppMsg on them. A message should // contain how large the reply should be (number of bytes). ~TcpGenericServerApp // will just change the length of the received message accordingly, and send // back the same message object. The reply can be delayed by a constant time // (replyDelay parameter). // // Compatible with both ~Ipv4 and ~Ipv6. // // @see ~GenericAppMsg, ~TcpBasicClientApp, ~TelnetApp // simple TcpGenericServerApp like IApp { parameters: string localAddress = default(""); // local address; may be left empty ("") int localPort = default(1000); // localPort number to listen on double replyDelay @unit(s) = default(0s); @display("i=block/app"); @lifecycleSupport; double stopOperationExtraTime @unit(s) = default(-1s); // extra time after lifecycle stop operation finished double stopOperationTimeout @unit(s) = default(2s); // timeout value for lifecycle stop operation @signal[packetSent](type=inet::Packet); @signal[packetReceived](type=inet::Packet); @statistic[packetReceived](title="packets received"; source=packetReceived; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[packetSent](title="packets sent"; source=packetSent; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[endToEndDelay](title="end-to-end delay"; source="dataAge(packetReceived)"; unit=s; record=histogram,weightedHistogram,vector; interpolationmode=none); gates: input socketIn @labels(TcpCommand/up); output socketOut @labels(TcpCommand/down); }File: src/inet/applications/tcpapp/TcpGenericServerApp.ned