INET Framework for OMNeT++/OMNEST
inet::ieee80211::AlternativesFs Class Reference

#include <GenericFrameSequences.h>

Inheritance diagram for inet::ieee80211::AlternativesFs:
inet::ieee80211::IFrameSequence inet::ieee80211::DcfFs inet::ieee80211::HcfFs inet::ieee80211::HtTxOpFs inet::ieee80211::McfFs inet::ieee80211::PcfFs inet::ieee80211::TxOpFs

Public Member Functions

virtual ~AlternativesFs ()
 
 AlternativesFs (std::vector< IFrameSequence * > elements, std::function< int(AlternativesFs *, FrameSequenceContext *)> selector)
 
virtual int getStep ()
 
virtual int selectSequence (FrameSequenceContext *context)
 
virtual void startSequence (FrameSequenceContext *context, int firstStep) override
 
virtual IFrameSequenceStepprepareStep (FrameSequenceContext *context) override
 
virtual bool completeStep (FrameSequenceContext *context) override
 
virtual std::string getHistory () const override
 
- Public Member Functions inherited from inet::ieee80211::IFrameSequence
virtual ~IFrameSequence ()
 

Protected Attributes

int firstStep = -1
 
int step = -1
 
int elementIndex = -1
 
std::vector< IFrameSequence * > elements
 
std::function< int(AlternativesFs *, FrameSequenceContext *)> selector
 

Constructor & Destructor Documentation

◆ ~AlternativesFs()

inet::ieee80211::AlternativesFs::~AlternativesFs ( )
virtual
203 {
204  for (auto element : elements)
205  delete element;
206 }

◆ AlternativesFs()

inet::ieee80211::AlternativesFs::AlternativesFs ( std::vector< IFrameSequence * >  elements,
std::function< int(AlternativesFs *, FrameSequenceContext *)>  selector 
)

Member Function Documentation

◆ completeStep()

bool inet::ieee80211::AlternativesFs::completeStep ( FrameSequenceContext context)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

190 {
191  step++;
192  return elements[elementIndex]->completeStep(context);
193 }

◆ getHistory()

std::string inet::ieee80211::AlternativesFs::getHistory ( ) const
overridevirtual

Implements inet::ieee80211::IFrameSequence.

196 {
197  ASSERT(step != -1);
198  ASSERT(0 <= elementIndex && (size_t)elementIndex < elements.size());
199  return elements[elementIndex]->getHistory();
200 }

◆ getStep()

virtual int inet::ieee80211::AlternativesFs::getStep ( )
inlinevirtual
106 { return firstStep + step; }

◆ prepareStep()

IFrameSequenceStep * inet::ieee80211::AlternativesFs::prepareStep ( FrameSequenceContext context)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

185 {
186  return elements[elementIndex]->prepareStep(context);
187 }

◆ selectSequence()

virtual int inet::ieee80211::AlternativesFs::selectSequence ( FrameSequenceContext context)
inlinevirtual
107 { return selector(this, context); }

Referenced by startSequence().

◆ startSequence()

void inet::ieee80211::AlternativesFs::startSequence ( FrameSequenceContext context,
int  firstStep 
)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

177 {
178  this->firstStep = firstStep;
179  step = 0;
180  elementIndex = selectSequence(context);
181  elements[elementIndex]->startSequence(context, firstStep);
182 }

Member Data Documentation

◆ elementIndex

int inet::ieee80211::AlternativesFs::elementIndex = -1
protected

◆ elements

std::vector<IFrameSequence *> inet::ieee80211::AlternativesFs::elements
protected

◆ firstStep

int inet::ieee80211::AlternativesFs::firstStep = -1
protected

Referenced by startSequence().

◆ selector

std::function<int(AlternativesFs *, FrameSequenceContext *)> inet::ieee80211::AlternativesFs::selector
protected

◆ step

int inet::ieee80211::AlternativesFs::step = -1
protected

The documentation for this class was generated from the following files:
inet::ieee80211::AlternativesFs::elements
std::vector< IFrameSequence * > elements
Definition: GenericFrameSequences.h:99
inet::ieee80211::AlternativesFs::selectSequence
virtual int selectSequence(FrameSequenceContext *context)
Definition: GenericFrameSequences.h:107
inet::ieee80211::AlternativesFs::elementIndex
int elementIndex
Definition: GenericFrameSequences.h:98
inet::ieee80211::AlternativesFs::firstStep
int firstStep
Definition: GenericFrameSequences.h:96
inet::ieee80211::AlternativesFs::selector
std::function< int(AlternativesFs *, FrameSequenceContext *)> selector
Definition: GenericFrameSequences.h:100
inet::ieee80211::AlternativesFs::step
int step
Definition: GenericFrameSequences.h:97