C++ Client  0.0.0.0
C++ wrapper for Corelink DLL
CorelinkCallback.h
Go to the documentation of this file.
1 
5 #ifndef CORELINKCALLBACK_H
6 #define CORELINKCALLBACK_H
7 
8 #include "CorelinkClasses.h"
9 
10 namespace Corelink {
11  inline void Callback::RecvCallback(STREAM_ID recvID, STREAM_ID sendID, const char* msg, int jsonLen, int msgLen, void* callback) {
12  Callback* callbackFunc = (Callback*)callback;
13  if (callbackFunc == nullptr) { return; }
14  callbackFunc->Func(RecvData(recvID, sendID, msg, jsonLen, msgLen));
15  }
16 
21  inline CallbackData::CallbackData(void(*func)(const STREAM_ID&, const STREAM_ID&, const char*, const int&)) {
22  this->func = func;
23  }
24 
26 
27  inline void CallbackData::Func(const RecvData& recvData) {
28  this->func(recvData.recvID, recvData.sendID, recvData.data + recvData.hdrLen, recvData.msgLen);
29  }
30 
31  inline void CallbackData::RecvCallback(STREAM_ID recvID, STREAM_ID sendID, const char* msg, int jsonLen, int msgLen, void* callback) {
32  ((CallbackData*)callback)->func(recvID, sendID, msg + jsonLen, msgLen);
33  }
34 
39  inline CallbackDataVoid::CallbackDataVoid(void(*func)(void*, const STREAM_ID&, const STREAM_ID&, const char*, const int&), void* obj) {
40  this->func = func;
41  this->obj = obj;
42  }
43 
45  this->obj = nullptr;
46  }
47 
48  inline void CallbackDataVoid::Func(const RecvData& recvData) {
49  this->func(this->obj, recvData.recvID, recvData.sendID, recvData.data + recvData.hdrLen, recvData.msgLen);
50  }
51 
52  inline void CallbackDataVoid::RecvCallback(STREAM_ID recvID, STREAM_ID sendID, const char* msg, int jsonLen, int msgLen, void* callback) {
53  ((CallbackDataVoid*)callback)->func(((CallbackDataVoid*)callback)->obj, recvID, sendID, msg + jsonLen, msgLen);
54  }
55 
60  inline CallbackDataJson::CallbackDataJson(void(*func)(const STREAM_ID&, const STREAM_ID&, const char*, const int&, const rapidjson::Document&)) {
61  this->func = func;
62  }
63 
65 
66  inline void CallbackDataJson::Func(const RecvData& recvData) {
67  rapidjson::Document json;
68  json.SetObject();
69  if (recvData.hdrLen > 0) {
70  json.Parse(recvData.data, recvData.hdrLen);
71  }
72  this->func(recvData.recvID, recvData.sendID, recvData.data + recvData.hdrLen, recvData.msgLen, json);
73  }
74 
75  inline void CallbackDataJson::RecvCallback(STREAM_ID recvID, STREAM_ID sendID, const char* msg, int jsonLen, int msgLen, void* callback) {
76  rapidjson::Document json;
77  json.SetObject();
78  if (jsonLen > 0) {
79  json.Parse(msg, jsonLen);
80  }
81  ((CallbackDataJson*)callback)->func(recvID, sendID, msg + jsonLen, msgLen, json);
82  }
83 
88  inline CallbackDataJsonVoid::CallbackDataJsonVoid(void(*func)(void*, const STREAM_ID&, const STREAM_ID&, const char*, const int&, const rapidjson::Document&), void* obj) {
89  this->func = func;
90  this->obj = obj;
91  }
92 
94  this->obj = nullptr;
95  }
96 
97  inline void CallbackDataJsonVoid::Func(const RecvData& recvData) {
98  rapidjson::Document json;
99  json.SetObject();
100  if (recvData.hdrLen > 0) {
101  json.Parse(recvData.data, recvData.hdrLen);
102  }
103  this->func(this->obj, recvData.recvID, recvData.sendID, recvData.data + recvData.hdrLen, recvData.msgLen, json);
104  }
105 
106  inline void CallbackDataJsonVoid::RecvCallback(STREAM_ID recvID, STREAM_ID sendID, const char* msg, int jsonLen, int msgLen, void* callback) {
107  rapidjson::Document json;
108  json.SetObject();
109  if (jsonLen > 0) {
110  json.Parse(msg, jsonLen);
111  }
112  ((CallbackDataJsonVoid*)callback)->func(((CallbackDataJsonVoid*)callback)->obj, recvID, sendID, msg + jsonLen, msgLen, json);
113  }
114 }
115 
116 #endif