StreamClassifier

Package: inet.protocolelement.redundancy

StreamClassifier

simple module

This module classifies packets based on the stream they are part of. The stream is determined by a StreamReq or a StreamInd or both.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends

Name Type Description
PacketClassifierBase simple module

This is a base module for various packet classifier modules. Derived modules must implement a single packet classifier function which determines the index of the output gate for the next pushed packet.

Parameters

Name Type Default value Description
displayStringTextFormat string "classified %p pk (%l)"

determines the text that is written on top of the submodule

reverseOrder bool false
mode string "both"
mapping object {}

maps stream name to gate index

gateIndexOffset int 0

specify value to be added to the mapping output gate index

defaultGateIndex int 0

default gate index if no matching streams are found

Properties

Name Value Description
display i=block/classifier
class StreamClassifier

Gates

Name Direction Size Description
in input
out [ ] output

Signals

Name Type Unit
packetPushed inet::Packet

Statistics

Name Title Source Record Unit Interpolation Mode
packetLengths packet lengths packetLength(packetPushed) sum, histogram, vector b none
dataRate data rate throughput(packetPushed) vector bps linear
packets packets packetPushed count pk

Direct method calls (observed)

call tofunctioninfo
StreamIdentifierinet::StreamIdentifier::handleCanPushPacketChangedhandleCanPushPacketChanged
PacketMultiplexerinet::queueing::PacketMultiplexer::pushPacketpushPacket
InteractiveGateinet::queueing::InteractiveGate::pushPacketpushPacket

Called methods (observed)

functioninfocall from
inet::StreamClassifier::handleCanPushPacketChangedhandleCanPushPacketChangedPacketMultiplexer, InteractiveGate
inet::StreamClassifier::pushPacketpushPacketStreamDecoder, StreamIdentifier

Pushed in messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0StreamDecoderDirectionTag, DispatchProtocolReq, DropEligibleInd, EncapsulationProtocolInd, InterfaceInd, MacAddressInd, PacketProtocolTag, PcpInd, StreamInd, UserPriorityInd, VlanInd
inPacket0StreamIdentifierDirectionTag, PacketProtocolTag, StreamReq

Push out messages (observed)

gatemsgkindctrldestModuletags
out[]Packet0PacketMultiplexerDirectionTag, DispatchProtocolReq, DropEligibleInd, EncapsulationProtocolInd, InterfaceInd, MacAddressInd, PacketProtocolTag, PcpInd, StreamInd, UserPriorityInd, VlanInd
out[]Packet0InteractiveGateDirectionTag, PacketProtocolTag, DispatchProtocolReq?, DropEligibleInd?, EncapsulationProtocolInd?, InterfaceInd?, MacAddressInd?, PcpInd?, StreamInd?, StreamReq?, UserPriorityInd?, VlanInd?

Shared Tagging operations (observed)

tagTypetagAction
EligibilityTimeTagfindTag
LabelsTagfindTag
StreamIndfindTag
StreamReqfindTag

Source code

//
// This module classifies packets based on the stream they are part of. The stream
// is determined by a StreamReq or a StreamInd or both.
//
simple StreamClassifier extends PacketClassifierBase like IPacketClassifier
{
    parameters:
        string mode @enum("req","ind","both") = default("both");
        object mapping = default({}); // maps stream name to gate index
        int gateIndexOffset = default(0); // specify value to be added to the mapping output gate index
        int defaultGateIndex = default(0); // default gate index if no matching streams are found
        @class(StreamClassifier);
}
File: src/inet/protocolelement/redundancy/StreamClassifier.ned