StreamPolicyLayer¶
Package: inet.linklayer.ieee8021q
compound module StreamPolicyLayer
(no description)
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
(no description) |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
interfaceTableModule |
string |
Properties¶
Name |
Value |
Description |
|---|---|---|
display |
i=block/layer |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
upperLayerIn |
input |
||
upperLayerOut |
output |
||
lowerLayerIn |
input |
||
lowerLayerOut |
output |
Unassigned submodule parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
streamIdentifier.identifier.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
streamIdentifier.identifier.hasSequenceNumbering |
bool |
true |
|
streamIdentifier.identifier.mapping |
object |
[] |
Array of objects, where each object specifies a stream name and a packetFilter, for example [{stream: “s0”, packetFilter: “*”}, …] |
streamRelay.merger.displayStringTextFormat |
string |
“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
streamRelay.merger.backpressure |
bool |
false |
|
streamRelay.merger.mapping |
object |
{} |
Map of input streams to output streams. An empty string means no stream. For example, {s0: “s1”, …} |
streamRelay.merger.bufferSize |
int |
10 |
Window size for sequence numbers per stream. |
streamRelay.splitter.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
streamRelay.splitter.mapping |
object |
{} |
Map from input stream names to array of output stream names, empty string means no stream |
streamCoder.decoder.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
streamCoder.decoder.interfaceTableModule |
string |
Relative module path of the interface table |
|
streamCoder.decoder.mapping |
object |
[] |
Array of objects, where each object maps a network interface name pattern, a source address, a destination address, a VLAN id, and a PCP value to a stream name, for example [{stream: “s1”, interface: “eth0”, destination: “dest1”, pcp: 3}, …] |
streamCoder.encoder.displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
streamCoder.encoder.mapping |
object |
[] |
Array of objects, where each object maps a stream name to a VLAN ID and PCP value, for example [{stream: “s1”, vlan: 12, pcp: 7}, …] |
Source code¶
module StreamPolicyLayer like IProtocolLayer
{
parameters:
string interfaceTableModule;
*.interfaceTableModule = default(this.interfaceTableModule);
@display("i=block/layer");
gates:
input upperLayerIn;
output upperLayerOut;
input lowerLayerIn;
output lowerLayerOut;
submodules:
streamIdentifier: <default("StreamIdentifierLayer")> like IProtocolLayer {
@display("p=300,150");
}
streamRelay: <default("StreamRelayLayer")> like IProtocolLayer {
@display("p=300,300");
}
streamCoder: <default("StreamCoderLayer")> like IProtocolLayer {
@display("p=300,450");
}
connections:
upperLayerIn --> { @display("m=n"); } --> streamIdentifier.upperLayerIn;
streamIdentifier.lowerLayerOut --> streamRelay.upperLayerIn;
streamRelay.lowerLayerOut --> streamCoder.upperLayerIn;
streamCoder.lowerLayerOut --> { @display("m=s"); } --> lowerLayerOut;
lowerLayerIn --> { @display("m=s"); } --> streamCoder.lowerLayerIn;
streamCoder.upperLayerOut --> streamRelay.lowerLayerIn;
streamRelay.upperLayerOut --> streamIdentifier.lowerLayerIn;
streamIdentifier.upperLayerOut --> { @display("m=n"); } --> upperLayerOut;
}