Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Callback.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef _CALLBACK_H
7#define _CALLBACK_H
8
9#include "QueryResult.h"
10#include "Threading/Future.h"
11
14
19#define CALLBACK_STAGE_INVALID uint8(-1)
20
21template <typename Result, typename ParamType, bool chain = false>
23{
24public:
26
29 {
30 _result = value;
31 }
32
37
38 int IsReady()
39 {
40 return _result.ready();
41 }
42
43 void GetResult(Result& res)
44 {
45 _result.get(res);
46 }
47
49 {
50 _result.cancel();
51 }
52
53 void SetParam(ParamType value)
54 {
55 _param = value;
56 }
57
58 ParamType GetParam()
59 {
60 return _param;
61 }
62
65 {
66 if (!chain)
67 return;
68
69 _stage = 0;
70 }
71
73 void NextStage()
74 {
75 if (!chain)
76 return;
77
78 ++_stage;
79 }
80
83 {
84 return _stage;
85 }
86
88 void Reset()
89 {
90 SetParam(NULL);
91 FreeResult();
92 ResetStage();
93 }
94
95private:
97 ParamType _param;
99 QueryCallback(QueryCallback const& right) = delete;
100 QueryCallback& operator=(QueryCallback const& right) = delete;
101};
102
103template <typename Result, typename ParamType1, typename ParamType2, bool chain = false>
105{
106public:
108
111 {
112 _result = value;
113 }
114
119
121 {
122 return _result.ready();
123 }
124
125 void GetResult(Result& res)
126 {
127 _result.get(res);
128 }
129
131 {
132 _result.cancel();
133 }
134
135 void SetFirstParam(ParamType1 value)
136 {
137 _param_1 = value;
138 }
139
140 void SetSecondParam(ParamType2 value)
141 {
142 _param_2 = value;
143 }
144
145 ParamType1 GetFirstParam()
146 {
147 return _param_1;
148 }
149
150 ParamType2 GetSecondParam()
151 {
152 return _param_2;
153 }
154
157 {
158 if (!chain)
159 return;
160
161 _stage = 0;
162 }
163
166 {
167 if (!chain)
168 return;
169
170 ++_stage;
171 }
172
175 {
176 return _stage;
177 }
178
180 void Reset()
181 {
182 SetFirstParam(NULL);
183 SetSecondParam(NULL);
184 FreeResult();
185 ResetStage();
186 }
187
188private:
190 ParamType1 _param_1;
191 ParamType2 _param_2;
193 QueryCallback_2(QueryCallback_2 const& right) = delete;
195};
196
197#endif
Skyfire::Future< QueryResult > QueryResultFuture
#define CALLBACK_STAGE_INVALID
Definition Callback.h:19
std::uint8_t uint8
Definition Define.h:79
Skyfire::Future< PreparedQueryResult > PreparedQueryResultFuture
void GetResult(Result &res)
Definition Callback.h:125
void ResetStage()
Resets the stage of the callback chain.
Definition Callback.h:156
void SetFutureResult(Skyfire::Future< Result > value)
The parameter of this function should be a resultset returned from either .AsyncQuery or ....
Definition Callback.h:110
ParamType2 _param_2
Definition Callback.h:191
void SetFirstParam(ParamType1 value)
Definition Callback.h:135
QueryCallback_2(QueryCallback_2 const &right)=delete
ParamType2 GetSecondParam()
Definition Callback.h:150
void NextStage()
Advances the callback chain to the next stage, so upper level code can act on its results accordingly...
Definition Callback.h:165
ParamType1 _param_1
Definition Callback.h:190
void Reset()
Resets all underlying variables (param, result and stage).
Definition Callback.h:180
void FreeResult()
Definition Callback.h:130
ParamType1 GetFirstParam()
Definition Callback.h:145
QueryCallback_2 & operator=(QueryCallback_2 const &right)=delete
void SetSecondParam(ParamType2 value)
Definition Callback.h:140
uint8 GetStage()
Returns the callback stage (or CALLBACK_STAGE_INVALID if invalid).
Definition Callback.h:174
Skyfire::Future< Result > GetFutureResult()
Definition Callback.h:115
Skyfire::Future< Result > _result
Definition Callback.h:189
void GetResult(Result &res)
Definition Callback.h:43
int IsReady()
Definition Callback.h:38
void ResetStage()
Resets the stage of the callback chain.
Definition Callback.h:64
ParamType _param
Definition Callback.h:97
Skyfire::Future< Result > GetFutureResult()
Definition Callback.h:33
uint8 GetStage()
Returns the callback stage (or CALLBACK_STAGE_INVALID if invalid).
Definition Callback.h:82
Skyfire::Future< Result > _result
Definition Callback.h:96
QueryCallback(QueryCallback const &right)=delete
uint8 _stage
Definition Callback.h:98
void Reset()
Resets all underlying variables (param, result and stage).
Definition Callback.h:88
void SetParam(ParamType value)
Definition Callback.h:53
void NextStage()
Advances the callback chain to the next stage, so upper level code can act on its results accordingly...
Definition Callback.h:73
void FreeResult()
Definition Callback.h:48
ParamType GetParam()
Definition Callback.h:58
QueryCallback & operator=(QueryCallback const &right)=delete
void SetFutureResult(Skyfire::Future< Result > value)
The parameter of this function should be a resultset returned from either .AsyncQuery or ....
Definition Callback.h:28