SctpClient¶
Package: inet.applications.sctpapp
simple module SctpClient
Client app for SCTP-based request-reply protocols. Handles a single session (and SCTP connection) at a time.
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for all INET simple modules. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“{socketState}” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
localAddress |
string |
“” |
Comma-separated list of addresses |
localPort |
int |
0 |
Port number to listen on |
connectAddress |
string |
Server address (may be symbolic) |
|
connectPort |
int |
Port number to connect to |
|
startTime |
double |
1s |
Time the first session begins |
numRequestsPerSession |
int |
1 |
Number of requests sent per session |
numPacketsToReceive |
int |
0 |
|
requestLength |
int |
1452 |
Length of a request (bytes) |
thinkTime |
double |
0s |
Time gap between requests |
waitToClose |
double |
0s |
Time to wait between the last message sent and abort |
reconnectInterval |
double |
0s |
If the connection breaks, waits this much before trying to reconnect |
inboundStreams |
int |
17 |
|
outboundStreams |
int |
1 |
|
echo |
bool |
false |
Echoes received packages when true |
ordered |
bool |
true |
|
queueSize |
int |
0 |
|
prMethod |
int |
0 |
0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST |
prValue |
double |
0 |
For PR-SCTP |
streamReset |
bool |
false |
|
streamRequestTime |
double |
0s |
|
streamResetType |
int |
5 |
NO_RESET=5, RESET_OUTGOING=6, RESET_INCOMING=7, RESET_BOTH=8, SSN_TSN=9 |
streamToReset |
int |
0 |
|
stopTime |
double |
-1s |
Time of finishing sending, negative values mean forever |
primaryTime |
double |
0s |
|
newPrimary |
string |
“” |
|
streamRequestLengths |
string |
“” |
|
streamRequestRatio |
string |
“” |
|
streamPriorities |
string |
“” |
|
finishEndsSimulation |
bool |
false |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
SctpClient |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
socketIn |
input |
||
socketOut |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
echoedPk |
|||
packetReceived |
|||
packetSent |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
echoedPk |
packets echoed |
echoedPk |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
||
packetReceived |
packets received |
packetReceived |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
||
packetSent |
packets sent |
packetSent |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
Source code¶
//
// Client app for SCTP-based request-reply protocols.
// Handles a single session (and SCTP connection) at a time.
//
simple SctpClient extends SimpleModule like IApp
{
parameters:
@class(SctpClient);
string localAddress = default(""); // Comma-separated list of addresses
int localPort = default(0); // Port number to listen on
string connectAddress; // Server address (may be symbolic)
int connectPort; // Port number to connect to
double startTime @unit(s) = default(1s); // Time the first session begins
volatile int numRequestsPerSession = default(1); // Number of requests sent per session
int numPacketsToReceive = default(0);
int requestLength = default(1452); // Length of a request (bytes)
double thinkTime @unit(s) = default(0s); // Time gap between requests
double waitToClose @unit(s) = default(0s); // Time to wait between the last message sent and abort
double reconnectInterval @unit(s) = default(0s); // If the connection breaks, waits this much before trying to reconnect
int inboundStreams = default(17);
int outboundStreams = default(1);
bool echo = default(false); // Echoes received packages when true
bool ordered = default(true);
int queueSize = default(0);
int prMethod = default(0); // 0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST
double prValue = default(0); // For PR-SCTP
bool streamReset = default(false);
double streamRequestTime @unit(s) = default(0s);
int streamResetType = default(5); // NO_RESET=5, RESET_OUTGOING=6, RESET_INCOMING=7, RESET_BOTH=8, SSN_TSN=9
int streamToReset = default(0);
double stopTime @unit(s) = default(-1s); // Time of finishing sending, negative values mean forever
double primaryTime @unit(s) = default(0s);
string newPrimary = default("");
string streamRequestLengths = default("");
string streamRequestRatio = default("");
string streamPriorities = default("");
bool finishEndsSimulation = default(false);
displayStringTextFormat = default("{socketState}");
@signal[packetSent](type=inet::Packet);
@signal[packetReceived](type=inet::Packet);
@signal[echoedPk](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[echoedPk](title="packets echoed"; source=echoedPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
gates:
input socketIn;
output socketOut;
}