12#ifndef WSFTIMEDELAYQUEUE_HPP
13#define WSFTIMEDELAYQUEUE_HPP
15#include "wsf_export.h"
68 : mTimeRequired(aTimeRequired)
87 double mTimeRequired{0.0};
106 virtual void TurnOff(
double aSimTime);
108 virtual void TurnOn(
double aSimTime);
143 void Purge()
override;
148 std::deque<Request*> mQueue;
155 void Purge()
override;
160 std::deque<Request*> mQueue;
167 void Purge()
override;
172 std::priority_queue<Request*> mQueue;
189 size_t mServerIndex{0};
190 size_t mPlatformIndex{0};
191 unsigned int mEventEpoch{0};
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
EventDisposition
Definition WsfEvent.hpp:37
Definition WsfScriptContext.hpp:71
CompleteRequestEvent()=default
EventDisposition Execute() override
Definition WsfTimeDelayQueue.cpp:435
Adapter class for a First-In, First-Out (FIFO) queue.
Definition WsfTimeDelayQueue.hpp:141
void Push(Request *aRequestPtr) override
Definition WsfTimeDelayQueue.cpp:322
void Purge() override
Definition WsfTimeDelayQueue.cpp:310
Request * Pop() override
Definition WsfTimeDelayQueue.cpp:328
Adapter class for a Last-In, First-Out (LIFO) queue.
Definition WsfTimeDelayQueue.hpp:153
void Purge() override
Definition WsfTimeDelayQueue.cpp:344
void Push(Request *aRequestPtr) override
Definition WsfTimeDelayQueue.cpp:355
Request * Pop() override
Definition WsfTimeDelayQueue.cpp:361
Adapter class for a priority queue.
Definition WsfTimeDelayQueue.hpp:165
Request * Pop() override
Definition WsfTimeDelayQueue.cpp:397
void Push(Request *aRequestPtr) override
Definition WsfTimeDelayQueue.cpp:390
void Purge() override
Definition WsfTimeDelayQueue.cpp:378
A queue of pending requests that have not been assigned to a server.
Definition WsfTimeDelayQueue.hpp:129
virtual void Push(Request *aRequestPtr)=0
virtual Request * Pop()=0
virtual ~RequestQueue()=default
Definition WsfTimeDelayQueue.hpp:63
Request(double aTimeRequired)
Definition WsfTimeDelayQueue.hpp:67
void SetTimeRequired(double aTimeRequired)
Set the amount of time needed to complete the request.
Definition WsfTimeDelayQueue.hpp:83
virtual bool CompleteRequest(double aSimTime)=0
double TimeRequired() const
Get the amount of time needed to complete the request.
Definition WsfTimeDelayQueue.hpp:80
virtual ~Request()=default
WsfPlatform * mPlatformPtr
Pointer to the platform that owns the queue.
Definition WsfTimeDelayQueue.hpp:200
QueuingMethod mQueuingMethod
The method of queuing requests when a server is not available.
Definition WsfTimeDelayQueue.hpp:210
virtual void SubmitRequest(double aSimTime, Request *aRequestPtr)
Definition WsfTimeDelayQueue.cpp:240
RequestQueue * mPendingQueuePtr
Pointer to the adapter that implements the queuing methodology.
Definition WsfTimeDelayQueue.hpp:213
void SetNumberOfServers(int aNumberOfServers)
Definition WsfTimeDelayQueue.cpp:227
WsfPlatform * GetPlatform() const
Return the platform associated with the request queue.
Definition WsfTimeDelayQueue.hpp:124
virtual Request * CompleteRequest(double aSimTime, Request *aRequestPtr, size_t aServerIndex)
Definition WsfTimeDelayQueue.cpp:76
unsigned int GetEventEpoch() const
Return the current event scheduling epoch.
Definition WsfTimeDelayQueue.hpp:121
unsigned int mEventEpoch
The current event scheduling epoch.
Definition WsfTimeDelayQueue.hpp:216
WsfTimeDelayQueue()=default
WsfTimeDelayQueue & operator=(const WsfTimeDelayQueue &)=delete
virtual WsfTimeDelayQueue * Clone() const
Create a clone of this object.
Definition WsfTimeDelayQueue.cpp:60
virtual bool Initialize(double aSimTime, WsfPlatform *aPlatformPtr, WsfPlatformPart *aPlatformPartPtr, WsfScriptContext *aContextPtr)
Definition WsfTimeDelayQueue.cpp:113
virtual bool ProcessInput(UtInput &aInput)
Definition WsfTimeDelayQueue.cpp:171
virtual void TurnOn(double aSimTime)
Definition WsfTimeDelayQueue.cpp:294
WsfVariable< int > mNumberOfServers
The number of servers.
Definition WsfTimeDelayQueue.hpp:203
virtual void TurnOff(double aSimTime)
Definition WsfTimeDelayQueue.cpp:284
QueuingMethod
Queuing method.
Definition WsfTimeDelayQueue.hpp:52
@ cFIRST_IN_FIRST_OUT
First-in, first-out queuing.
Definition WsfTimeDelayQueue.hpp:53
@ cNONE
No queuing.
Definition WsfTimeDelayQueue.hpp:56
@ cLAST_IN_FIRST_OUT
Last-in, first-out queuing.
Definition WsfTimeDelayQueue.hpp:54
@ cPRIORITY
Priority queuing.
Definition WsfTimeDelayQueue.hpp:55
std::vector< Request * > mServers
Definition WsfTimeDelayQueue.hpp:207
Definition WsfVariable.hpp:149
WSF_EXPORT WsfSimulation & GetSimulation(WsfDisInterface *aInterfacePtr)
Definition WsfDisUtil.cpp:63