AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
TaskScheduler::TaskQueue Class Reference

Public Member Functions

void Push (TaskContainer &&task)
 
TaskContainer Pop ()
 Pops the task out of the container.
 
TaskContainer const & First () const
 
void Clear ()
 
void RemoveIf (std::function< bool(TaskContainer const &)> const &filter)
 
void ModifyIf (std::function< bool(TaskContainer const &)> const &filter)
 
bool IsEmpty () const
 

Private Attributes

std::multiset< TaskContainer, Comparecontainer
 

Detailed Description

Member Function Documentation

◆ Clear()

void TaskScheduler::TaskQueue::Clear ( )
128{
129 container.clear();
130}
std::multiset< TaskContainer, Compare > container
Definition: TaskScheduler.h:122

Referenced by TaskScheduler::CancelAll().

◆ First()

auto TaskScheduler::TaskQueue::First ( ) const
123{
124 return *container.begin();
125}

Referenced by TaskScheduler::Dispatch().

◆ IsEmpty()

bool TaskScheduler::TaskQueue::IsEmpty ( ) const
163{
164 return container.empty();
165}

Referenced by TaskScheduler::Dispatch().

◆ ModifyIf()

void TaskScheduler::TaskQueue::ModifyIf ( std::function< bool(TaskContainer const &)> const &  filter)
146{
147 std::vector<TaskContainer> cache;
148 for (auto itr = container.begin(); itr != container.end();)
149 if (filter(*itr))
150 {
151 cache.push_back(*itr);
152 itr = container.erase(itr);
153 }
154 else
155 {
156 ++itr;
157 }
158
159 container.insert(cache.begin(), cache.end());
160}

Referenced by TaskScheduler::DelayAll(), TaskScheduler::DelayGroup(), TaskScheduler::RescheduleAll(), and TaskScheduler::RescheduleGroup().

◆ Pop()

auto TaskScheduler::TaskQueue::Pop ( )

Pops the task out of the container.

116{
117 TaskContainer result = *container.begin();
118 container.erase(container.begin());
119 return result;
120}
std::shared_ptr< Task > TaskContainer
Definition: TaskScheduler.h:109

Referenced by TaskScheduler::Dispatch().

◆ Push()

void TaskScheduler::TaskQueue::Push ( TaskContainer &&  task)
111{
112 container.insert(task);
113}

References container.

Referenced by TaskScheduler::InsertTask().

◆ RemoveIf()

void TaskScheduler::TaskQueue::RemoveIf ( std::function< bool(TaskContainer const &)> const &  filter)
133{
134 for (auto itr = container.begin(); itr != container.end();)
135 if (filter(*itr))
136 {
137 itr = container.erase(itr);
138 }
139 else
140 {
141 ++itr;
142 }
143}

Referenced by TaskScheduler::CancelGroup().

Member Data Documentation

◆ container

std::multiset<TaskContainer, Compare> TaskScheduler::TaskQueue::container
private

Referenced by Push().