ReceiverHost

Package: inet.tutorials.protocol

ReceiverHost

compound module

(no description)

sinkA : PassivePacketSink

A passive packet sink which is pushed with packets by the connected packet producer.

Source:
sinkA: PassivePacketSink {
    @display("p=100,100");
} sinkB : PassivePacketSink

A passive packet sink which is pushed with packets by the connected packet producer.

Source:
sinkB: PassivePacketSink {
    @display("p=200,100");
} sinkC : PassivePacketSink

A passive packet sink which is pushed with packets by the connected packet producer.

Source:
sinkC: PassivePacketSink {
    @display("p=300,100");
} classifier : ContentBasedClassifier

Connects one packet producer to multiple packet consumers.

Source:
classifier: ContentBasedClassifier {
    @display("p=200,200");
} defragmenter : DynamicDefragmenter

Source:
defragmenter: DynamicDefragmenter {
    @display("p=200,300");
} fcsChecker : EthernetFcsHeaderChecker

Checks Ethernet FCS checksums inserted as headers in packets in order to verify data integrity.

Source:
fcsChecker: EthernetFcsHeaderChecker {
    @display("p=200,400");
} receiver : PacketReceiver

Receives signals from the physical medium (wire) as a whole.

Source:
receiver: PacketReceiver {
    @display("p=200,500");
}

Usage diagram

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

Used in

Name Type Description
Network90 network (no description)

Properties

Name Value Description
networkNode
display i=device/pc

Gates

Name Direction Size Description
g input

Unassigned submodule parameters

Name Type Default value Description
sinkA.displayStringTextFormat string "received %p pk (%l)"

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

sinkA.clockModule string ""

Relative path of a module that implements IClock(1,2); optional

sinkA.initialConsumptionOffset double 0s

Initial duration before which packets are not consumed

sinkA.consumptionInterval double 0s

Elapsed time between subsequent packets allowed to be pushed by the connected packet producer, 0 means any number of packets can be pushed at the same simulation time

sinkA.scheduleForAbsoluteTime bool true

When a clock is used, "relative" means that setting the clock will not affect the simulation time of the event

sinkB.displayStringTextFormat string "received %p pk (%l)"

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

sinkB.clockModule string ""

Relative path of a module that implements IClock(1,2); optional

sinkB.initialConsumptionOffset double 0s

Initial duration before which packets are not consumed

sinkB.consumptionInterval double 0s

Elapsed time between subsequent packets allowed to be pushed by the connected packet producer, 0 means any number of packets can be pushed at the same simulation time

sinkB.scheduleForAbsoluteTime bool true

When a clock is used, "relative" means that setting the clock will not affect the simulation time of the event

sinkC.displayStringTextFormat string "received %p pk (%l)"

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

sinkC.clockModule string ""

Relative path of a module that implements IClock(1,2); optional

sinkC.initialConsumptionOffset double 0s

Initial duration before which packets are not consumed

sinkC.consumptionInterval double 0s

Elapsed time between subsequent packets allowed to be pushed by the connected packet producer, 0 means any number of packets can be pushed at the same simulation time

sinkC.scheduleForAbsoluteTime bool true

When a clock is used, "relative" means that setting the clock will not affect the simulation time of the event

classifier.displayStringTextFormat string "classified %p pk (%l)"

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

classifier.reverseOrder bool false
classifier.defaultGateIndex int 0

Default gate index if no matching labels are found

classifier.packetFilters object

Array of packet filter expressions

defragmenter.multiplexer.displayStringTextFormat string "passed %p pk (%l)"

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

defragmenter.multiplexer.forwardServiceRegistration bool true
defragmenter.multiplexer.forwardProtocolRegistration bool true
defragmenter.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.defragmenter.deleteSelf bool false
defragmenter.defragmenter.headerPosition string "front"
defragmenter.classifier.displayStringTextFormat string "classified %p pk (%l)"

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

defragmenter.classifier.reverseOrder bool false
defragmenter.classifier.classifierClass string

Determines the output queue of packets, the parameter must be the name of a C++ class which implements the IPacketClassifierFunction interface and is registered via Register_Class

defragmenter.classifier.submoduleName string
defragmenter.classifier.moduleType string
fcsChecker.displayStringTextFormat string "dropped %d/%p pk (%k/%l)"

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

fcsChecker.backpressure bool false
fcsChecker.headerPosition string "front"
receiver.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

receiver.datarate double

Source code

module ReceiverHost
{
    parameters:
        @networkNode;
        @display("i=device/pc");
    gates:
        input g;
    submodules:
        sinkA: PassivePacketSink {
            @display("p=100,100");
        }
        sinkB: PassivePacketSink {
            @display("p=200,100");
        }
        sinkC: PassivePacketSink {
            @display("p=300,100");
        }
        classifier: ContentBasedClassifier {
            @display("p=200,200");
        }
        defragmenter: DynamicDefragmenter {
            @display("p=200,300");
        }
        fcsChecker: EthernetFcsHeaderChecker {
            @display("p=200,400");
        }
        receiver: PacketReceiver {
            @display("p=200,500");
        }
    connections:
        g --> receiver.in;
        receiver.out --> fcsChecker.in;
        fcsChecker.out --> defragmenter.in;
        defragmenter.out --> classifier.in;
        classifier.out++ --> sinkA.in;
        classifier.out++ --> sinkB.in;
        classifier.out++ --> sinkC.in;
}

File: tutorials/protocol/Network90.ned