|
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 by