Package: inet.protocolelement.redundancy
StreamIdentifier
simple moduleThis module identifies the stream of a packet using packet filter expressions. It can check for arbitrary packet data and assign and if a match was found then the stream is attached to the packet in a StreamReq tag.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
Name | Type | Description |
---|---|---|
PacketFlowBase | simple module |
This is a base module for various packet flow modules. A packet flow module passes or streams all pushed or pulled packets after processing them from its input to its output. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
hasSequenceNumbering | bool | true | |
mapping | object | [] |
array of objects, where each object specifies a stream name and a packetFilter, for example [{stream: "s0", packetFilter: "*"}, ...] |
Properties
Name | Value | Description |
---|---|---|
display | i=block/blackboard | |
class | StreamIdentifier |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out | output |
Signals
Name | Type | Unit |
---|---|---|
packetPushedIn | inet::Packet | |
packetPulledIn | inet::Packet | |
packetPushedOut | inet::Packet | |
packetPulledOut | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
flowIncomingDataRate | flow specific incoming data rate | throughput(demuxFlow(merge(packetPushedIn, packetPulledIn))) | vector | bps | linear |
outgoingDataRate | outgoing data rate | throughput(merge(packetPushedOut, packetPulledOut)) | vector | bps | linear |
incomingDataRate | incoming data rate | throughput(merge(packetPushedIn, packetPulledIn)) | vector | bps | linear |
outgoingPacketLengths | outgoing packet lengths | packetLength(merge(packetPushedOut, packetPulledOut)) | sum, histogram, vector | b | none |
flowIncomingPacketLengths | flow specific incoming packet lengths | packetLength(demuxFlow(merge(packetPushedIn, packetPulledIn))) | sum, histogram, vector | b | none |
flowOutgoingDataRate | flow specific outgoing data rate | throughput(demuxFlow(merge(packetPushedOut, packetPulledOut))) | vector | bps | linear |
incomingPacketLengths | incoming packet lengths | packetLength(merge(packetPushedIn, packetPulledIn)) | sum, histogram, vector | b | none |
flowOutgoingPacketLengths | flow specific outgoing packet lengths | packetLength(demuxFlow(merge(packetPushedOut, packetPulledOut))) | sum, histogram, vector | b | none |
incomingPackets | incoming packets | merge(packetPushedIn, packetPulledIn) | count | pk | |
outgoingPackets | outgoing packets | merge(packetPushedOut, packetPulledOut) | count | pk |
Direct method calls (observed)
call to | function | info |
---|---|---|
StreamClassifier | inet::StreamClassifier::pushPacket | pushPacket |
StreamEncoder | inet::StreamEncoder::pushPacket | pushPacket |
StreamSplitter | inet::StreamSplitter::pushPacket | pushPacket |
PacketMultiplexer | inet::queueing::PacketMultiplexer::handleCanPushPacketChanged | handleCanPushPacketChanged |
Called methods (observed)
function | info | call from |
---|---|---|
inet::StreamIdentifier::handleCanPushPacketChanged | handleCanPushPacketChanged | StreamClassifier |
inet::StreamIdentifier::pushPacket | pushPacket | PacketMultiplexer |
Pushed in messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
in | Packet | 0 | PacketMultiplexer | DirectionTag, PacketProtocolTag, DispatchProtocolInd?, DispatchProtocolReq?, DropEligibleReq?, EncapsulationProtocolReq?, InterfaceInd?, InterfaceReq?, MacAddressReq?, MulticastReq?, NetworkProtocolInd?, PcpReq?, SequenceNumberReq?, SocketReq?, StreamReq?, TransportProtocolInd?, UserPriorityReq?, VlanReq? |
Push out messages (observed)
Packet operations (observed)
chunkType | packetAction |
---|---|
peekData, setBackOffset, setFrontOffset | |
Ipv4Header | popAtFront |
UdpHeader | popAtFront |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
L3AddressInd | findTag |
NetworkProtocolInd | findTag |
PacketProtocolTag | findTag |
SequenceNumberReq | addTag |
StreamReq | addTag, findTag |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
FlowTag | mapAllTags |
Source code
// // This module identifies the stream of a packet using packet filter expressions. // It can check for arbitrary packet data and assign and if a match was found then // the stream is attached to the packet in a ~StreamReq tag. // simple StreamIdentifier extends PacketFlowBase like IPacketFlow { parameters: bool hasSequenceNumbering = default(true); object mapping @mutable = default([]); // array of objects, where each object specifies a stream name and a packetFilter, for example [{stream: "s0", packetFilter: "*"}, ...] @class(StreamIdentifier); @display("i=block/blackboard"); }File: src/inet/protocolelement/redundancy/StreamIdentifier.ned