|
INET Framework for OMNeT++/OMNEST
|
#include <PacketGateBase.h>
Public Member Functions | |
| virtual bool | isOpen () const override |
| Returns true if the gate is open. More... | |
| virtual bool | isClosed () const |
| virtual void | open () override |
| Opens the gate and starts traffic go through. More... | |
| virtual void | close () override |
| Closes the gate and stops traffic. More... | |
| virtual IPassivePacketSink * | getConsumer (cGate *gate) override |
| Returns the passive packet sink where packets are pushed or nullptr if the connected module doesn't implement the interface. More... | |
| virtual IPassivePacketSource * | getProvider (cGate *gate) override |
| Returns the passive packet source from where packets are pulled or nullptr if the connected module doesn't implement the interface. More... | |
| virtual bool | supportsPacketPushing (cGate *gate) const override |
| Returns true if the processor supports pushing packets at the given gate. More... | |
| virtual bool | supportsPacketPulling (cGate *gate) const override |
| Returns true if the processor supports pulling packets at the given gate. More... | |
| virtual bool | canPushSomePacket (cGate *gate) const override |
| Returns false if the packet sink is full at the given gate and no more packets can be pushed into it without raising an error. More... | |
| virtual bool | canPushPacket (Packet *packet, cGate *gate) const override |
| Returns true if the given packet can be pushed at the given gate into the packet sink without raising an error. More... | |
| virtual bool | canPullSomePacket (cGate *gate) const override |
| Returns false if the packet source is empty at the given gate and no more packets can be pulled from it without raising an error. More... | |
| virtual Packet * | canPullPacket (cGate *gate) const override |
| Returns the packet that can be pulled at the given gate. More... | |
| virtual void | handleCanPushPacketChanged (cGate *gate) override |
| Notifies about a change in the possibility of pushing some packet into the passive packet sink at the given gate. More... | |
| virtual void | handleCanPullPacketChanged (cGate *gate) override |
| Notifies about a change in the possibility of pulling some packet from the passive packet source at the given gate. More... | |
Public Member Functions inherited from inet::queueing::PacketFlowBase | |
| virtual bool | supportsPacketStreaming (cGate *gate) const override |
| Returns true if the processor supports streaming packets at the given gate. More... | |
| virtual void | pushPacket (Packet *packet, cGate *gate) override |
| Pushes the packet into the packet sink at the given gate. More... | |
| virtual void | pushPacketStart (Packet *packet, cGate *gate, bps datarate) override |
| Starts pushing the packet into the packet sink at the given gate. More... | |
| virtual void | pushPacketEnd (Packet *packet, cGate *gate) override |
| Ends pushing the packet into the packet sink at the given gate. More... | |
| virtual void | pushPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength=b(0)) override |
| Progresses pushing the packet into the packet sink at the given gate. More... | |
| virtual void | handlePushPacketProcessed (Packet *packet, cGate *gate, bool successful) override |
| Notifies about the completion of the packet processing for a packet that was pushed earlier independently whether the packet is passed or streamed. More... | |
| virtual Packet * | pullPacket (cGate *gate) override |
| Pulls the packet from the packet source at the given gate. More... | |
| virtual Packet * | pullPacketStart (cGate *gate, bps datarate) override |
| Starts pulling the packet from the packet source at the given gate. More... | |
| virtual Packet * | pullPacketEnd (cGate *gate) override |
| Ends pulling the packet from the packet source at the given gate. More... | |
| virtual Packet * | pullPacketProgress (cGate *gate, bps datarate, b position, b extraProcessableLength) override |
| Progresses pulling the packet from the packet source at the given gate. More... | |
| virtual void | handlePullPacketProcessed (Packet *packet, cGate *gate, bool successful) override |
| Notifies about the completion of the packet processing for a packet that was pulled earlier independently whether the packet is passed or streamed. More... | |
| virtual int | getMaxNumPackets () const override |
| Returns maximum allowed number of packets in the collection. More... | |
| virtual int | getNumPackets () const override |
| Returns the number of available packets in the collection in the range [0, inf). More... | |
| virtual b | getMaxTotalLength () const override |
| Returns maximum allowed total length of all packets in the collection. More... | |
| virtual b | getTotalLength () const override |
| Returns the total length of all packets in the collection in the range [0, inf). More... | |
| virtual Packet * | getPacket (int index) const override |
| Returns the packet at the given index. More... | |
| virtual bool | isEmpty () const override |
| Returns true if there are no packets available in the collection. More... | |
| virtual void | removePacket (Packet *packet) override |
| Removes a packet from the collection. More... | |
| virtual void | removeAllPackets () override |
| Removes all packets from the collection. More... | |
Public Member Functions inherited from inet::queueing::PacketProcessorBase | |
| virtual bool | supportsPacketSending (cGate *gate) const override |
| Returns true if the processor supports sending packets at the given gate. More... | |
| virtual bool | supportsPacketPassing (cGate *gate) const override |
| Returns true if the processor supports passing packets as a whole at the given gate. More... | |
| virtual const char * | resolveDirective (char directive) const override |
Public Member Functions inherited from inet::queueing::IPacketProcessor | |
| virtual | ~IPacketProcessor () |
Public Member Functions inherited from inet::queueing::IPassivePacketSink | |
| virtual | ~IPassivePacketSink () |
Public Member Functions inherited from inet::queueing::IActivePacketSink | |
| virtual | ~IActivePacketSink () |
Public Member Functions inherited from inet::queueing::IPassivePacketSource | |
| virtual | ~IPassivePacketSource () |
Public Member Functions inherited from inet::queueing::IActivePacketSource | |
| virtual | ~IActivePacketSource () |
Public Member Functions inherited from inet::TransparentProtocolRegistrationListener | |
| virtual void | mapRegistrationForwardingGates (cGate *gate, std::function< void(cGate *)> f) |
| virtual bool | isForwardingProtocol (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingProtocolGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingAnyProtocol (cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingProtocol (cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingService (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingServiceGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingAnyService (cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual bool | isForwardingService (cGate *gate, ServicePrimitive servicePrimitive) const |
| virtual void | handleRegisterService (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override |
| virtual void | handleRegisterProtocol (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override |
| virtual void | handleRegisterServiceGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override |
| virtual void | handleRegisterProtocolGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override |
| virtual void | handleRegisterAnyService (cGate *gate, ServicePrimitive servicePrimitive) override |
| virtual void | handleRegisterAnyProtocol (cGate *gate, ServicePrimitive servicePrimitive) override |
Static Public Attributes | |
| static simsignal_t | gateStateChangedSignal = registerSignal("gateStateChanged") |
Protected Member Functions | |
| virtual void | initialize (int stage) override |
| virtual cGate * | getRegistrationForwardingGate (cGate *gate) override |
| virtual void | processPacket (Packet *packet) override |
| virtual bool | canPacketFlowThrough (Packet *packet) const |
| virtual void | updateDisplayString () const override |
Protected Member Functions inherited from inet::queueing::PacketFlowBase | |
| virtual void | handleMessage (cMessage *message) override |
| virtual bool | isStreamingPacket () const |
| virtual void | startPacketStreaming (Packet *packet) |
| virtual void | endPacketStreaming (Packet *packet) |
| virtual void | checkPacketStreaming (Packet *packet) |
Protected Member Functions inherited from inet::queueing::PacketProcessorBase | |
| virtual int | numInitStages () const override |
| virtual void | refreshDisplay () const override |
| virtual void | handlePacketProcessed (Packet *packet) |
| virtual void | checkPacketOperationSupport (cGate *gate) const |
| virtual void | checkPacketOperationSupport (cGate *startGate, cGate *endGate) const |
| virtual void | animate (Packet *packet, cGate *gate, const SendOptions &sendOptions, Action action) const |
| virtual void | animatePacket (Packet *packet, cGate *gate, Action action) const |
| virtual void | animatePacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId, Action action) const |
| virtual void | animatePacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions, Action action) const |
| virtual void | animatePacketEnd (Packet *packet, cGate *gate, long transmissionId, Action action) const |
| virtual void | animatePacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions, Action action) const |
| virtual void | animatePacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId, Action action) const |
| virtual void | animatePacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions, Action action) const |
| virtual void | pushOrSendPacket (Packet *packet, cGate *gate, IPassivePacketSink *consumer) |
| virtual void | pushOrSendPacketStart (Packet *packet, cGate *gate, IPassivePacketSink *consumer, bps datarate, int transmissionId) |
| virtual void | pushOrSendPacketEnd (Packet *packet, cGate *gate, IPassivePacketSink *consumer, int transmissionId) |
| virtual void | pushOrSendPacketProgress (Packet *packet, cGate *gate, IPassivePacketSink *consumer, bps datarate, b position, b extraProcessableLength, int transmissionId) |
| virtual void | animatePush (Packet *packet, cGate *gate, const SendOptions &sendOptions) const |
| virtual void | animatePushPacket (Packet *packet, cGate *gate) const |
| virtual void | animatePushPacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId) const |
| virtual void | animatePushPacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions) const |
| virtual void | animatePushPacketEnd (Packet *packet, cGate *gate, long transmissionId) const |
| virtual void | animatePushPacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions) const |
| virtual void | animatePushPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId) const |
| virtual void | animatePushPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions) const |
| virtual void | animatePull (Packet *packet, cGate *gate, const SendOptions &sendOptions) const |
| virtual void | animatePullPacket (Packet *packet, cGate *gate) const |
| virtual void | animatePullPacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId) const |
| virtual void | animatePullPacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions) const |
| virtual void | animatePullPacketEnd (Packet *packet, cGate *gate, long transmissionId) const |
| virtual void | animatePullPacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions) const |
| virtual void | animatePullPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId) const |
| virtual void | animatePullPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions) const |
| virtual void | dropPacket (Packet *packet, PacketDropReason reason, int limit=-1) |
Protected Attributes | |
| bps | bitrate = bps(NaN) |
| b | extraLength = b(-1) |
| simtime_t | extraDuration |
| bool | isOpen_ = false |
Protected Attributes inherited from inet::queueing::PacketFlowBase | |
| cGate * | inputGate = nullptr |
| ModuleRef< IActivePacketSource > | producer |
| ModuleRef< IPassivePacketSource > | provider |
| ModuleRef< IPacketCollection > | collection |
| cGate * | outputGate = nullptr |
| ModuleRef< IPassivePacketSink > | consumer |
| ModuleRef< IActivePacketSink > | collector |
| int | inProgressStreamId = -1 |
Protected Attributes inherited from inet::queueing::PacketProcessorBase | |
| const char * | displayStringTextFormat = nullptr |
| int | numProcessedPackets = -1 |
| b | processedTotalLength = b(-1) |
Additional Inherited Members | |
Protected Types inherited from inet::queueing::PacketProcessorBase | |
| enum | Action { PUSH, PULL } |
|
protectedvirtual |
Reimplemented in inet::queueing::PeriodicGate.
Referenced by inet::queueing::PeriodicGate::canPacketFlowThrough(), canPullPacket(), canPullSomePacket(), canPushPacket(), and canPushSomePacket().
|
overridevirtual |
Returns the packet that can be pulled at the given gate.
The returned value is nullptr if there is no such packet.
The gate must be a valid gate of this module and it must support pushing packets.
Reimplemented from inet::queueing::PacketFlowBase.
|
overridevirtual |
Returns false if the packet source is empty at the given gate and no more packets can be pulled from it without raising an error.
The gate must be a valid gate of this module and it must support pulling packets.
Reimplemented from inet::queueing::PacketFlowBase.
|
overridevirtual |
Returns true if the given packet can be pushed at the given gate into the packet sink without raising an error.
The packet must not be nullptr. The gate must be a valid gate of this module and it must support pushing packets.
Reimplemented from inet::queueing::PacketFlowBase.
|
overridevirtual |
Returns false if the packet sink is full at the given gate and no more packets can be pushed into it without raising an error.
The gate must be a valid gate of this module and it must support pushing packets.
Reimplemented from inet::queueing::PacketFlowBase.
|
overridevirtual |
Closes the gate and stops traffic.
Implements inet::queueing::IPacketGate.
Referenced by inet::queueing::InteractiveGate::handleParameterChange(), inet::queueing::PacketGate::processChangeTimer(), inet::queueing::PeriodicGate::processChangeTimer(), inet::queueing::CreditBasedGate::processChangeTimer(), and inet::EligibilityTimeGate::updateOpen().
|
inlineoverridevirtual |
Returns the passive packet sink where packets are pushed or nullptr if the connected module doesn't implement the interface.
The gate parameter must be a valid gate of this module.
Reimplemented from inet::queueing::PacketFlowBase.
|
inlineoverridevirtual |
Returns the passive packet source from where packets are pulled or nullptr if the connected module doesn't implement the interface.
The gate parameter must be a valid gate of this module.
Reimplemented from inet::queueing::PacketFlowBase.
|
overrideprotectedvirtual |
Reimplemented from inet::TransparentProtocolRegistrationListener.
|
overridevirtual |
Notifies about a change in the possibility of pulling some packet from the passive packet source at the given gate.
This method is called, for example, when a new packet is inserted into a queue. It allows the sink to pull a new packet from the queue.
The gate parameter must be a valid gate of this module.
Reimplemented from inet::queueing::PacketFlowBase.
Reimplemented in inet::queueing::CreditBasedGate, and inet::EligibilityTimeGate.
Referenced by inet::EligibilityTimeGate::handleCanPullPacketChanged(), and inet::queueing::CreditBasedGate::handleCanPullPacketChanged().
|
overridevirtual |
Notifies about a change in the possibility of pushing some packet into the passive packet sink at the given gate.
This method is called, for example, when a new packet can be inserted into a queue. It allows the source to push a new packet into the queue.
The gate parameter must be a valid gate of this module.
Reimplemented from inet::queueing::PacketFlowBase.
|
overrideprotectedvirtual |
Reimplemented from inet::queueing::PacketFlowBase.
Reimplemented in inet::queueing::CreditBasedGate, inet::EligibilityTimeGate, inet::queueing::PeriodicGate, inet::queueing::PacketGate, and inet::queueing::InteractiveGate.
Referenced by inet::queueing::InteractiveGate::initialize(), and inet::queueing::CreditBasedGate::initialize().
|
inlinevirtual |
Referenced by inet::EligibilityTimeGate::updateOpen().
|
inlineoverridevirtual |
Returns true if the gate is open.
Implements inet::queueing::IPacketGate.
Referenced by inet::EligibilityTimeGate::updateOpen().
|
overridevirtual |
Opens the gate and starts traffic go through.
Implements inet::queueing::IPacketGate.
Referenced by inet::queueing::InteractiveGate::handleParameterChange(), inet::queueing::PacketGate::processChangeTimer(), inet::queueing::PeriodicGate::processChangeTimer(), inet::queueing::CreditBasedGate::processChangeTimer(), and inet::EligibilityTimeGate::updateOpen().
|
overrideprotectedvirtual |
Implements inet::queueing::PacketFlowBase.
Reimplemented in inet::queueing::CreditBasedGate.
Referenced by inet::queueing::CreditBasedGate::processPacket().
|
inlineoverridevirtual |
Returns true if the processor supports pulling packets at the given gate.
Pulling a packet is a synchronous operation that is initiated by the sink module. A pulled packet can be passed as a whole using pullPacket(), or it can be streamed from the source to the sink using pullPacketStart(), pullPacketEnd(), and pullPacketProgress().
For output gates, true means that the connected module can pull packets from this module. For input gates, true means that this module can pull packets from the connected module. For example, a packet server module can pull packets from a queue module.
Connecting incompatible gates raises an error during initialize. The gate parameter must be a valid gate of this module. The gate should be marked with @labels(pull) in the NED file.
Reimplemented from inet::queueing::PacketFlowBase.
|
inlineoverridevirtual |
Returns true if the processor supports pushing packets at the given gate.
Pushing a packet is a synchronous operation that is initiated by the source module. A pushed packet can be passed as a whole using pushPacket(), or it can be streamed from the source to the sink using pushPacketStart(), pushPacketEnd(), and pushPacketProgress().
For output gates, true means that this module can push packets into the connected module. For input gates, true means that the connected module can push packets into this module. For example, a packet generator module can push packets into a queue module.
Connecting incompatible gates raises an error during initialize. The gate parameter must be a valid gate of this module. The gate should be marked with @labels(push) in the NED file.
Reimplemented from inet::queueing::PacketFlowBase.
|
overrideprotectedvirtual |
Reimplemented from inet::queueing::PacketProcessorBase.
Referenced by close(), inet::queueing::CreditBasedGate::initialize(), open(), and inet::queueing::CreditBasedGate::refreshDisplay().
Referenced by inet::queueing::PeriodicGate::canPacketFlowThrough(), and initialize().
|
protected |
Referenced by inet::queueing::PeriodicGate::canPacketFlowThrough(), and initialize().
Referenced by inet::queueing::PeriodicGate::canPacketFlowThrough(), and initialize().
|
static |
Referenced by close(), initialize(), and open().
|
protected |
Referenced by canPullPacket(), canPullSomePacket(), canPushPacket(), canPushSomePacket(), close(), handleCanPullPacketChanged(), handleCanPushPacketChanged(), inet::queueing::PeriodicGate::handleParameterChange(), inet::queueing::InteractiveGate::initialize(), inet::queueing::PacketGate::initialize(), inet::queueing::PeriodicGate::initialize(), initialize(), inet::queueing::CreditBasedGate::initialize(), inet::queueing::PeriodicGate::initializeGating(), open(), inet::queueing::PacketGate::processChangeTimer(), inet::queueing::PeriodicGate::processChangeTimer(), inet::queueing::CreditBasedGate::processChangeTimer(), inet::queueing::PacketGate::scheduleChangeTimer(), inet::queueing::CreditBasedGate::scheduleChangeTimer(), and updateDisplayString().