DataService

Package: inet.protocolelement.service

compound module DataService

(no description)

DataServiceupperLayerIn --> aggregator.inaggregator.out --> fragmenter.infragmenter.out --> sequenceNumbering.insequenceNumbering.out --> queue.inqueue.out --> server.inserver.out --> lowerLayerOutlowerLayerIn --> reordering.inreordering.out --> defragmenter.indefragmenter.out --> deaggregator.indeaggregator.out --> upperLayerOutaggregator: inet.protocolelement.aggregation.SubpacketLengthHeaderBasedAggregator Aggregates multiple packets into a single packet by inserting a length field header before each s... Source: aggregator: SubpacketLengthHeaderBasedAggregator { @display("p=150,100"); }aggregatorfragmenter: inet.protocolelement.fragmentation.FragmentNumberHeaderBasedDefragmenter Source: fragmenter: FragmentNumberHeaderBasedDefragmenter { @display("p=150,200"); }fragmentersequenceNumbering: inet.protocolelement.ordering.SequenceNumbering Adds sequence numbers to outgoing packets. Source: sequenceNumbering: SequenceNumbering { @display("p=150,300"); }sequenceNumberingqueue: inet.queueing.queue.DropTailQueue (like IPacketQueue) DropTailQueue: A limited packet queue that drops packets at the tail of the queue. IPacketQueue: Interface for packet queue modules. Source: queue: <default("DropTailQueue")> like IPacketQueue { @display("p=150,400"); }queueserver: inet.queueing.server.PacketServer (like IPacketServer) PacketServer: Repeatedly pulls packets from the connected packet provider and after a processing delay, it push... IPacketServer: Interface for packet server modules. Source: server: <default("PacketServer")> like IPacketServer { @display("p=150,500"); }serverdeaggregator: inet.protocolelement.aggregation.SubpacketLengthHeaderBasedDeaggregator Source: deaggregator: SubpacketLengthHeaderBasedDeaggregator { @display("p=450,100"); }deaggregatordefragmenter: inet.protocolelement.fragmentation.FragmentNumberHeaderBasedDefragmenter Source: defragmenter: FragmentNumberHeaderBasedDefragmenter { @display("p=450,200"); }defragmenterreordering: inet.protocolelement.ordering.Reordering Reorders out-of-sequence packets based on their sequence numbers. Source: reordering: Reordering { @display("p=450,300"); }reordering

Usage diagram

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

aggregator.aggregatorPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

aggregator.aggregatorPolicy.minNumSubpackets

int

0

aggregator.aggregatorPolicy.maxNumSubpackets

int

aggregator.aggregatorPolicy.minAggregatedLength

int

0b

aggregator.aggregatorPolicy.maxAggregatedLength

int

fragmenter.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

fragmenter.deleteSelf

bool

false

fragmenter.headerPosition

string

“front”

sequenceNumbering.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

queue.displayStringTextFormat

string

“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

queue.packetCapacity

int

100

Maximum number of packets in the queue, no limit by default

queue.dataCapacity

int

-1b

Maximum total length of packets in the queue, no limit by default

queue.dropperClass

string

“inet::queueing::PacketAtCollectionEndDropper”

Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class

queue.comparatorClass

string

“”

Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class

queue.bufferModule

string

“”

Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default

server.displayStringTextFormat

string

“served %p pk (%l)\n%s”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

server.clockModule

string

“”

Relative path of a module that implements IClock(1,:ref:2 <neddoc-msg-inet-iclock>); optional

server.serveSchedulingPriority

int

-1

Specifies the FES scheduling priority for the extra event that is pulling the packet, -1 means no extra event

server.processingTime

double

Determines additional processing time per packet

server.processingBitrate

double

inf bps

Determines additional processing time per bit

deaggregator.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

deaggregator.deleteSelf

bool

false

defragmenter.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

defragmenter.deleteSelf

bool

false

defragmenter.headerPosition

string

“front”

reordering.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

Source code

module DataService
{
    parameters:
        @display("i=block/layer");
    gates:
        input upperLayerIn;
        output upperLayerOut;
        input lowerLayerIn;
        output lowerLayerOut;
    submodules:
        aggregator: SubpacketLengthHeaderBasedAggregator {
            @display("p=150,100");
        }
        fragmenter: FragmentNumberHeaderBasedDefragmenter {
            @display("p=150,200");
        }
        sequenceNumbering: SequenceNumbering {
            @display("p=150,300");
        }
        queue: <default("DropTailQueue")> like IPacketQueue {
            @display("p=150,400");
        }
        server: <default("PacketServer")> like IPacketServer {
            @display("p=150,500");
        }
        deaggregator: SubpacketLengthHeaderBasedDeaggregator {
            @display("p=450,100");
        }
        defragmenter: FragmentNumberHeaderBasedDefragmenter {
            @display("p=450,200");
        }
        reordering: Reordering {
            @display("p=450,300");
        }
    connections:
        upperLayerIn --> { @display("m=n"); } --> aggregator.in;
        aggregator.out --> fragmenter.in;
        fragmenter.out --> sequenceNumbering.in;
        sequenceNumbering.out --> queue.in;
        queue.out --> server.in;
        server.out --> { @display("m=s"); } --> lowerLayerOut;
        lowerLayerIn --> { @display("m=s"); } --> reordering.in;
        reordering.out --> defragmenter.in;
        defragmenter.out --> deaggregator.in;
        deaggregator.out --> { @display("m=n"); } --> upperLayerOut;
}

File: src/inet/protocolelement/service/DataService.ned