83class ARCCORE_MESSAGEPASSING_EXPORT Request
108 m_request = null_request;
113 ARCCORE_DEPRECATED_2020(
"Use overload with IRequestCreator pointer")
114 Request(
int return_value,
void* arequest)
115 : m_return_value(return_value)
118 m_request.v = arequest;
121 ARCCORE_DEPRECATED_2020(
"Use overload with IRequestCreator pointer")
122 Request(
int return_value,
const void* arequest)
123 : m_return_value(return_value)
126 m_request.cv = arequest;
129 ARCCORE_DEPRECATED_2020(
"Use overload with IRequestCreator pointer")
130 Request(
int return_value,
int arequest)
131 : m_return_value(return_value)
134 m_request.i = arequest;
137 ARCCORE_DEPRECATED_2020(
"Use overload with IRequestCreator pointer")
138 Request(
int return_value,
long arequest)
139 : m_return_value(return_value)
142 m_request.l = arequest;
145 ARCCORE_DEPRECATED_2020(
"Use overload with IRequestCreator pointer")
146 Request(
int return_value, std::size_t arequest)
147 : m_return_value(return_value)
150 m_request.st = arequest;
156 : m_return_value(return_value)
160 m_request.v = arequest;
164 : m_return_value(return_value)
168 m_request.cv = arequest;
172 : m_return_value(return_value)
176 m_request.i = arequest;
180 : m_return_value(return_value)
184 m_request.l = arequest;
188 : m_return_value(return_value)
192 m_request.st = arequest;
197 template <
typename T>
198 operator const T*()
const {
return (
const T*)m_request.cv; }
199 template <
typename T>
200 operator T*()
const {
return (T*)m_request.v; }
201 operator int()
const {
return m_request.i; }
202 operator long()
const {
return m_request.l; }
203 operator size_t()
const {
return m_request.st; }
207 int returnValue()
const {
return m_return_value; }
210 if (m_type == T_Null)
214 if (m_type != null_request_type)
217 return m_request.i != null_request.i;
218 if (m_type == T_Long)
219 return m_request.l != null_request.l;
220 if (m_type == T_SizeT)
221 return m_request.st != null_request.st;
223 return m_request.cv != null_request.cv;
226 void* requestAsVoidPtr()
const {
return m_request.v; }
228 static void setNullRequest(Request r)
230 null_request = r.m_request;
231 null_request_type = r.m_type;
236 m_request = null_request;
237 m_sub_request.reset();
241 bool hasSubRequest()
const {
return !m_sub_request.
isNull(); }
247 void print(std::ostream& o)
const;
249 friend inline std::ostream& operator<<(std::ostream& o,
const Request& prequest)
256 Int32 _type()
const {
return m_type; }
260 int m_return_value = 0;
263 Ref<ISubRequest> m_sub_request;
264 IRequestCreator* m_creator =
nullptr;
265 static _Request null_request;
266 static int null_request_type;