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

#include <GenericFrameSequences.h>

Inheritance diagram for inet::ieee80211::SequentialFs:
inet::ieee80211::IFrameSequence

Public Member Functions

virtual ~SequentialFs ()
 
 SequentialFs (std::vector< IFrameSequence * > elements)
 
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
 

Constructor & Destructor Documentation

◆ ~SequentialFs()

inet::ieee80211::SequentialFs::~SequentialFs ( )
virtual
65 {
66  for (auto element : elements)
67  delete element;
68 }

◆ SequentialFs()

inet::ieee80211::SequentialFs::SequentialFs ( std::vector< IFrameSequence * >  elements)
13  :
15 {
16 }

Member Function Documentation

◆ completeStep()

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

Implements inet::ieee80211::IFrameSequence.

43 {
44  step++;
45  return elements[elementIndex]->completeStep(context);
46 }

◆ getHistory()

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

Implements inet::ieee80211::IFrameSequence.

49 {
50  ASSERT(step != -1);
51  std::string history;
52  for (int i = 0; i < std::min(elementIndex + 1, (int)elements.size()); i++) {
53  auto elementHistory = elements.at(i)->getHistory();
54  if (!elementHistory.empty()) {
55  if (!history.empty())
56  history += " ";
57  history += elementHistory;
58  }
59  }
60  history = "(" + history + ")";
61  return history;
62 }

◆ prepareStep()

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

Implements inet::ieee80211::IFrameSequence.

28 {
29  while (elementIndex < (int)elements.size()) {
30  auto elementStep = elements[elementIndex]->prepareStep(context);
31  if (elementStep != nullptr)
32  return elementStep;
33  else {
34  elementIndex++;
35  if (elementIndex < (int)elements.size())
36  elements[elementIndex]->startSequence(context, firstStep + step);
37  }
38  }
39  return nullptr;
40 }

◆ startSequence()

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

Implements inet::ieee80211::IFrameSequence.

19 {
20  this->firstStep = firstStep;
21  step = 0;
22  elementIndex = 0;
23  if (elementIndex < (int)(elements.size()))
24  elements[elementIndex]->startSequence(context, firstStep);
25 }

Member Data Documentation

◆ elementIndex

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

◆ elements

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

◆ firstStep

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

Referenced by prepareStep(), and startSequence().

◆ step

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

The documentation for this class was generated from the following files:
inet::sctp::min
double min(const double a, const double b)
Returns the minimum of a and b.
Definition: SctpAssociation.h:261
inet::ieee80211::SequentialFs::elementIndex
int elementIndex
Definition: GenericFrameSequences.h:30
inet::ieee80211::SequentialFs::step
int step
Definition: GenericFrameSequences.h:29
inet::ieee80211::SequentialFs::elements
std::vector< IFrameSequence * > elements
Definition: GenericFrameSequences.h:31
inet::ieee80211::SequentialFs::firstStep
int firstStep
Definition: GenericFrameSequences.h:28