VR-Forces 4.0.4 Class Documentation
Public Member Functions | Private Member Functions
DtSimTaskManager Class Reference

Class Description: DtSimTaskManager manages the bookkeeping associated with starting, completing, clearing, and skipping tasks. More...

Inheritance diagram for DtSimTaskManager:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DtSimTaskManager (const DtString &name, DtVrfObject *vrfObject, DtReaderWriterRegistry *parentRegistry=0)
 constructor
 DtSimTaskManager (const DtSimTaskManager &orig, DtReaderWriterRegistry *parentRegistry=0)
 copy constructor
const DtSimTaskManageroperator= (const DtSimTaskManager &orig)
 assignment operator
virtual ~DtSimTaskManager ()
 destructor
virtual bool init ()
 Calls base class init(), and registerRadioMessageCallbacks().
virtual void tick ()
 Sends awaitingTask message to plan engine if needed.
virtual void addTaskProcessor (int taskType, DtTaskControllerComponent *taskController)
 Registers a task controller as a processor for a specific task type.
virtual void removeTaskProcessor (int taskType, DtTaskControllerComponent *taskController)
 Removes a task controller that has previously registered for as a task processor for a specific task type.
virtual void removeAllReferencesToController (DtTaskControllerComponent *taskController)
 Removes all task processors that are registered by this controller.
virtual std::vector< int > capableTaskIds () const
virtual bool transitionTask (DtTaskMessage &taskMsg, DtSimTaskStatePtr taskState)
 Transitions the task from controller state to another.
virtual bool taskActive (int taskId) const
virtual void registerInterfaceMessageCallbacks ()
 Registers a callback for Skip Task messages.
virtual void registerRadioMessageCallbacks ()
 Register for TaskedBySuperior and DtClearTask radio messages.
virtual void taskNotify (const DtSimTask &task, const DtSimComponent &notifier)
 Called by controller component when task is received.
virtual void skipTask (bool fromSuperior=false)
 Called by controller component when task is received.
virtual void taskComplete (const DtVrfObjectMessage &radioMsg, bool success)
 Called by controller component when task is complete.
virtual void sendTaskCompleted (const DtTaskMessage &taskMsg, bool success)
 send a task complete report message to the originator of a task (as indicated by the sender field of the task message sent)
void awaitingTask (int taskIdJustCompleted=-1)
 Calls awaitingTask on the DtPlan via the DtVrfObjectPlanManager Specify the task ID of the task that just completed, if available.
virtual void setTaskedBySuperior ()
 Equivalent to localState()->setIndependentlyTasked(false) for local entities, but deriving pseudo aggregates do more...
virtual bool requestTaskNeeded () const
 Will we ask the plan manager for a task this tick.
virtual void setRequestTaskNeeded (bool requestTaskNeeded)
 Used within the task manager.
virtual bool independentlyTasked () const
 Are we tasked independently (plan or user) or by a superior (pseudo-aggregate) entity?
virtual void setIndependentlyTasked (bool independentlyTasked)
 Sets independentlyTasked flag.
virtual bool currentTasksMatchEchelonId ()
 Returns true only if all current tasks are addressed to the current echelon ID of myVrfObjecet, or if the current echelon ID is blank.
virtual bool isPseudoAggregate () const
 Indicates whether or not the type of task manager created supports pseudo-aggregates.
virtual DtString type () const
 Returns the type of task manager object.
virtual DtVrfObjectvrfObject () const
 Returns a pointer to the simObject this task manager is attached to.
virtual void setVrfObject (DtVrfObject *vrfObject)
 Sets myVrfObject.
virtual bool executeTask (DtTaskMessage &taskMsg)
 Starts the execution of this task.
virtual bool executeTask (DtTaskMessage &taskMsg, DtSimTaskStatePtr taskState)
 Starts the execution of this task.

Private Member Functions

 DtSimTaskManager ()
 Not implemented.
typedef std::map< int,
DtTaskControllerComponent * > 
DtTaskProcessorMap
 Stores all the registered task processor interfaces, indexed by task type they process.
DtVrfObjectmyVrfObject
 Stores all the registered task processor interfaces, indexed by task type they process.
std::vector
< DtOnTaskNotifyCallbackInfo
myOnTaskNotifyCallbacks
 Stores all the registered task processor interfaces, indexed by task type they process.
bool myHaveRegisteredOrgMgrCallback
 Stores all the registered task processor interfaces, indexed by task type they process.
DtTaskProcessorMap myTaskProcessorMap
 Stores all the registered task processor interfaces, indexed by task type they process.
bool mySendSkipTaskMessages
 Determines whether processSubordinateRemoved will send a skip task message.
int myNumberOfTaskSubscriptions
 Counter which holds the number of times the current task status has been subscribed to minus the number of times it has been unsubscribed.
bool mySendTasksNextTick
 Set to true if the task manager should send the list of current tasks next tick.
static DtSimTaskManagerFactorytheFactory
 Stores all the registered task processor interfaces, indexed by task type they process.
virtual void setSendSkipTaskMessages (bool sendSkipTaskMessages)
 Accessor/mutator for mySendSkipTaskMessages.
virtual bool sendSkipTaskMessages ()
 Stores all the registered task processor interfaces, indexed by task type they process.
virtual void addOnTaskNotifyCallback (DtOnTaskNotifyCallbackFcn fcn, void *userData)
 Registers callback to invoked after taskNotify() is called (at the point when an entity starts executing a new task).
virtual void removeOnTaskNotifyCallback (DtOnTaskNotifyCallbackFcn fcn, void *userData)
 Removes callback to invoked after taskNotify() is called (at the point when an entity starts executing a new task).
virtual void clearSubtask (int subtaskId)
 Locates DtTaskControllerComponent currently executing a task with the given subtaskId, and calls clearTask() on that component.
virtual DtTaskWithTaskStateListPtr topLevelTasks () const
virtual bool hasTopLevelTask () const
virtual bool taskTypesAreExclusive (int taskType1, int taskType2) const
virtual bool canExecuteTask (int) const
 True if this object will support the given task
static void taskedBySuperiorRequestCallback (DtSimMessage *msg, void *usrData)
 The manager will register a callback with the radio's msg executive requesting notification of Tasked By Superior Set Data Requests.
static void skipTaskCallback (DtSimMessage *msg, void *usr)
 The manager will register a callback with its simManager's msg executive requesting notification of Skip Task Interface Requests.
static void clearTaskCallback (DtSimMessage *msg, void *usr)
 Callback function for handling DtClearTask messages.
static void objectAboutToBeRemovedCallback (DtVrfObject *object, void *usr)
 Callback function for cleaning up task manager just before the host object is removed from the simulation.
static void subordinateRemoved (DtEntityIdentifier childEid, void *usr)
 Callback for handling subordinate (child) removed events.
static DtSimTaskManagercreator (const DtString &name, DtVrfObject *vrfObject, DtReaderWriterRegistry *parentRegistry)
 Stores all the registered task processor interfaces, indexed by task type they process.
static DtSimTaskManagerFactoryfactory ()
 A DtSimEntityFactory is allocated by the DtSimCreator, and this pointer is set.
static void setFactory (DtSimTaskManagerFactory *factory)
 Stores all the registered task processor interfaces, indexed by task type they process.
static void addSimTaskManagerCreatorFcn (const DtString &type, DtSimTaskManagerCreatorFcn fcn)
 Stores all the registered task processor interfaces, indexed by task type they process.
static DtSimTaskManagercreateTaskManager (const DtString &name, const DtString &type, DtVrfObject *vrfObject, DtReaderWriterRegistry *parentRegistry=0)
 Creates a new task manager, using the factory.
virtual void processClearTask (DtSimMessage *msg)
 Finds task controller currently tasked with task of type specified in clear task message and calls its clearTask() method.
virtual void processObjectAboutToBeRemoved (DtVrfObject *object)
 If the object is our host entity, calls clearTopLevelTask() to clean up any active tasks before the object is removed.
virtual bool clearAllTopLevelTasks ()
 Cancels all top level tasks currently executing on the entity.
virtual void clearConflictingTopLevelTasks (int taskType)
 Cancels any top level tasks that are running on the entity if they conflict with the specified task type.
virtual void onTaskNotify (const DtSimTask &task, const DtSimComponent &notifier)
 Hook function called at the end of taskNotify().
void processSubordinateRemoved (DtEntityIdentifier childEid)
 If we are currently tasked and former subordinate is not independently tasked, sends a skip task message to this former subordinate.
virtual void processTaskMessage (DtSimMessage *msg)
 Calls executeTask().
virtual std::vector< int > conflictingTaskTypes (int testTaskType) const
virtual void processRequestCurrentTasks (const DtVrfObjectMessage *msg)
 Stores all the registered task processor interfaces, indexed by task type they process.
virtual void processUnsubscribeCurrentTasks (const DtVrfObjectMessage *msg)
 Stores all the registered task processor interfaces, indexed by task type they process.
virtual void sendCurrentTasks ()
 Stores all the registered task processor interfaces, indexed by task type they process.
static void taskMessageCallback (DtSimMessage *msg, void *usr)
 Callback resisted with the local radio for all task messages.
static void requestCurrentTasksCallback (const DtVrfObjectMessage *msg, void *usr)
 Stores all the registered task processor interfaces, indexed by task type they process.
static void unsubscribeCurrentTasksCallback (const DtVrfObjectMessage *msg, void *usr)
 Stores all the registered task processor interfaces, indexed by task type they process.

Detailed Description

Class Description: DtSimTaskManager manages the bookkeeping associated with starting, completing, clearing, and skipping tasks.


Member Typedef Documentation

Stores all the registered task processor interfaces, indexed by task type they process.


Constructor & Destructor Documentation

Not implemented.

DtSimTaskManager::DtSimTaskManager ( const DtString name,
DtVrfObject vrfObject,
DtReaderWriterRegistry parentRegistry = 0 
)

constructor

DtSimTaskManager::DtSimTaskManager ( const DtSimTaskManager orig,
DtReaderWriterRegistry parentRegistry = 0 
)

copy constructor

virtual DtSimTaskManager::~DtSimTaskManager ( ) [virtual]

destructor


Member Function Documentation

const DtSimTaskManager& DtSimTaskManager::operator= ( const DtSimTaskManager orig)

assignment operator

virtual bool DtSimTaskManager::init ( ) [virtual]

Calls base class init(), and registerRadioMessageCallbacks().

virtual void DtSimTaskManager::tick ( ) [virtual]

Sends awaitingTask message to plan engine if needed.

virtual void DtSimTaskManager::addTaskProcessor ( int  taskType,
DtTaskControllerComponent taskController 
) [virtual]

Registers a task controller as a processor for a specific task type.

This controller will have its beginProcessingTask() method called whenever a task of this type is executed by this task manager. Only one component may be registered for any given task type at a time, and this call will replace any already existing controller for this task type. An object console warning will be displayed when a controller is replaced.

virtual void DtSimTaskManager::removeTaskProcessor ( int  taskType,
DtTaskControllerComponent taskController 
) [virtual]

Removes a task controller that has previously registered for as a task processor for a specific task type.

Removes all task processors that are registered by this controller.

virtual std::vector<int> DtSimTaskManager::capableTaskIds ( ) const [virtual]
Returns:
A vector of all the task IDs that have been registered with this task manager. These are all the task types that this entity is capable of carrying out.
virtual bool DtSimTaskManager::executeTask ( DtTaskMessage taskMsg) [virtual]

Starts the execution of this task.

This is the main entry point of an entity to start executing any task or subtask. The task will be passed off to any task controller that has registered to process the particular type of this task. Fills in the taskId of the task message with the newly assigned ID of the task.

Parameters:
taskStateIf present, used to convey information about the current execution state of the task (may be at some intermediate point in execution).
Returns:
True if the task was successfully started.
virtual bool DtSimTaskManager::executeTask ( DtTaskMessage taskMsg,
DtSimTaskStatePtr  taskState 
) [virtual]

Starts the execution of this task.

This is the main entry point of an entity to start executing any task or subtask. The task will be passed off to any task controller that has registered to process the particular type of this task. Fills in the taskId of the task message with the newly assigned ID of the task.

Parameters:
taskStateIf present, used to convey information about the current execution state of the task (may be at some intermediate point in execution).
Returns:
True if the task was successfully started.
virtual bool DtSimTaskManager::transitionTask ( DtTaskMessage taskMsg,
DtSimTaskStatePtr  taskState 
) [virtual]

Transitions the task from controller state to another.

Basically reissues the task with the same id to the same controller, using saved state. Currently used by the aggregate model resolution controller when transitioning from aggregated <-> dissaggregated states. When transitioning the task, if there is a plan in progress that is executing this task the plan will not be adandoned. Also, the newly issued task will maintain the same task id as the original task.

virtual bool DtSimTaskManager::taskActive ( int  taskId) const [virtual]
Returns:
True if a task with the specified task ID is currently active (executing) in the task manager.

Registers a callback for Skip Task messages.

Register for TaskedBySuperior and DtClearTask radio messages.

virtual void DtSimTaskManager::taskNotify ( const DtSimTask task,
const DtSimComponent notifier 
) [virtual]

Called by controller component when task is received.

Calls clearTask() on the currently tasked controller that has a top-level (non-subtask) task.

virtual void DtSimTaskManager::skipTask ( bool  fromSuperior = false) [virtual]

Called by controller component when task is received.

Calls clearTask() on the currently tasked controller that has a top-level (non-subtask) task. If fromSuperior is false, calls sendAwaitingTask().

virtual void DtSimTaskManager::taskComplete ( const DtVrfObjectMessage radioMsg,
bool  success 
) [virtual]

Called by controller component when task is complete.

Parameters:
successindicates whether the task was successfully completed or failed.
virtual void DtSimTaskManager::sendTaskCompleted ( const DtTaskMessage taskMsg,
bool  success 
) [virtual]

send a task complete report message to the originator of a task (as indicated by the sender field of the task message sent)

void DtSimTaskManager::awaitingTask ( int  taskIdJustCompleted = -1)

Calls awaitingTask on the DtPlan via the DtVrfObjectPlanManager Specify the task ID of the task that just completed, if available.

virtual void DtSimTaskManager::setTaskedBySuperior ( ) [virtual]

Equivalent to localState()->setIndependentlyTasked(false) for local entities, but deriving pseudo aggregates do more...

virtual bool DtSimTaskManager::requestTaskNeeded ( ) const [virtual]

Will we ask the plan manager for a task this tick.

virtual void DtSimTaskManager::setRequestTaskNeeded ( bool  requestTaskNeeded) [virtual]

Used within the task manager.

virtual bool DtSimTaskManager::independentlyTasked ( ) const [virtual]

Are we tasked independently (plan or user) or by a superior (pseudo-aggregate) entity?

virtual void DtSimTaskManager::setIndependentlyTasked ( bool  independentlyTasked) [virtual]

Sets independentlyTasked flag.

Normally done when a task is received, or a setTaskedBySuperior message is received.

Returns true only if all current tasks are addressed to the current echelon ID of myVrfObjecet, or if the current echelon ID is blank.

virtual bool DtSimTaskManager::isPseudoAggregate ( ) const [inline, virtual]

Indicates whether or not the type of task manager created supports pseudo-aggregates.

virtual DtString DtSimTaskManager::type ( ) const [virtual]

Returns the type of task manager object.

Strings are defined in taskMgrTypes.h.

virtual DtVrfObject* DtSimTaskManager::vrfObject ( ) const [virtual]

Returns a pointer to the simObject this task manager is attached to.

virtual void DtSimTaskManager::setVrfObject ( DtVrfObject vrfObject) [virtual]

Sets myVrfObject.

This is typically done in the constructor. Call this only if you know what you're doing...

virtual void DtSimTaskManager::setSendSkipTaskMessages ( bool  sendSkipTaskMessages) [virtual]

Accessor/mutator for mySendSkipTaskMessages.

This should only be called by DtCgf::rewind.

Stores all the registered task processor interfaces, indexed by task type they process.

virtual void DtSimTaskManager::addOnTaskNotifyCallback ( DtOnTaskNotifyCallbackFcn  fcn,
void *  userData 
) [virtual]

Registers callback to invoked after taskNotify() is called (at the point when an entity starts executing a new task).

virtual void DtSimTaskManager::removeOnTaskNotifyCallback ( DtOnTaskNotifyCallbackFcn  fcn,
void *  userData 
) [virtual]

Removes callback to invoked after taskNotify() is called (at the point when an entity starts executing a new task).

virtual void DtSimTaskManager::clearSubtask ( int  subtaskId) [virtual]

Locates DtTaskControllerComponent currently executing a task with the given subtaskId, and calls clearTask() on that component.

Returns:
List of top-level tasks currently being executed by the entity.
virtual bool DtSimTaskManager::hasTopLevelTask ( ) const [virtual]
Returns:
true if there is an available top Level Task
virtual bool DtSimTaskManager::taskTypesAreExclusive ( int  taskType1,
int  taskType2 
) const [virtual]
Returns:
True if and only if the two specified tasks types are designated as mutually exclusive task types, based on the task execution rules for the entity.
virtual bool DtSimTaskManager::canExecuteTask ( int  ) const [virtual]

True if this object will support the given task

static void DtSimTaskManager::taskedBySuperiorRequestCallback ( DtSimMessage msg,
void *  usrData 
) [static]

The manager will register a callback with the radio's msg executive requesting notification of Tasked By Superior Set Data Requests.

static void DtSimTaskManager::skipTaskCallback ( DtSimMessage msg,
void *  usr 
) [static]

The manager will register a callback with its simManager's msg executive requesting notification of Skip Task Interface Requests.

static void DtSimTaskManager::clearTaskCallback ( DtSimMessage msg,
void *  usr 
) [static]

Callback function for handling DtClearTask messages.

Calls processClearTask to process the message.

static void DtSimTaskManager::objectAboutToBeRemovedCallback ( DtVrfObject object,
void *  usr 
) [static]

Callback function for cleaning up task manager just before the host object is removed from the simulation.

Calls processObjectAboutToBeRemoved.

static void DtSimTaskManager::subordinateRemoved ( DtEntityIdentifier  childEid,
void *  usr 
) [static]

Callback for handling subordinate (child) removed events.

Calls processSubordinateRemoved().

static DtSimTaskManager* DtSimTaskManager::creator ( const DtString name,
DtVrfObject vrfObject,
DtReaderWriterRegistry parentRegistry 
) [static]

Stores all the registered task processor interfaces, indexed by task type they process.

A DtSimEntityFactory is allocated by the DtSimCreator, and this pointer is set.

The DtSimCreator deletes this pointer when it is deleted. This is done this way because we don't allow static initialization.

Reimplemented from DtReaderWriter.

static void DtSimTaskManager::setFactory ( DtSimTaskManagerFactory factory) [static]

Stores all the registered task processor interfaces, indexed by task type they process.

static void DtSimTaskManager::addSimTaskManagerCreatorFcn ( const DtString type,
DtSimTaskManagerCreatorFcn  fcn 
) [static]

Stores all the registered task processor interfaces, indexed by task type they process.

static DtSimTaskManager* DtSimTaskManager::createTaskManager ( const DtString name,
const DtString type,
DtVrfObject vrfObject,
DtReaderWriterRegistry parentRegistry = 0 
) [static]

Creates a new task manager, using the factory.

virtual void DtSimTaskManager::processClearTask ( DtSimMessage msg) [protected, virtual]

Finds task controller currently tasked with task of type specified in clear task message and calls its clearTask() method.

task type, calls clearTask().

virtual void DtSimTaskManager::processObjectAboutToBeRemoved ( DtVrfObject object) [protected, virtual]

If the object is our host entity, calls clearTopLevelTask() to clean up any active tasks before the object is removed.

virtual bool DtSimTaskManager::clearAllTopLevelTasks ( ) [protected, virtual]

Cancels all top level tasks currently executing on the entity.

Returns:
True if any tasks were cleared.
virtual void DtSimTaskManager::clearConflictingTopLevelTasks ( int  taskType) [protected, virtual]

Cancels any top level tasks that are running on the entity if they conflict with the specified task type.

taskTypesAreExclusive() is used to determine if they conflict.

virtual void DtSimTaskManager::onTaskNotify ( const DtSimTask task,
const DtSimComponent notifier 
) [protected, virtual]

Hook function called at the end of taskNotify().

Invokes any onTaskNotify() callback functions that are registered with the task manager.

void DtSimTaskManager::processSubordinateRemoved ( DtEntityIdentifier  childEid) [protected]

If we are currently tasked and former subordinate is not independently tasked, sends a skip task message to this former subordinate.

The subordinate should no longer be participating in any tasks currently being executed by this entity.

static void DtSimTaskManager::taskMessageCallback ( DtSimMessage msg,
void *  usr 
) [static, protected]

Callback resisted with the local radio for all task messages.

Calls processTaskMessage().

virtual void DtSimTaskManager::processTaskMessage ( DtSimMessage msg) [protected, virtual]

Calls executeTask().

virtual std::vector<int> DtSimTaskManager::conflictingTaskTypes ( int  testTaskType) const [protected, virtual]
Returns:
A vector containing all the tasks that this entity is capable of (from capableTaskIds()), that are also conflicting with the specified testTaskType. taskTypesAreExclusive() is used to determine task conflicts.
static void DtSimTaskManager::requestCurrentTasksCallback ( const DtVrfObjectMessage msg,
void *  usr 
) [static, protected]

Stores all the registered task processor interfaces, indexed by task type they process.

virtual void DtSimTaskManager::processRequestCurrentTasks ( const DtVrfObjectMessage msg) [protected, virtual]

Stores all the registered task processor interfaces, indexed by task type they process.

static void DtSimTaskManager::unsubscribeCurrentTasksCallback ( const DtVrfObjectMessage msg,
void *  usr 
) [static, protected]

Stores all the registered task processor interfaces, indexed by task type they process.

virtual void DtSimTaskManager::processUnsubscribeCurrentTasks ( const DtVrfObjectMessage msg) [protected, virtual]

Stores all the registered task processor interfaces, indexed by task type they process.

virtual void DtSimTaskManager::sendCurrentTasks ( ) [protected, virtual]

Stores all the registered task processor interfaces, indexed by task type they process.


Member Data Documentation

Stores all the registered task processor interfaces, indexed by task type they process.

Stores all the registered task processor interfaces, indexed by task type they process.

Stores all the registered task processor interfaces, indexed by task type they process.

Stores all the registered task processor interfaces, indexed by task type they process.

Determines whether processSubordinateRemoved will send a skip task message.

This should only be changed by DtCgf::rewind.

Counter which holds the number of times the current task status has been subscribed to minus the number of times it has been unsubscribed.

(>0 means that someone is subscribed)

Set to true if the task manager should send the list of current tasks next tick.

Stores all the registered task processor interfaces, indexed by task type they process.

Reimplemented from DtReaderWriter.


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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)