Simple Module FIFOQueue

Package: inet.common.queue
File: src/inet/common/queue/FIFOQueue.ned

C++ definition

This module implements a passive FIFO queue with unlimited buffer space. It can be combined with algorithmic droppers and schedulers to form an IOutputQueue compound module.

The C++ class implements the IQueueAccess and IPassiveQueue interfaces.

FIFOQueue

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.

Used in compound modules:

Name Type Description
AFxyQueue compound module

This is an example queue, that implements one class of the Assured Forwarding PHB group (RFC 2597).

DSQueue2 compound module

Diffserv Queue used in Experiment 2.1 - 2.4.

REDQueue compound module (no description)

Parameters:

Name Type Default value Description
queueName string "l2queue"

name of the cQueue object, used in the 'q' tag of the display string

Properties:

Name Value Description
display i=block/passiveq

Gates:

Name Direction Size Description
in [ ] input
out output

Signals:

Name Type Unit
queueLength long
queueingTime simtime_t s
dequeuePk cPacket
dropPkByQueue cPacket
rcvdPk cPacket
enqueuePk cPacket

Statistics:

Name Title Source Record Unit Interpolation Mode
queueLength queue length max, timeavg, vector sample-hold
queueingTime queueing time histogram, vector none
dropPk dropped packets dropPkByQueue count, sum(packetBytes), vector(packetBytes) none
rcvdPk received packets count, sum(packetBytes), vector(packetBytes) none

Source code:

//
// This module implements a passive FIFO queue
// with unlimited buffer space. It can be combined
// with algorithmic droppers and schedulers to form
// an IOutputQueue compound module.
//
// The C++ class implements the IQueueAccess and IPassiveQueue
// interfaces.
//
simple FIFOQueue
{
    parameters:
        string queueName = default("l2queue"); // name of the cQueue object, used in the 'q' tag of the display string
        @display("i=block/passiveq");
        @signal[rcvdPk](type=cPacket);
        @signal[enqueuePk](type=cPacket);
        @signal[dequeuePk](type=cPacket);
        @signal[dropPkByQueue](type=cPacket);
        @signal[queueingTime](type=simtime_t; unit=s);
        @signal[queueLength](type=long);
        @statistic[rcvdPk](title="received packets"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[dropPk](title="dropped packets"; source=dropPkByQueue; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[queueingTime](title="queueing time"; record=histogram,vector; interpolationmode=none);
        @statistic[queueLength](title="queue length"; record=max,timeavg,vector; interpolationmode=sample-hold);
    gates:
        input in[];
        output out;
}