PacketHistory

Package: inet.queueing.common

PacketHistory

compound module

This module connects one packet producer to one packet consumer. It can be pushed with packets from the connected packet producer. It keeps a copy of the last N packets pushed into its input. The packets are available in the runtime user interface (Qtenv) for inspection.

cloner : PacketCloner

This module connects one packet producer to one packet consumer.

Source:
cloner: PacketCloner {
    parameters:
        @display("p=100,100");
} queue : like IPacketQueue

DropHeadQueue: This is a limited packet queue which drops packets at the head of the queue.

IPacketQueue: This module interface is implemented by packet queue modules.

Source:
queue: <default("DropHeadQueue")> like IPacketQueue {
    parameters:
        packetCapacity = default(size);
        @display("p=100,200");
}

Usage diagram

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

Inheritance diagram

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

Parameters

Name Type Default value Description
size int 100

the number of packets to remember

Properties

Name Value Description
display i=block/passiveq

Gates

Name Direction Size Description
in input
out output

Unassigned submodule parameters

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

determines the text that is written on top of the submodule

Source code

//
// This module connects one packet producer to one packet consumer. It can be
// pushed with packets from the connected packet producer. It keeps a copy of
// the last N packets pushed into its input. The packets are available in the
// runtime user interface (Qtenv) for inspection.
//
module PacketHistory like IPassivePacketSink, IActivePacketSource
{
    parameters:
        int size = default(100); // the number of packets to remember
        @display("i=block/passiveq");
    gates:
        input in @labels(push);
        output out @labels(push);
    submodules:
        cloner: PacketCloner {
            parameters:
                @display("p=100,100");
        }
        queue: <default("DropHeadQueue")> like IPacketQueue {
            parameters:
                packetCapacity = default(size);
                @display("p=100,200");
        }
    connections:
        in --> { @display("m=w"); } --> cloner.in;
        cloner.out++ --> { @display("m=e"); } --> out;
        cloner.out++ --> queue.in;
}

File: src/inet/queueing/common/PacketHistory.ned