![]() |
TrinityCore
|
#include <TaskScheduler.h>
Public Member Functions | |
| TaskContext () | |
| TaskContext (TaskScheduler::TaskContainer &&task, std::weak_ptr< TaskScheduler > &&owner) | |
| TaskContext (TaskContext const &right) | |
| TaskContext (TaskContext &&right) | |
| TaskContext & | operator= (TaskContext const &right) |
| TaskContext & | operator= (TaskContext &&right) |
| bool | IsExpired () const |
| Returns true if the owner was deallocated and this context has expired. More... | |
| bool | IsInGroup (TaskScheduler::group_t const group) const |
| Returns true if the event is in the given group. More... | |
| TaskContext & | SetGroup (TaskScheduler::group_t const group) |
| Sets the event in the given group. More... | |
| TaskContext & | ClearGroup () |
| Removes the group from the event. More... | |
| TaskScheduler::repeated_t | GetRepeatCounter () const |
| Returns the repeat counter which increases every time the task is repeated. More... | |
| template<class _Rep , class _Period > | |
| TaskContext & | Repeat (std::chrono::duration< _Rep, _Period > const &duration) |
| TaskContext & | Repeat () |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | Repeat (std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max) |
| TaskContext & | Async (std::function< void()> const &callable) |
| template<class _Rep , class _Period > | |
| TaskContext & | Schedule (std::chrono::duration< _Rep, _Period > const &time, TaskScheduler::task_handler_t const &task) |
| template<class _Rep , class _Period > | |
| TaskContext & | Schedule (std::chrono::duration< _Rep, _Period > const &time, TaskScheduler::group_t const group, TaskScheduler::task_handler_t const &task) |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | Schedule (std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max, TaskScheduler::task_handler_t const &task) |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | Schedule (std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max, TaskScheduler::group_t const group, TaskScheduler::task_handler_t const &task) |
| TaskContext & | CancelAll () |
| Cancels all tasks from within the context. More... | |
| TaskContext & | CancelGroup (TaskScheduler::group_t const group) |
| Cancel all tasks of a single group from within the context. More... | |
| TaskContext & | CancelGroupsOf (std::vector< TaskScheduler::group_t > const &groups) |
| template<class _Rep , class _Period > | |
| TaskContext & | DelayAll (std::chrono::duration< _Rep, _Period > const &duration) |
| Delays all tasks with the given duration from within the context. More... | |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | DelayAll (std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max) |
| Delays all tasks with a random duration between min and max from within the context. More... | |
| template<class _Rep , class _Period > | |
| TaskContext & | DelayGroup (TaskScheduler::group_t const group, std::chrono::duration< _Rep, _Period > const &duration) |
| Delays all tasks of a group with the given duration from within the context. More... | |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | DelayGroup (TaskScheduler::group_t const group, std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max) |
| Delays all tasks of a group with a random duration between min and max from within the context. More... | |
| template<class _Rep , class _Period > | |
| TaskContext & | RescheduleAll (std::chrono::duration< _Rep, _Period > const &duration) |
| Reschedule all tasks with the given duration. More... | |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | RescheduleAll (std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max) |
| Reschedule all tasks with a random duration between min and max. More... | |
| template<class _Rep , class _Period > | |
| TaskContext & | RescheduleGroup (TaskScheduler::group_t const group, std::chrono::duration< _Rep, _Period > const &duration) |
| Reschedule all tasks of a group with the given duration. More... | |
| template<class _RepLeft , class _PeriodLeft , class _RepRight , class _PeriodRight > | |
| TaskContext & | RescheduleGroup (TaskScheduler::group_t const group, std::chrono::duration< _RepLeft, _PeriodLeft > const &min, std::chrono::duration< _RepRight, _PeriodRight > const &max) |
| Reschedule all tasks of a group with a random duration between min and max. More... | |
Private Member Functions | |
| TaskContext & | Dispatch (std::function< TaskScheduler &(TaskScheduler &)> const &apply) |
| Dispatches an action safe on the TaskScheduler. More... | |
| void | AssertOnConsumed () const |
| Asserts if the task was consumed already. More... | |
| void | Invoke () |
| Invokes the associated hook of the task. More... | |
Private Attributes | |
| TaskScheduler::TaskContainer | _task |
| Associated task. More... | |
| std::weak_ptr< TaskScheduler > | _owner |
| Owner. More... | |
| std::shared_ptr< bool > | _consumed |
| Marks the task as consumed. More... | |
Friends | |
| class | TaskScheduler |
|
inline |
|
inlineexplicit |
|
inline |
|
inline |
|
private |
Asserts if the task was consumed already.
| TaskContext & TaskContext::Async | ( | std::function< void()> const & | callable | ) |
Schedule a callable function that is executed at the next update tick from within the context. Its safe to modify the TaskScheduler from within the callable.
Here is the call graph for this function:| TaskContext & TaskContext::CancelAll | ( | ) |
Cancels all tasks from within the context.
Here is the call graph for this function:| TaskContext & TaskContext::CancelGroup | ( | TaskScheduler::group_t const | group | ) |
Cancel all tasks of a single group from within the context.
Here is the call graph for this function:| TaskContext & TaskContext::CancelGroupsOf | ( | std::vector< TaskScheduler::group_t > const & | groups | ) |
Cancels all groups in the given std::vector from within the context. Hint: Use std::initializer_list for this: "{1, 2, 3, 4}"
Here is the call graph for this function:| TaskContext & TaskContext::ClearGroup | ( | ) |
Removes the group from the event.
|
inline |
Delays all tasks with the given duration from within the context.
Here is the call graph for this function:
|
inline |
Delays all tasks with a random duration between min and max from within the context.
Here is the call graph for this function:
|
inline |
Delays all tasks of a group with the given duration from within the context.
Here is the call graph for this function:
|
inline |
Delays all tasks of a group with a random duration between min and max from within the context.
Here is the call graph for this function:
|
private |
| TaskScheduler::repeated_t TaskContext::GetRepeatCounter | ( | ) | const |
Returns the repeat counter which increases every time the task is repeated.
Here is the caller graph for this function:
|
private |
Invokes the associated hook of the task.
Here is the caller graph for this function:| bool TaskContext::IsExpired | ( | ) | const |
Returns true if the owner was deallocated and this context has expired.
| bool TaskContext::IsInGroup | ( | TaskScheduler::group_t const | group | ) | const |
Returns true if the event is in the given group.
|
inline |
|
inline |
|
inline |
Repeats the event and sets a new duration. std::chrono::seconds(5) for example. This will consume the task context, its not possible to repeat the task again from the same task context!
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Repeats the event with the same duration. This will consume the task context, its not possible to repeat the task again from the same task context!
|
inline |
Repeats the event and set a new duration that is randomized between min and max. std::chrono::seconds(5) for example. This will consume the task context, its not possible to repeat the task again from the same task context!
Here is the call graph for this function:
|
inline |
Reschedule all tasks with the given duration.
Here is the call graph for this function:
|
inline |
Reschedule all tasks with a random duration between min and max.
Here is the call graph for this function:
|
inline |
Reschedule all tasks of a group with the given duration.
Here is the call graph for this function:
|
inline |
Reschedule all tasks of a group with a random duration between min and max.
Here is the call graph for this function:
|
inline |
Schedule an event with a fixed rate from within the context. Its possible that the new event is executed immediately! Use TaskScheduler::Async to create a task which will be called at the next update tick.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Schedule an event with a fixed rate from within the context. Its possible that the new event is executed immediately! Use TaskScheduler::Async to create a task which will be called at the next update tick.
Here is the call graph for this function:
|
inline |
Schedule an event with a randomized rate between min and max rate from within the context. Its possible that the new event is executed immediately! Use TaskScheduler::Async to create a task which will be called at the next update tick.
Here is the call graph for this function:
|
inline |
Schedule an event with a randomized rate between min and max rate from within the context. Its possible that the new event is executed immediately! Use TaskScheduler::Async to create a task which will be called at the next update tick.
Here is the call graph for this function:| TaskContext & TaskContext::SetGroup | ( | TaskScheduler::group_t const | group | ) |
Sets the event in the given group.
|
friend |
|
private |
Marks the task as consumed.
|
private |
Owner.
|
private |
Associated task.
1.8.8