Package: inet.applications.tcpapp
TcpSinkApp
compound moduleAccepts any number of incoming TCP connections, and discards whatever arrives on them. Compatible with both ~Ipv4 and ~Ipv6.
Each incoming connection is handled by a separate, dynamically created module, which allows collecting per-connection statistics in a convenient way.
By default, reading from the socket is not rate limited. To allow rate limiting, set autoRead=false, and use the readSize and readDelay parameters to set a rate limit. This will allow TCP flow control to come into effect.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| TcpServerHostApp | simple module |
Hosts TCP-based server applications. It dynamically creates and launches a new "thread" object for each incoming connection. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| localAddress | string | "" |
May be left empty ("") |
| localPort | int | 1000 |
Port number to listen on |
| serverThreadModuleType | string | "inet.applications.tcpapp.TcpSinkAppThread" |
Module type of "thread" module to launch on incoming connections |
| stopOperationExtraTime | double | -1s |
Extra time after lifecycle stop operation finished |
| stopOperationTimeout | double | 2s |
Timeout value for lifecycle stop operation |
| autoRead | bool | true |
Whether to use "autoread" or "explicit-read" mode for TCP connection |
| readSize | int | -1B |
Used only with autoRead==false |
| readDelay | double | -1s |
Used only with autoRead==false; delay for issuing a READ command after previous READ was satisfied; -1 means immediately, 0 means zero delay |
Properties
| Name | Value | Description |
|---|---|---|
| class | TcpSinkApp | |
| display | i=block/sink | |
| lifecycleSupport |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| socketIn | input | ||
| socketOut | output |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| packetReceived | packets received | packetReceived | count, sum(packetBytes), vector(packetBytes) | none | ||
| endToEndDelay | end-to-end delay | dataAge(packetReceived) | histogram, weightedHistogram, vector | s | none |
Source code
// // Accepts any number of incoming TCP connections, and discards whatever // arrives on them. Compatible with both ~Ipv4 and ~Ipv6. // // Each incoming connection is handled by a separate, dynamically created module, // which allows collecting per-connection statistics in a convenient way. // // By default, reading from the socket is not rate limited. To allow rate // limiting, set autoRead=false, and use the `readSize` and `readDelay` parameters // to set a rate limit. This will allow TCP flow control to come into effect. // module TcpSinkApp extends TcpServerHostApp { parameters: serverThreadModuleType = default("inet.applications.tcpapp.TcpSinkAppThread"); bool autoRead = default(true); // Whether to use "autoread" or "explicit-read" mode for TCP connection volatile int readSize @unit(B) = default(-1B); // Used only with autoRead==false volatile double readDelay @unit(s) = default(-1s); // Used only with autoRead==false; delay for issuing a READ command after previous READ was satisfied; -1 means immediately, 0 means zero delay @class(TcpSinkApp); @display("i=block/sink"); @statistic[packetReceived](title="packets received"; source=packetReceived; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none; checkSignals=false); @statistic[endToEndDelay](title="end-to-end delay"; source="dataAge(packetReceived)"; unit=s; record=histogram,weightedHistogram,vector; interpolationmode=none; checkSignals=false); }File: src/inet/applications/tcpapp/TcpSinkApp.ned