|
MeVisLab Toolbox Reference
|
The BackgroundTaskManager is the central singleton that manages running background tasks. More...
#include <mlBackgroundTaskManager.h>
Classes | |
| class | Observer |
| Abstract interface to observe the BackgroundTaskManager. More... | |
Public Member Functions | |
| BackgroundTaskHandle | runTask (BackgroundTask *task) |
| int | totalTaskCount () |
| void | getStatusInformation (std::vector< BackgroundTaskStatusInformation > &infos) |
| Gets a snapshot of the state of all background tasks, representing the consistent status at the time of calling this function. | |
| void | sendMessageToGUI (BackgroundTaskMessage *message) |
| void | sendMessageToTask (BackgroundTask *task, BackgroundTaskMessage *message) |
| bool | hasSynchronousTask () const |
| Returns true if the manager is currently processing a synchronous task. | |
| bool | processPendingMessages () |
| void | cancelPendingRequestsForTask (BackgroundTask *task) |
| Cancels pending requests for a given task. | |
| void | removeMessagesForReceiver (BackgroundTaskMessageReceiver *receiver) |
| Removes all messages for receiver from the GUI message queue. | |
| void | addObserver (Observer *observer) |
| Adds an observer (the ownership stays with the caller). | |
| void | removeObserver (Observer *observer) |
| Removes an observer (the ownership stays with the caller). | |
| PageRequestProcessor & | getPageRequestProcessor () |
| Returns instance of the page request processor (TODO: this will probably move into the ML host!). | |
| void | setBackgroundTaskScheduleProcessPendingMessagesCB (BackgroundTaskScheduleProcessPendingMessagesCB *cb, void *userData) |
| void | getBackgroundTaskScheduleProcessPendingMessagesCB (BackgroundTaskScheduleProcessPendingMessagesCB **cb, void **userData) |
| Gets the currently set callback. | |
| bool | supportsAsynchronousTasks () |
Static Public Member Functions | |
| static BackgroundTaskManager & | self () |
| Returns the global singleton. | |
| static void | init () |
| Initializes the background task manager. | |
| static void | cleanup () |
| Cleans up the background task manager. | |
| static bool | ensureGUIThread () |
Returns true if the current thread is the GUI thread. | |
| static bool | ensureWorkerThread () |
Protected Member Functions | |
| MLuint32 | getUniqueTaskId () |
| void | sendTaskAdded (BackgroundTask *task) |
Sends a task that is added to the observers. | |
| void | sendTaskRemoved (BackgroundTask *task) |
Sends a task that is removed from the observers. | |
| void | sendTaskStatusUpdated () |
| Sends that a task's status is updated to the observers. | |
| void | removeTaskFromQueueAndSendTaskFinished (BackgroundTask *task) |
Removes a task if it was queued. | |
| BackgroundTask * | waitForTask () |
| Waits for a new task and returns the new task from the queue. | |
| void | sendTaskFinishedMessage (BackgroundTask *task) |
| Called by worker threads when a task is finished. | |
Friends | |
| struct | BackgroundTaskManagerWorkerFunc |
| class | BackgroundTaskFinishedMessage |
| class | BackgroundTask |
| class | BackgroundTaskManagerPrivate |
The BackgroundTaskManager is the central singleton that manages running background tasks.
Definition at line 53 of file mlBackgroundTaskManager.h.
| void ml::BackgroundTaskManager::addObserver | ( | Observer * | observer | ) |
Adds an observer (the ownership stays with the caller).
| void ml::BackgroundTaskManager::cancelPendingRequestsForTask | ( | BackgroundTask * | task | ) |
Cancels pending requests for a given task.
References BackgroundTask.
|
static |
Cleans up the background task manager.
|
static |
Returns true if the current thread is the GUI thread.
Referenced by ml::UnprotectedMainThreadCommunicator::call().
|
static |
Returns true if the current thread is not the GUI thread and is thus a worker thread. Note: in synchronous mode, this will always return true. Do not use it to decide on the code path; use ensureGUIThread instead.
| void ml::BackgroundTaskManager::getBackgroundTaskScheduleProcessPendingMessagesCB | ( | BackgroundTaskScheduleProcessPendingMessagesCB ** | cb, |
| void ** | userData ) |
Gets the currently set callback.
| PageRequestProcessor & ml::BackgroundTaskManager::getPageRequestProcessor | ( | ) |
Returns instance of the page request processor (TODO: this will probably move into the ML host!).
| void ml::BackgroundTaskManager::getStatusInformation | ( | std::vector< BackgroundTaskStatusInformation > & | infos | ) |
Gets a snapshot of the state of all background tasks, representing the consistent status at the time of calling this function.
|
protected |
Returns new unique id of a task. This is thread-safe.
|
inline |
Returns true if the manager is currently processing a synchronous task.
Definition at line 96 of file mlBackgroundTaskManager.h.
|
static |
Initializes the background task manager.
| bool ml::BackgroundTaskManager::processPendingMessages | ( | ) |
Processes all pending messages (will not block and may only be called from the GUI thread, typically from an idle timer). Returns whether more work is available.
| void ml::BackgroundTaskManager::removeMessagesForReceiver | ( | BackgroundTaskMessageReceiver * | receiver | ) |
Removes all messages for receiver from the GUI message queue.
| void ml::BackgroundTaskManager::removeObserver | ( | Observer * | observer | ) |
Removes an observer (the ownership stays with the caller).
|
protected |
Removes a task if it was queued.
References BackgroundTask.
| BackgroundTaskHandle ml::BackgroundTaskManager::runTask | ( | BackgroundTask * | task | ) |
Runs the given task. The ownership of the task is transfered to the task manager. Do not delete the task yourself! Only call this from the GUI thread!
References BackgroundTask.
|
static |
Returns the global singleton.
Referenced by ml::UnprotectedMainThreadCommunicator::callLater(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), ml::TypedBackgroundTaskHandle< Task >::callMethodOnTask(), and ml::MainExecutorT::operator()().
| void ml::BackgroundTaskManager::sendMessageToGUI | ( | BackgroundTaskMessage * | message | ) |
Sends the given message asynchronously to the GUI thread. The message ownership is passed to the manager. Do not delete it yourself!
| void ml::BackgroundTaskManager::sendMessageToTask | ( | BackgroundTask * | task, |
| BackgroundTaskMessage * | message ) |
Sends the given message asynchronously to the worker thread of the task. The message ownership is passed to the manager. Do not delete it yourself!
References BackgroundTask.
|
protected |
Sends a task that is added to the observers.
References BackgroundTask.
|
protected |
Called by worker threads when a task is finished.
References BackgroundTask.
|
protected |
Sends a task that is removed from the observers.
References BackgroundTask.
|
protected |
Sends that a task's status is updated to the observers.
| void ml::BackgroundTaskManager::setBackgroundTaskScheduleProcessPendingMessagesCB | ( | BackgroundTaskScheduleProcessPendingMessagesCB * | cb, |
| void * | userData ) |
Sets the callback that will be called from any worker thread when a call of processPendingMessages() on the GUI thread is required. It needs to be thread-safe and should cause a call to processPendingMessages() in the GUI thread, ideally from within an idle timer to avoid blocking the GUI. If this callback is not installed, the BackgroundTaskManager will only run synchronous tasks. It should be set up in the early initialization phase of an application. Note: you must not change this while an asynchronous background task is running!
| bool ml::BackgroundTaskManager::supportsAsynchronousTasks | ( | ) |
Returns whether asynchronous tasks are supported, which is the case if setBackgroundTaskScheduleProcessPendingMessagesCB was called with a non-NULL callback.
| int ml::BackgroundTaskManager::totalTaskCount | ( | ) |
Returns the number of queued and running tasks. This is only valid in the GUI thread.
|
protected |
Waits for a new task and returns the new task from the queue.
References BackgroundTask.
|
friend |
Definition at line 162 of file mlBackgroundTaskManager.h.
References BackgroundTask.
Referenced by BackgroundTask, cancelPendingRequestsForTask(), removeTaskFromQueueAndSendTaskFinished(), runTask(), sendMessageToTask(), sendTaskAdded(), sendTaskFinishedMessage(), sendTaskRemoved(), ml::BackgroundTaskManager::Observer::taskAdded(), ml::BackgroundTaskManager::Observer::taskRemoved(), and waitForTask().
|
friend |
Definition at line 161 of file mlBackgroundTaskManager.h.
References BackgroundTaskFinishedMessage.
Referenced by BackgroundTaskFinishedMessage.
|
friend |
Definition at line 199 of file mlBackgroundTaskManager.h.
References BackgroundTaskManagerPrivate.
Referenced by BackgroundTaskManagerPrivate.
|
friend |
Definition at line 160 of file mlBackgroundTaskManager.h.
References BackgroundTaskManagerWorkerFunc.
Referenced by BackgroundTaskManagerWorkerFunc.