DataService

Package: inet.tutorials.protocol

DataService

compound module

(no description)

aggregator : SubpacketLengthHeaderBasedAggregator

Aggregates multiple packets into a single packet by inserting a length field header before each...

Source:
aggregator: SubpacketLengthHeaderBasedAggregator {
    @display("p=150,100");
} fragmenter : FragmentNumberHeaderBasedDefragmenter

Source:
fragmenter: FragmentNumberHeaderBasedDefragmenter {
    @display("p=150,200");
} sequenceNumbering : SequenceNumbering

Adds sequence numbers to outgoing packets.

Source:
sequenceNumbering: SequenceNumbering {
    @display("p=150,300");
} queue : 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");
} server : like IPacketServer

PacketServer: Repeatedly pulls packets from the connected packet provider and after a processing delay, it pushes...

IPacketServer: Interface for packet server modules.

Source:
server: <default("PacketServer")> like IPacketServer {
    @display("p=150,500");
} deaggregator : SubpacketLengthHeaderBasedDeaggregator

Source:
deaggregator: SubpacketLengthHeaderBasedDeaggregator {
    @display("p=450,100");
} defragmenter : FragmentNumberHeaderBasedDefragmenter

Source:
defragmenter: FragmentNumberHeaderBasedDefragmenter {
    @display("p=450,200");
} reordering : Reordering

Reorders out-of-sequence packets based on their sequence numbers.

Source:
reordering: Reordering {
    @display("p=450,300");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Used in compound modules

Name Type Description
Node compound module (no description)

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
fragmenter.displayStringTextFormat string "processed %p pk (%l)"

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 %p pk (%l)"

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

deaggregator.displayStringTextFormat string "processed %p pk (%l)"

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 %p pk (%l)"

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 %p pk (%l)"

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: tutorials/protocol/Network91.ned