15#ifndef WSFTASKMANAGER_HPP
16#define WSFTASKMANAGER_HPP
23#include "UtCallback.hpp"
24#include "UtCallbackHolder.hpp"
27#include "wsf_export.h"
59 virtual void Update(
double aSimTime) {}
121 size_t aReceipientIndex,
187 void TurnOff(
double aSimTime)
override;
188 void TurnOn(
double aSimTime)
override;
189 void Update(
double aSimTime)
override;
203 virtual bool CancelTask(
double aSimTime,
unsigned int aTaskId);
205 virtual void CancelTask(
double aSimTime,
WsfTask& aTask,
bool aSendCancelMessage);
211 size_t aAssigneeIndex);
251 static TaskList::iterator FindTask(TaskList& aTaskList,
252 size_t aAssigneeIndex,
257 static TaskList::iterator FindTask(TaskList& aTaskList,
unsigned int aTaskId);
259 static TaskList::iterator FindTask(TaskList& aTaskList,
unsigned int aTaskId,
size_t aAssigneeIndex);
325 size_t mPlatformIndex;
357 unsigned int mTaskId;
487 virtual void PurgeReceivedTask(
double aSimTime,
WsfTask& aTask);
489 virtual void PurgeTransmittedTask(
double aSimTime,
WsfTask& aTask);
491 void UpdatePendingReceivedTasks(
double aSimTime,
const WsfLocalTrack* aLocalTrackPtr);
493 void UpdateSensorRequestList(
double aSimTime,
499 virtual void UpdateTaskCorrelation(
double aSimTime,
WsfTask& aTask);
505 virtual void LocalTrackDropped(
double aSimTime,
const WsfLocalTrack* aLocalTrackPtr);
507 virtual void LocalTrackInitiated(
double aSimTime,
const WsfLocalTrack* aLocalTrackPtr,
const WsfTrack* aRawTrackPtr);
509 virtual void LocalTrackUpdated(
double aSimTime,
const WsfLocalTrack* aLocalTrackPtr,
const WsfTrack* aRawTrackPtr);
511 void TrackManagerChanged(
double aSimTime,
WsfTrackManager* aNewManagerPtr);
517 UtScript* mOnTaskAssignScriptPtr;
518 UtScript* mOnTaskCancelScriptPtr;
519 UtScript* mOnTaskCompleteScriptPtr;
520 UtScript* mOnTaskCompleteSentScriptPtr;
521 UtScript* mOnTaskAssignSentScriptPtr;
522 UtScript* mOnTaskCancelSentScriptPtr;
523 UtScript* mOnOperatingLevelChangeScriptPtr;
525 UtScriptClass* mTaskClassPtr;
526 UtScriptClass* mTrackClassPtr;
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_TASK_MANAGER
An extension to WsfTaskManager.
Definition WsfComponentRoles.hpp:145
@ cWSF_COMPONENT_TASK_MANAGER_COMPONENT
A Component on a WsfTaskManager.
Definition WsfComponentRoles.hpp:146
ut::script::Data UtScriptData
Definition WsfScriptContext.hpp:47
aObjectPtr Update(simTime)
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfAssociationMessage.hpp:43
Definition WsfComponentList.hpp:197
EventDisposition
Definition WsfEvent.hpp:37
Definition WsfLocalTrack.hpp:32
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
Definition WsfProcessorComponent.hpp:30
WsfProcessor(const WsfScenario &aScenario)
Definition WsfProcessor.cpp:25
Definition WsfRandomVariable.hpp:33
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
WsfScriptProcessor(const WsfScenario &aScenario)
Definition WsfScriptProcessor.cpp:30
Definition WsfSensor.hpp:92
A 'status message' provides status about an operation.
Definition WsfStatusMessage.hpp:29
Definition WsfTaskAssignMessage.hpp:45
Definition WsfTaskCancelMessage.hpp:32
Definition WsfTaskControlMessage.hpp:36
Definition WsfTaskManager.hpp:55
virtual void Update(double aSimTime)
Definition WsfTaskManager.hpp:59
virtual void TaskCompleted(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:69
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfTaskManager.hpp:60
virtual bool ReleaseResource(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:65
virtual void TaskCorrelated(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:67
virtual bool AcquireResource(double aSimTime, WsfTask &aTask, const WsfTrack &aTrack, bool &aStatusOk)
Definition WsfTaskManager.hpp:61
virtual void TaskCanceled(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:68
virtual bool AssignTask(double aSimTime, const WsfTrack &aTrack, const WsfTask &aTask, bool aLockTrack=true)
Definition WsfTaskManager.hpp:71
virtual void TrackDropped(double aSimTime, const WsfTrackId &aTrackId)
Definition WsfTaskManager.hpp:79
virtual bool ProcessTaskStatusMessage(double aSimTime, const WsfTaskStatusMessage &aMessage)
Definition WsfTaskManager.hpp:82
virtual void PurgeReceivedTask(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:76
virtual void PurgeTransmittedTask(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.hpp:77
virtual bool ProcessAssociationMessage(double aSimTime, const WsfAssociationMessage &aMessage)
Definition WsfTaskManager.hpp:81
Definition WsfTaskManager.hpp:317
EventDisposition Execute() override
Definition WsfTaskManager.cpp:2910
EventBase(double aSimTime, WsfTaskManager *aManagerPtr)
Definition WsfTaskManager.cpp:2903
virtual EventDisposition ExecuteEvent(WsfTaskManager *aTaskManagerPtr)=0
TaskCompleteEvent(double aSimTime, WsfTaskManager *aManagerPtr, WsfTrackId aTrackId, WsfStringId aTaskType, WsfStringId aResourceName, WsfStringId aSubStatus)
Definition WsfTaskManager.cpp:2923
EventDisposition ExecuteEvent(WsfTaskManager *aManagerPtr) override
Definition WsfTaskManager.cpp:2937
TrackUpdateEvent(double aSimTime, WsfTaskManager *aManagerPtr, unsigned int aTaskId)
Definition WsfTaskManager.cpp:2945
EventDisposition ExecuteEvent(WsfTaskManager *aManagerPtr) override
Definition WsfTaskManager.cpp:2951
Definition WsfTaskManager.hpp:98
virtual void TaskAssigned(double aSimTime, const WsfTrack &aTrack, WsfTask &aTask)
Definition WsfTaskManager.cpp:1009
size_t AssigneeForTask(const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName) const
Definition WsfTaskManager.cpp:1440
void AssigneesForTask(const WsfTrackId &aTrackId, WsfStringId aTaskType, std::vector< size_t > &aAssignees) const
Definition WsfTaskManager.cpp:1417
void MessageAcknowledged(unsigned int aSerialNumber)
Definition WsfTaskManager.cpp:1670
void TurnOff(double aSimTime) override
Definition WsfTaskManager.cpp:623
bool ReceiveMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfTaskManager.cpp:519
std::list< SensorRequest > SensorRequestList
Definition WsfTaskManager.hpp:165
bool ProcessMessage(double aSimTime, const WsfMessage &aMessage) override
Definition WsfTaskManager.cpp:480
WsfTaskManager & operator=(const WsfTaskManager &)=delete
bool GetMessageSender(const WsfMessage &aMessage, size_t &aSenderIndex, WsfStringId &aRcvrCommName)
Given a message, get the platform index of the sender and the local device on which the message was r...
Definition WsfTaskManager.cpp:1619
WsfScenario * mScenarioPtr
Definition WsfTaskManager.hpp:425
virtual void TaskCorrelated(double aSimTime, WsfTask &aTask)
Called when a task has been correlated with a local track.
Definition WsfTaskManager.cpp:2593
virtual bool ChangeOperatingLevel(double aSimTime, WsfStringId aName, int aLevel, WsfPlatform *aAssigneePtr, WsfStringId aCommName)
Change the operating level for a given subordinate.
Definition WsfTaskManager.cpp:1252
void PlatformDeleted(WsfPlatform *aPlatformPtr) override
Definition WsfTaskManager.cpp:440
WsfRandomVariable mTimeToRecognizeMessage
The amount of time it takes to recognize a message.
Definition WsfTaskManager.hpp:460
WsfComponentList::RoleIterator< WsfTaskManagerComponent > RoleIterator
typedef to simplify iteration for calling WsfTaskManagerComponent methods.
Definition WsfTaskManager.hpp:101
SensorRequestList mSensorRequestList
Definition WsfTaskManager.hpp:414
unsigned int mNextTaskId
The next task ID to be assigned.
Definition WsfTaskManager.hpp:469
WsfTrackManager * mTrackManagerPtr
The track manager that owns the tracks.
Definition WsfTaskManager.hpp:407
std::set< WsfTrackId > mPendingRcvdTasks
The set of assigned track ID's that are awaiting correlation with local track ID's.
Definition WsfTaskManager.hpp:450
virtual bool ProcessTaskAssignMessage(double aSimTime, const WsfTaskAssignMessage &aMessage)
Definition WsfTaskManager.cpp:2021
virtual bool AcquireResource(double aSimTime, WsfTask &aTask, const WsfTrack &aTrack)
Definition WsfTaskManager.cpp:792
virtual void TaskAssignSent(double aSimTime, const WsfTrack &aTrack, WsfTask &aTask)
Definition WsfTaskManager.cpp:994
UtCallbackHolder mCallbacks
Definition WsfTaskManager.hpp:427
virtual bool ReleaseResource(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.cpp:873
TrackUpdateStrategy
Definition WsfTaskManager.hpp:104
@ cBATCH
Definition WsfTaskManager.hpp:106
@ cDEFAULT
Definition WsfTaskManager.hpp:105
WsfStringId SelectCommDevice(WsfPlatform *aAssigneePtr, WsfStringId aCommName)
Definition WsfTaskManager.cpp:1805
UtCallbackListN< void(double, WsfTask &, const WsfTrack &)> OnTaskAssignSent
Executes when a task assignment is sent.
Definition WsfTaskManager.hpp:284
int TasksAssignedTo(size_t aAssigneeIndex, const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName) const
Definition WsfTaskManager.cpp:1478
void CheckMessageAcknowledged(double aSimTime, unsigned int aSerialNumber)
Definition WsfTaskManager.cpp:1680
PendingMessageList mPendingMessageList
Definition WsfTaskManager.hpp:412
std::set< WsfSensor * > mSensorsTurnedOn
The sensors that have been implicitly turned on.
Definition WsfTaskManager.hpp:423
double mTimeLastTaskAssigned
The time a task was last sent.
Definition WsfTaskManager.hpp:481
bool mShowTaskMessages
True if task related messages are to be displayed.
Definition WsfTaskManager.hpp:472
std::list< WsfTask > TaskList
Definition WsfTaskManager.hpp:109
virtual bool ProcessTrackDropMessage(double aSimTime, const WsfTrackDropMessage &aMessage)
any sensor tasks for the dropped track will be reported complete/successful
Definition WsfTaskManager.cpp:2398
std::list< PendingMessage > PendingMessageList
Definition WsfTaskManager.hpp:136
bool SendTaskMessage(double aSimTime, const WsfMessage &aMessage, size_t aRecipientIndex, WsfStringId aCommName, bool aReliable)
Definition WsfTaskManager.cpp:1836
virtual bool ProcessTaskStatusMessage(double aSimTime, const WsfTaskStatusMessage &aMessage)
Definition WsfTaskManager.cpp:2263
int OperatingLevelFor(WsfStringId aConditionName) const
Return the current operating level for the specified condition name or status.
Definition WsfTaskManager.cpp:1457
std::list< ActiveTrack > TrackList
Definition WsfTaskManager.hpp:150
virtual bool CreateDelayTask(double aSimTime, double aDelayTime, const WsfTrack &aTrack, WsfStringId aTaskType)
Definition WsfTaskManager.cpp:1226
const char * GetScriptClassName() const override
Definition WsfTaskManager.cpp:244
void TurnOn(double aSimTime) override
Definition WsfTaskManager.cpp:631
WsfProcessor * Clone() const override
A virtual copy constructor.
Definition WsfTaskManager.cpp:252
TaskList mPurgedXmtdTaskList
Definition WsfTaskManager.hpp:437
double TimeTaskAssigned(const WsfTrackId &aTrackId, WsfStringId aTaskType, size_t aAssigneeIndex) const
Return the simulation time when a task was assigned.
Definition WsfTaskManager.cpp:1553
UtCallbackListN< void(double, WsfTask &)> OnTaskCompleted
Executes when an task complete is received.
Definition WsfTaskManager.hpp:281
UtCallbackListN< void(double, WsfTask &, const WsfTrack &)> OnTaskAssigned
Executes when an assigned task is accepted (by this processor).
Definition WsfTaskManager.hpp:275
bool DropFromPurgedTaskList(TaskList &aPurgedTaskList, size_t aAssignerIndex, unsigned int aTaskId)
Definition WsfTaskManager.cpp:1055
TrackList mActiveTrackList
Definition WsfTaskManager.hpp:413
TaskList mXmtdTaskList
Tasks I have sent to others.
Definition WsfTaskManager.hpp:430
virtual bool CancelTask(double aSimTime, unsigned int aTaskId)
Definition WsfTaskManager.cpp:1107
TaskList mRcvdTaskList
Tasks I have received from others.
Definition WsfTaskManager.hpp:440
bool Initialize(double aSimTime) override
Definition WsfTaskManager.cpp:285
virtual bool ProcessTrackMessage(double aSimTime, const WsfTrackMessage &aMessage)
Definition WsfTaskManager.cpp:2442
UtCallbackListN< void(double, WsfTask &, WsfStringId)> OnTaskCompleteSent
Executes when a task complete is sent.
Definition WsfTaskManager.hpp:287
~WsfTaskManager() override=default
bool ProcessInput(UtInput &aInput) override
Definition WsfTaskManager.cpp:362
std::list< ActiveTrack >::iterator TrackListIter
Definition WsfTaskManager.hpp:151
bool Initialize2(double aSimTime) override
Definition WsfTaskManager.cpp:296
TaskList mPurgedRcvdTaskList
Definition WsfTaskManager.hpp:447
TaskList & AssignedTaskList()
Return the list of tasks this TaskManager has assigned.
Definition WsfTaskManager.hpp:246
std::unique_ptr< WsfTimeDelayQueue > mThinkerPtr
The pointer to the 'thinker'.
Definition WsfTaskManager.hpp:410
virtual void TaskCompleted(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.cpp:974
bool ShowTaskMessages() const
Definition WsfTaskManager.hpp:308
UtCallbackListN< void(double, WsfTask &)> OnTaskCancelSent
Executes when a task cancel is sent.
Definition WsfTaskManager.hpp:290
const TrackList & ActiveTrackList() const
Return the list of tasks this TaskManager has active.
Definition WsfTaskManager.hpp:306
double mCommRetryInterval
The amount of time between attempts to retry failed communications.
Definition WsfTaskManager.hpp:463
int TasksAssignedFor(const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName) const
Definition WsfTaskManager.cpp:1513
std::map< WsfStringId, int > mOperatingLevels
Definition WsfTaskManager.hpp:420
virtual void TrackDropped(double aSimTime, const WsfTrackId &aTrackId)
Definition WsfTaskManager.cpp:1037
double mTrackUpdateInterval
Definition WsfTaskManager.hpp:457
UtCallbackListN< void(double, WsfTask &)> OnTaskCanceled
Executes when a task cancel message is processed.
Definition WsfTaskManager.hpp:278
virtual bool ProcessTaskCancelMessage(double aSimTime, const WsfTaskCancelMessage &aMessage)
Definition WsfTaskManager.cpp:2181
virtual void TaskCanceled(double aSimTime, WsfTask &aTask)
Definition WsfTaskManager.cpp:954
const int * GetComponentRoles() const override
Definition WsfTaskManager.cpp:257
double SendTrackUpdate(double aSimTime, unsigned int aTaskId)
Definition WsfTaskManager.cpp:1754
int TasksReceivedFor(const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName) const
Definition WsfTaskManager.cpp:1536
virtual bool ProcessAssociationMessage(double aSimTime, const WsfAssociationMessage &aMessage)
Definition WsfTaskManager.cpp:1976
double TimeLastTaskAssigned() const
Definition WsfTaskManager.hpp:263
TaskList & ReceivedTaskList()
Return the list of tasks this TaskManager has received.
Definition WsfTaskManager.hpp:249
virtual bool ProcessTaskControlMessage(double aSimTime, const WsfTaskControlMessage &aMessage)
Definition WsfTaskManager.cpp:2235
double TimeLastTaskReceived() const
Definition WsfTaskManager.hpp:267
virtual bool ReportTaskProgress(double aSimTime, const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName, WsfStringId aSubStatus)
Definition WsfTaskManager.cpp:1363
WsfTaskManager(WsfScenario &aScenario, const std::string &aClassName="WsfTaskManager")
Constructor.
Definition WsfTaskManager.cpp:146
bool PreInitialize(double aSimTime) override
Definition WsfTaskManager.cpp:277
virtual bool ReportTaskComplete(double aSimTime, const WsfTrackId &aTrackId, WsfStringId aTaskType, WsfStringId aResourceName, WsfStringId aSubStatus)
Definition WsfTaskManager.cpp:1283
virtual bool AssignTask(double aSimTime, const WsfTrack &aTrack, const WsfTask &aTask, bool aLockTrack=true)
Definition WsfTaskManager.cpp:655
virtual void OperatingLevelChanged(double aSimTime, std::string aLevel)
Definition WsfTaskManager.cpp:1024
WsfStringId mTrackProcessorName
The name of the track processor whose track manager is the source of tracks.
Definition WsfTaskManager.hpp:453
double mTimeLastTaskReceived
The time a task was last received.
Definition WsfTaskManager.hpp:484
TrackUpdateStrategy mTrackUpdateStrategy
Determine how track updates are sent.
Definition WsfTaskManager.hpp:478
bool mShowUncompletedTasks
True if leak termination data is to be shown.
Definition WsfTaskManager.hpp:475
void * QueryInterface(int aRole) override
Definition WsfTaskManager.cpp:266
int mCommRetryAttempts
The number of attempts to retry failed communications.
Definition WsfTaskManager.hpp:466
Attributes of a task-able resource.
Definition WsfTaskResource.hpp:30
Definition WsfTaskStatusMessage.hpp:42
A class that defines a task to be performed.
Definition WsfTask.hpp:28
A specialization of WsfMessage that represents the message generated to indicate that a track has bee...
Definition WsfTrackDropMessage.hpp:31
Definition WsfTrackId.hpp:33
Definition WsfTrackManager.hpp:62
Definition WsfTrackMessage.hpp:28
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfTaskManager.hpp:142
WsfTrackId mSensorTrackId
The sensor track that is being generated as a result of the tracking task.
Definition WsfTaskManager.hpp:148
WsfStringId mSensorName
The name of the sensor that is generating the track.
Definition WsfTaskManager.hpp:146
WsfTrackId mTaskTrackId
The track ID of the track that was supplied to WsfSensor::StartTracking.
Definition WsfTaskManager.hpp:144
WsfStringId mCommName
Definition WsfTaskManager.hpp:131
bool mSuppressTimeoutMessage
Definition WsfTaskManager.hpp:134
size_t mRecipientIndex
Definition WsfTaskManager.hpp:130
PendingMessage(double aSimTime, WsfTaskManager *aManagerPtr, const WsfMessage &aMessage, size_t aReceipientIndex, WsfStringId aCommName, int aRetryAttempts)
Definition WsfTaskManager.cpp:2815
double mTimeSent
Definition WsfTaskManager.hpp:128
PendingMessage & operator=(const PendingMessage &aRhs)
Definition WsfTaskManager.cpp:2880
int mRetryAttempts
Definition WsfTaskManager.hpp:132
WsfMessage * mMessagePtr
Definition WsfTaskManager.hpp:129
Definition WsfTaskManager.hpp:157
WsfTrackId mSensorTrackId
The track ID.
Definition WsfTaskManager.hpp:159
WsfStringId mModeNameId
The mode for the sensor.
Definition WsfTaskManager.hpp:163
WsfSensor * mSensorPtr
The pointer to the sensor.
Definition WsfTaskManager.hpp:161