TrinityCore
Loading...
Searching...
No Matches
AsyncCallbackProcessor.h
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#ifndef TRINITYCORE_ASYNC_CALLBACK_PROCESSOR_H
19
#define TRINITYCORE_ASYNC_CALLBACK_PROCESSOR_H
20
21
#include "
AsyncCallbackProcessorFwd.h
"
22
#include <vector>
23
24
template
<AsyncCallback T>
25
class
AsyncCallbackProcessor
26
{
27
public
:
28
AsyncCallbackProcessor
() =
default
;
29
~AsyncCallbackProcessor
() =
default
;
30
31
T&
AddCallback
(T&& query)
32
{
33
return
_callbacks
.emplace_back(std::move(query));
34
}
35
36
void
ProcessReadyCallbacks
()
37
{
38
if
(
_callbacks
.empty())
39
return
;
40
41
std::vector<T> updateCallbacks{ std::move(
_callbacks
) };
42
43
std::erase_if(updateCallbacks, [](T& callback)
44
{
45
return
InvokeAsyncCallbackIfReady
(callback);
46
});
47
48
_callbacks
.insert(
_callbacks
.end(), std::make_move_iterator(updateCallbacks.begin()), std::make_move_iterator(updateCallbacks.end()));
49
}
50
51
bool
Empty
()
const
52
{
53
return
_callbacks
.empty();
54
}
55
56
void
CancelAll
()
57
{
58
_callbacks
.clear();
59
}
60
61
private
:
62
AsyncCallbackProcessor
(
AsyncCallbackProcessor
const
&) =
delete
;
63
AsyncCallbackProcessor
&
operator=
(
AsyncCallbackProcessor
const
&) =
delete
;
64
65
std::vector<T>
_callbacks
;
66
};
67
68
#endif
// TRINITYCORE_ASYNC_CALLBACK_PROCESSOR_H
AsyncCallbackProcessorFwd.h
InvokeAsyncCallbackIfReady
bool InvokeAsyncCallbackIfReady(QueryCallback &callback)
Definition
QueryCallback.h:60
AsyncCallbackProcessor
Definition
AsyncCallbackProcessor.h:26
AsyncCallbackProcessor::~AsyncCallbackProcessor
~AsyncCallbackProcessor()=default
AsyncCallbackProcessor::_callbacks
std::vector< T > _callbacks
Definition
AsyncCallbackProcessor.h:65
AsyncCallbackProcessor::AddCallback
T & AddCallback(T &&query)
Definition
AsyncCallbackProcessor.h:31
AsyncCallbackProcessor::ProcessReadyCallbacks
void ProcessReadyCallbacks()
Definition
AsyncCallbackProcessor.h:36
AsyncCallbackProcessor::CancelAll
void CancelAll()
Definition
AsyncCallbackProcessor.h:56
AsyncCallbackProcessor::Empty
bool Empty() const
Definition
AsyncCallbackProcessor.h:51
AsyncCallbackProcessor::operator=
AsyncCallbackProcessor & operator=(AsyncCallbackProcessor const &)=delete
AsyncCallbackProcessor::AsyncCallbackProcessor
AsyncCallbackProcessor()=default
AsyncCallbackProcessor::AsyncCallbackProcessor
AsyncCallbackProcessor(AsyncCallbackProcessor const &)=delete
common
Utilities
AsyncCallbackProcessor.h
Generated on Sun May 10 2026 02:08:51 for TrinityCore by
1.9.8