PacketServer

Package: inet.queueing.server

PacketServer

simple module

This module repeatedly pulls packets from the connected packet provider and after a processing delay it pushes the packet into the connected packet consumer. The processing delay is processingTime + packetLength / processingBitrate.

Inheritance diagram

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

Extends

Name Type Description
PacketServerBase simple module

This is a base module for various packet server modules.

Parameters

Name Type Default value Description
displayStringTextFormat string "served %p pk (%l)\n%s"

determines the text that is written on top of the submodule

clockModule string ""

relative path of a module that implements IClock; optional

serveSchedulingPriority int -1

specifies the FES scheduling priority for the extra event that is pulling the packet, -1 means no extra event

processingTime double

determines additional processing time per packet

processingBitrate double inf bps

determines additional processing time per bit

Properties

Name Value Description
display i=block/server
class PacketServer

Gates

Name Direction Size Description
in input
out output

Signals

Name Type Unit
packetPushed inet::Packet
packetPulled inet::Packet

Statistics

Name Title Source Record Unit Interpolation Mode
outgoingDataRate outgoing datarate throughput(packetPushed) vector bps linear
incomingDataRate incoming datarate throughput(packetPulled) vector bps linear
outgoingPacketLengths outgoing packet lengths packetLength(packetPushed) sum, histogram, vector b none
incomingPacketLengths incoming packet lengths packetLength(packetPulled) sum, histogram, vector b none
incomingPackets incoming packets packetPulled count pk
outgoingPackets outgoing packets packetPushed count pk

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
ClockEvent0ProcessingTimer

Direct method calls (observed)

call tofunctioninfo
EligibilityTimeGateinet::EligibilityTimeGate::pullPacketpullPacket
PacketDelayerinet::queueing::PacketDelayer::pushPacketpushPacket
DropTailQueueinet::queueing::PacketQueue::pullPacketpullPacket
PacketQueueinet::queueing::PacketQueue::pullPacketpullPacket
PassivePacketSinkinet::queueing::PassivePacketSink::pushPacketpushPacket
PassivePacketSourceinet::queueing::PassivePacketSource::pullPacketpullPacket

Called methods (observed)

functioninfocall from
inet::queueing::PacketServer::handleCanPullPacketChangedhandleCanPullPacketChangedEligibilityTimeGate, DropTailQueue, PacketQueue, PassivePacketSource
inet::queueing::PacketServer::handleCanPushPacketChangedhandleCanPushPacketChangedPacketDelayer, PassivePacketSink

Pull in messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0EligibilityTimeGateDirectionTag, EligibilityTimeTag, PacketProtocolTag
inPacket0DropTailQueueDirectionTag, PacketProtocolTag
inPacket0PacketQueueDirectionTag, PacketProtocolTag
inPacket0PassivePacketSourceDirectionTag, PacketProtocolTag

Push out messages (observed)

gatemsgkindctrldestModuletags
outPacket0PacketDelayerDirectionTag, PacketProtocolTag
outPacket0PassivePacketSinkDirectionTag, PacketProtocolTag, EligibilityTimeTag?

Region Tagging operations (observed)

tagTypetagAction
PacketEventTagmapAllTagsForUpdate
ProcessingTimeTagmapAllTagsForUpdate

Source code

//
// This module repeatedly pulls packets from the connected packet provider and
// after a processing delay it pushes the packet into the connected packet
// consumer. The processing delay is processingTime + packetLength / processingBitrate.
//
simple PacketServer extends PacketServerBase like IPacketServer
{
    parameters:
        displayStringTextFormat = default("served %p pk (%l)\n%s");
        string clockModule = default(""); // relative path of a module that implements IClock; optional
        int serveSchedulingPriority = default(-1); // specifies the FES scheduling priority for the extra event that is pulling the packet, -1 means no extra event
        volatile double processingTime @unit(s); // determines additional processing time per packet
        volatile double processingBitrate @unit(bps) = default(inf bps); // determines additional processing time per bit
        @class(PacketServer);
}
File: src/inet/queueing/server/PacketServer.ned