EligibilityTimeMeter.ned

NED File src/inet/protocolelement/shaper/EligibilityTimeMeter.ned

Name Type Description
EligibilityTimeMeter simple module

A packet meter which measures the packet flow that is passing through and optionally attaches an ~EligibilityTimeTag to the packets. The tag contains the calculated simulation time when the packet becomes eligible for transmission according to the asynchronous shaper algorithm.

Source code

//
// Copyright (C) 2020 OpenSim Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//


package inet.protocolelement.shaper;

import inet.queueing.base.PacketMeterBase;
import inet.queueing.contract.IPacketMeter;

//
// A packet meter which measures the packet flow that is passing
// through and optionally attaches an ~EligibilityTimeTag to the packets. The
// tag contains the calculated simulation time when the packet becomes eligible
// for transmission according to the asynchronous shaper algorithm.
//
// This module is part of the asynchronous shaper infrastructure.
//
// @see ~EligibilityTimeGate, ~EligibilityTimeFilter, ~EligibilityTimeQueue, ~EligibilityTimeTag
//
simple EligibilityTimeMeter extends PacketMeterBase like IPacketMeter
{
    parameters:
        string clockModule = default(""); // Relative path of a module that implements IClock; optional
        int packetOverheadLength @unit(b) = default(0b); // Extra packet length taken into account, can be used to represent overhead added by lower layers
        double committedInformationRate @unit(bps); // Committed information rate of the packet flow
        int committedBurstSize @unit(b); // Committed burst size of the packet flow
        double maxResidenceTime @unit(s) = default(-1s); // Maximum packet residence time measured from the packet arrival time to the meter module to the transmission eligibility time, not used by default
        displayStringTextFormat = default("contains {numTokens} tk\nbucket empty at {bucketEmptyTime}\nmetered %p pk (%l)");
        @class(EligibilityTimeMeter);
        @signal[tokensChanged](type=double);
        @statistic[numTokens](title="number of tokens"; source=tokensChanged; record=vector; unit=tk; interpolationmode=linear);
}