StreamSplitter

Package: inet.protocolelement.redundancy

StreamSplitter

simple module

This module duplicates incoming packets based on the stream they are part of. The stream is determined by the StreamReq tag that is attached to the packet. The number of outgoing packet is determined by the mapping parameter. Each outgoing packet will have an attached StreamReq with the tag name taken from the mapping parameter.

See also: StreamMerger

Inheritance diagram

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

Extends

Name Type Description
PacketPusherBase simple module

This is a base module for various packet pusher modules.

Parameters

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

determines the text that is written on top of the submodule

mapping object {}

map from input stream names to array of output stream names, empty string means no stream

Properties

Name Value Description
display i=block/fork
class StreamSplitter

Gates

Name Direction Size Description
in input
out output

Direct method calls (observed)

call tofunctioninfo
StreamEncoderinet::StreamEncoder::pushPacketpushPacket

Called methods (observed)

functioninfocall from
inet::StreamSplitter::pushPacketpushPacketStreamIdentifier

Pushed in messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0StreamIdentifierDirectionTag, EncapsulationProtocolReq, MacAddressReq, PacketProtocolTag, SequenceNumberReq, StreamReq, DispatchProtocolInd?, DispatchProtocolReq?, DropEligibleReq?, InterfaceInd?, InterfaceReq?, MulticastReq?, NetworkProtocolInd?, PcpReq?, SocketReq?, TransportProtocolInd?, UserPriorityReq?, VlanReq?

Push out messages (observed)

gatemsgkindctrldestModuletags
outPacket0StreamEncoderDirectionTag, EncapsulationProtocolReq, MacAddressReq, PacketProtocolTag, SequenceNumberReq, StreamReq, DispatchProtocolInd?, DispatchProtocolReq?, DropEligibleReq?, InterfaceInd?, InterfaceReq?, MulticastReq?, NetworkProtocolInd?, PcpReq?, SocketReq?, TransportProtocolInd?, UserPriorityReq?, VlanReq?

Shared Tagging operations (observed)

tagTypetagAction
StreamReqaddTagIfAbsent, findTag

Source code

//
// This module duplicates incoming packets based on the stream they are part of.
// The stream is determined by the StreamReq tag that is attached to the packet.
// The number of outgoing packet is determined by the mapping parameter. Each
// outgoing packet will have an attached StreamReq with the tag name taken from
// the mapping parameter.
//
// @see ~StreamMerger
//
simple StreamSplitter extends PacketPusherBase like IPacketPusher
{
    parameters:
        object mapping @mutable = default({}); // map from input stream names to array of output stream names, empty string means no stream
        @class(StreamSplitter);
        @display("i=block/fork");
}
File: src/inet/protocolelement/redundancy/StreamSplitter.ned