OMNeT++ Simulation Library  6.0.3
cChannel Class Referenceabstract

#include <cchannel.h>

Description

Base class for channels.

Inheritance diagram for cChannel:
cComponent cSoftOwner cNoncopyableOwnedObject cOwnedObject noncopyable cNamedObject cObject cDatarateChannel cDelayChannel cIdealChannel

Classes

class  MessageSentSignalValue
 Signal value that accompanies the "messageSent" signal. More...
 

Public Member Functions

virtual void finalizeParameters () override
 
Constructors, destructor
 cChannel (const char *name=nullptr)
 
virtual ~cChannel ()
 
Redefined cObject member functions.
virtual std::string str () const override
 
Public methods for invoking initialize()/finish(), redefined from cComponent.

initialize(), numInitStages(), and finish() are themselves also declared in cComponent, and can be redefined in channel classes by the user to perform initialization and finalization (result recording, etc) tasks.

virtual void callInitialize () override
 
virtual bool callInitialize (int stage) override
 
virtual void callFinish () override
 
Channel information.
virtual ComponentKind getComponentKind () const override
 
virtual cModulegetParentModule () const override
 
cChannelTypegetChannelType () const
 
virtual cPropertiesgetProperties () const override
 
virtual cGategetSourceGate () const
 
virtual bool isTransmissionChannel () const =0
 
Channel functionality
virtual Result processMessage (cMessage *msg, const SendOptions &options, simtime_t t)=0
 
virtual double getNominalDatarate () const =0
 
virtual simtime_t calculateDuration (cMessage *msg) const =0
 
virtual simtime_t getTransmissionFinishTime () const =0
 
virtual bool isBusy () const
 
virtual void forceTransmissionFinishTime (simtime_t t)
 
virtual bool isDisabled () const
 
- Public Member Functions inherited from cComponent
 cComponent (const char *name=nullptr)
 
virtual ~cComponent ()
 
virtual void forEachChild (cVisitor *v) override
 
const cComponentgetThisPtr () const
 
virtual void setDisplayName (const char *name)
 
virtual const char * getDisplayName () const
 
virtual cComponentTypegetComponentType () const
 
cSimulationgetSimulation () const
 
int getId () const
 
virtual const char * getNedTypeName () const
 
virtual std::string getNedTypeAndFullName () const
 
virtual std::string getNedTypeAndFullPath () const
 
bool isModule () const
 
bool isChannel () const
 
virtual cModulegetSystemModule () const
 
virtual cModulegetModuleByPath (const char *path) const
 
virtual cModulefindModuleByPath (const char *path) const
 
virtual int getNumParams () const
 
virtual cParpar (int k)
 
const cParpar (int k) const
 
virtual cParpar (const char *parname)
 
const cParpar (const char *parname) const
 
virtual int findPar (const char *parname) const
 
bool hasPar (const char *s) const
 
virtual cRNGgetRNG (int k) const
 
virtual uint32_t intrand (uint32_t r, int rng=0) const
 
virtual double dblrand (int rng=0) const
 
virtual double uniform (double a, double b, int rng=0) const
 
virtual SimTime uniform (SimTime a, SimTime b, int rng=0) const
 
virtual double exponential (double mean, int rng=0) const
 
virtual SimTime exponential (SimTime mean, int rng=0) const
 
virtual double normal (double mean, double stddev, int rng=0) const
 
virtual SimTime normal (SimTime mean, SimTime stddev, int rng=0) const
 
virtual double truncnormal (double mean, double stddev, int rng=0) const
 
virtual SimTime truncnormal (SimTime mean, SimTime stddev, int rng=0) const
 
virtual double gamma_d (double alpha, double theta, int rng=0) const
 
virtual double beta (double alpha1, double alpha2, int rng=0) const
 
virtual double erlang_k (unsigned int k, double mean, int rng=0) const
 
virtual double chi_square (unsigned int k, int rng=0) const
 
virtual double student_t (unsigned int i, int rng=0) const
 
virtual double cauchy (double a, double b, int rng=0) const
 
virtual double triang (double a, double b, double c, int rng=0) const
 
virtual double lognormal (double m, double w, int rng=0) const
 
virtual double weibull (double a, double b, int rng=0) const
 
virtual double pareto_shifted (double a, double b, double c, int rng=0) const
 
virtual int intuniform (int a, int b, int rng=0) const
 
virtual int intuniformexcl (int a, int b, int rng=0) const
 
virtual int bernoulli (double p, int rng=0) const
 
virtual int binomial (int n, double p, int rng=0) const
 
virtual int geometric (double p, int rng=0) const
 
virtual int negbinomial (int n, double p, int rng=0) const
 
virtual int poisson (double lambda, int rng=0) const
 
virtual void subscribe (simsignal_t signalID, cIListener *listener)
 
virtual void subscribe (const char *signalName, cIListener *listener)
 
virtual void unsubscribe (simsignal_t signalID, cIListener *listener)
 
virtual void unsubscribe (const char *signalName, cIListener *listener)
 
virtual bool isSubscribed (simsignal_t signalID, cIListener *listener) const
 
virtual bool isSubscribed (const char *signalName, cIListener *listener) const
 
virtual std::vector< simsignal_tgetLocalListenedSignals () const
 
virtual std::vector< cIListener * > getLocalSignalListeners (simsignal_t signalID) const
 
virtual bool hasGUI () const
 
virtual cDisplayStringgetDisplayString () const
 
virtual void setDisplayString (const char *dispstr)
 
virtual void bubble (const char *text) const
 
virtual std::string resolveResourcePath (const char *fileName) const
 
virtual void recordScalar (const char *name, double value, const char *unit=nullptr)
 
virtual void recordScalar (const char *name, SimTime value, const char *unit=nullptr)
 
virtual void recordStatistic (cStatistic *stats, const char *unit=nullptr)
 
virtual void recordStatistic (const char *name, cStatistic *stats, const char *unit=nullptr)
 
virtual void emit (simsignal_t signalID, bool b, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, double d, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, const SimTime &t, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, const char *s, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, cObject *obj, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, const cObject *obj, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, char c, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, unsigned char c, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, short i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, unsigned short i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, int i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, unsigned int i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, long i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, unsigned long i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, long long i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, unsigned long long i, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, float f, cObject *details=nullptr)
 
virtual void emit (simsignal_t signalID, long double d, cObject *details=nullptr)
 
bool mayHaveListeners (simsignal_t signalID) const
 
bool hasListeners (simsignal_t signalID) const
 
- Public Member Functions inherited from cSoftOwner
 cSoftOwner (const char *name=nullptr, bool namepooling=true)
 
virtual ~cSoftOwner ()
 
virtual bool isSoftOwner () const override
 
int getNumOwnedObjects () const
 
cOwnedObjectgetOwnedObject (int k)
 
- Public Member Functions inherited from cNoncopyableOwnedObject
 cNoncopyableOwnedObject (const char *name=nullptr, bool namepooling=true)
 
virtual cNoncopyableOwnedObjectdup () const override
 
- Public Member Functions inherited from cOwnedObject
 cOwnedObject ()
 
 cOwnedObject (const char *name, bool namepooling=true)
 
 cOwnedObject (const cOwnedObject &obj)
 
virtual ~cOwnedObject ()
 
cOwnedObjectoperator= (const cOwnedObject &o)
 
virtual cObjectgetOwner () const override
 
virtual bool isOwnedObject () const override
 
- Public Member Functions inherited from cNamedObject
 cNamedObject ()
 
 cNamedObject (const char *name, bool namepooling=true)
 
 cNamedObject (const cNamedObject &obj)
 
virtual ~cNamedObject ()
 
cNamedObjectoperator= (const cNamedObject &o)
 
virtual void setName (const char *s)
 
virtual const char * getName () const override
 
virtual void setNamePooling (bool b)
 
virtual bool getNamePooling ()
 
- Public Member Functions inherited from cObject
 cObject ()
 
 cObject (const cObject &other)=default
 
virtual ~cObject ()
 
virtual const char * getClassName () const
 
bool isName (const char *s) const
 
virtual const char * getFullName () const
 
virtual std::string getFullPath () const
 
virtual std::string getClassAndFullName () const
 
virtual std::string getClassAndFullPath () const
 
const cObjectgetThisPtr () const
 
virtual std::ostream & printOn (std::ostream &os) const
 
cObjectfindObject (const char *name, bool deep=true)
 
virtual cClassDescriptorgetDescriptor () const
 
void copyNotSupported () const
 

Additional Inherited Members

- Static Public Member Functions inherited from cComponent
static simsignal_t registerSignal (const char *name)
 
static const char * getSignalName (simsignal_t signalID)
 
- Static Public Member Functions inherited from cOwnedObject
static long getTotalObjectCount ()
 
static long getLiveObjectCount ()
 
static void resetObjectCounters ()
 
static cSoftOwnergetOwningContext ()
 
- Protected Member Functions inherited from cComponent
virtual void initialize (int stage)
 
virtual int numInitStages () const
 
virtual void initialize ()
 
virtual void finish ()
 
virtual void handleParameterChange (const char *parname)
 
virtual void refreshDisplay () const
 
virtual void preDelete (cComponent *root)
 
- Protected Member Functions inherited from cSoftOwner
virtual void take (cOwnedObject *obj) override
 
virtual void drop (cOwnedObject *obj) override
 
- Protected Member Functions inherited from cObject
void dropAndDelete (cOwnedObject *obj)
 

Constructor & Destructor Documentation

◆ cChannel()

cChannel ( const char *  name = nullptr)
explicit

Constructor.

◆ ~cChannel()

virtual ~cChannel ( )
virtual

Destructor. Note: it is not allowed delete channel objects directly, only via cGate's disconnect() and reconnectWith() methods.

Member Function Documentation

◆ finalizeParameters()

virtual void finalizeParameters ( )
overridevirtual

Must be called after the component was created, and (with modules) before buildInside(). It reads input parameters from omnetpp.ini, and cModule extends this method to add gates to the module too (as this is the earliest time parameter values are available, and gate vector sizes may depend on parameters).

Reimplemented from cComponent.

◆ str()

virtual std::string str ( ) const
overridevirtual

Produces a one-line description of the object's contents. See cObject for more details.

Reimplemented from cSoftOwner.

Reimplemented in cDatarateChannel.

◆ callInitialize() [1/2]

virtual void callInitialize ( )
overridevirtual

Interface for calling initialize() from outside. Implementation performs multi-stage initialization for this channel object.

Implements cComponent.

◆ callInitialize() [2/2]

virtual bool callInitialize ( int  stage)
overridevirtual

Interface for calling initialize() from outside. It does a single stage of initialization, and returns true if more stages are required.

Implements cComponent.

◆ callFinish()

virtual void callFinish ( )
overridevirtual

Interface for calling finish() from outside.

Implements cComponent.

◆ getComponentKind()

virtual ComponentKind getComponentKind ( ) const
inlineoverridevirtual

Redefined from cComponent to return KIND_CHANNEL.

Implements cComponent.

◆ getParentModule()

virtual cModule* getParentModule ( ) const
overridevirtual

Returns the compound module containing this channel. That is, the channel is either between two submodules of getParentModule(), or between getParentModule() and one of its submodules. (For completeness, it may also connect two gates of getParentModule() on the inside).

Implements cComponent.

◆ getChannelType()

cChannelType* getChannelType ( ) const
inline

Convenience method: casts the return value of getComponentType() to cChannelType.

◆ getProperties()

virtual cProperties* getProperties ( ) const
overridevirtual

Return the properties for this channel. Properties cannot be changed at runtime. Redefined from cComponent.

Implements cComponent.

◆ getSourceGate()

virtual cGate* getSourceGate ( ) const
inlinevirtual

Returns the gate this channel is attached to.

◆ isTransmissionChannel()

virtual bool isTransmissionChannel ( ) const
pure virtual

Returns true if the channel models a nonzero-duration transmission, that is, sets the duration field of cPacket. Only one transmission channel is allowed per connection path (see cGate methods getPreviousGate(), getNextGate(), getPathStartGate(), getPathEndGate()).

Implemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ processMessage()

virtual Result processMessage ( cMessage msg,
const SendOptions options,
simtime_t  t 
)
pure virtual

This method encapsulates the channel's functionality. The method should model the transmission of the given message starting at the given t time, and store the results (propagation delay, transmission duration, discard flag) in the result object. Only the relevant fields in the result object need to be changed, others can be left untouched.

Transmission duration and bit error modeling only applies to packets (i.e. to instances of cPacket, where cMessage's isPacket() returns true), it should be skipped for non-packet messages. The method does not need to call the setDuration(duration) method on the packet; this is done by the simulation kernel. However, the method should call setBitError(true) on the packet if error modeling results in bit errors.

If the method sets the discard flag in the result object, it means that the message object should be deleted by the simulation kernel; this facility can be used to model that the message gets lost in the channel.

The method does not need to throw error on overlapping transmissions, or if the packet's duration field is already set; these checks are done by the simulation kernel before processMessage() is called.

Implemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ getNominalDatarate()

virtual double getNominalDatarate ( ) const
pure virtual

For transmission channels: Returns the nominal data rate of the channel. The number returned from this method should be treated as informative; there is no strict requirement that the channel calculates packet duration by dividing the packet length by the nominal data rate. For example, specialized channels may add the length of a lead-in signal to the duration.

See also
isTransmissionChannel(), cDatarateChannel

Implemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ calculateDuration()

virtual simtime_t calculateDuration ( cMessage msg) const
pure virtual

For transmission channels: Calculates the transmission duration of the message with the current channel configuration (datarate, etc); it does not check or modify channel state. For non-transmission channels this method returns zero.

This method is useful for transmitter modules that need to determine the transmission time of a packet without actually sending the packet.

Caveats: this method is "best-effort" – there is no guarantee that transmission time when the packet is actually sent will be the same as the value returned by this method. The difference may be caused by changed channel parameters (i.e. "datarate" being overwritten), or by a non-time-invariant transmission algorithm.

Note that there is no requirement that processMessage() relies on this method to calculated the packet duration. That is, to change the duration computation algorithm via subclassing you need to redefine BOTH the processMessage() and calculateDuration() methods.

See also
isTransmissionChannel(), cDatarateChannel

Implemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ getTransmissionFinishTime()

virtual simtime_t getTransmissionFinishTime ( ) const
pure virtual

For transmission channels: Returns the simulation time the sender gate will finish transmitting. If the gate is not currently transmitting, the result is unspecified but less or equal the current simulation time.

See also
isTransmissionChannel(), isBusy(), cDatarateChannel

Implemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ isBusy()

virtual bool isBusy ( ) const
virtual

For transmission channels: Returns whether the sender gate is currently transmitting, ie. whether getTransmissionFinishTime() is greater than the current simulation time.

See also
isTransmissionChannel(), getTransmissionFinishTime(), cDatarateChannel

Reimplemented in cIdealChannel, cDatarateChannel, and cDelayChannel.

◆ forceTransmissionFinishTime()

virtual void forceTransmissionFinishTime ( simtime_t  t)
inlinevirtual

DEPRECATED METHOD. It is only provided for backward compatibility with OMNeT++ 5.x.

For transmission channels, this method forcibly overwrites the finish time of the current transmission in the channel. It is a crude device that allows implementing aborting transmissions. Models using this method should be migrated to the transmission update API.

See also
cSimpleModule::SendOptions, getTransmissionFinishTime(), isBusy()

Reimplemented in cDatarateChannel.

◆ isDisabled()

virtual bool isDisabled ( ) const
inlinevirtual

Returns whether the channel is disabled. A disabled channel discards all messages sent on it.

Reimplemented in cDatarateChannel, and cDelayChannel.


The documentation for this class was generated from the following file: