AAO DRAMA/DRAMA2 C++ Interface
DRAMA C++11 and later interface
|
A class which implements a DRAMA task.
Create one of these objects to turn your program into a DRAMA task. The normal approach is to subclass drama::Task and add actions, parameters and other features within the sub-class.
Use the Task::Add and Task::AddSpawnable methods to add actions to your task. Create drama::Parameter objects to add DRAMA Parameters to your task. Execute Task::RunDrama() to run your DRAMA task (read and dispatch messages).
#include "task.hh"
Public Types | |
typedef drama::Request(Task::* | ActionMethod) (drama::MessageHandler *mh) |
This type is for methods the task which implement actions. | |
typedef std::lock_guard< mutexType > | guardType |
Defines the type of a lock guard using our mutex type. | |
typedef std::recursive_timed_mutex | mutexType |
Defines the type of our mutex. | |
typedef void(Task::* | ThreadActionMethod) (drama::thread::TAction *taction, const drama::sds::Id &id) |
This type is for methods of the task which implement threaded actions. | |
typedef std::unique_lock< mutexType > | uniqueLockType |
Defines the type of a unique_lock type using our mutex type. | |
Public Member Functions | |
Task (const std::string &name, int buffer=DefBufSize, int flags=0, int selfBytes=DefSelfBufSize) | |
Create a new DRAMA task of the specified name. | |
virtual | ~Task () |
Destructor - shut down the DRAMA task. | |
virtual void | _MessageUser (const std::string &text) const |
Use DRAMA to send a message to the user. | |
virtual void | Add (const std::string &name, MessageHandler *obj, const std::string &descr="") |
Add an action to the task. | |
virtual void | Add (const std::string &name, MessageHandlerPtr obj, const std::string &descr="") |
Add an action to the task. | |
virtual void | Add (const std::string &name, MessageReceiveFunction func, const std::string &descr="") |
Add an action to the task. | |
template<typename T > | |
void | AddMth (const std::string &actionName, T method, const std::string &descr="") |
Add an action to the task, implemented by a method. | |
template<typename T > | |
void | AddMthThd (const std::string &actionName, T method, const std::string &descr="") |
Add an action to the task, implemented by a method. | |
void | AddOrphanToQueue (const OrphanDetails &orphan) |
Add an orphan to the queue of orphans to be processed before we next look at the DRAMA message queue. | |
virtual void | AddSpawnable (const std::string &name, Spawnable *obj, const std::string &descr="") |
Add an action to the task. | |
virtual void | AddSpawnable (const std::string &name, SpawnablePtr obj, const std::string &descr="") |
Add a spawnable action to the task. | |
virtual void | AddTA (const std::string &name, thread::ThreadActionFunction func, const std::string &descr="") |
Add an threaded action to the task. | |
void | CancelNotifyOnRunDramaExit (RunDramaExitNotifier *notifier) |
Cancel notification for when the DRAMA RunDrama() exits. | |
virtual double | GetJoinTimeout () const |
Get the thread join timeout. | |
std::thread::id | GetTaskCreThreadId () const |
Return the thread ID of the thread on which the Task object was created. | |
std::string | GetTaskDescription (const std::string &taskName) const |
Get the description of a task. | |
std::thread::id | GetTaskRunThreadId () const |
Return the thread ID of the thread running RunDrama() | |
int | GetTaskType (const std::string &taskName) const |
Get the type of a task. | |
mutexType & | Lock () |
Reference the DRAMA Task lock. | |
logging::Logger & | Logger () |
Reference to DRAMA 2 Logger. | |
void | NotifyOnRunDramaExit (RunDramaExitNotifier *notifier) |
Arrange notification for when the DRAMA RunDrama() exits. | |
virtual void | RunDrama () |
Run the DRAMA message loop in the current thread. | |
void | SeparateThreadRunsDrama () |
Tell the task we are expecting a separate thread to run the DRAMA message loop. | |
void | SetDetails (const std::string &descr, int type=0) |
Set task details. | |
void | Signal (const std::string &name, sds::Id *arg=nullptr, void *data=nullptr) |
Trigger the rescheduling of an action, specifing the name of the action. | |
void | Signal (long int index, sds::Id *arg=nullptr, void *data=nullptr) |
Trigger the rescheduling of an action, specifying the index of the action. | |
std::string | TaskName () const |
Return task name. | |
std::weak_ptr< Task > | TaskPtr () |
Returns a weak pointer to the task. | |
template<typename T > | |
std::shared_ptr< T > | TaskPtrAs () |
Returns a shared pointer to the task, dynamically cast to the template type. | |
Static Public Attributes | |
static const int | DefBufSize =20000 |
Default (minimum) global buffer size. | |
static const int | DefSelfBufSize =2000 |
Default (minimum) self buffer size. | |
Protected Member Functions | |
virtual void | OrphanHandler (const OrphanDetails &details) |
Orphan transaction handler. | |
Click here for the DRAMA home page and here for the AAO home page.
For more information, contact tony.farrell@mq.edu.au
Generated on Thu Dec 12 2024 23:07:35 for AAO DRAMA/DRAMA2 C++ Interface by 1.9.8