5 #ifndef CORELINKCLASSES_H 6 #define CORELINKCLASSES_H 13 class CorelinkException;
38 static void GetDLLException(
const unsigned int errorID);
45 const std::string
msg;
66 static int getInitState();
73 static void setInitState(
int state);
79 static std::string getLocalCertPath();
86 static void setLocalCertPath(
const char* path,
int len);
92 static void setLocalCertPath(
const std::string& path);
98 static std::string getServerCertPath();
105 static void setServerCertPath(
const char* path,
int len);
111 static void setServerCertPath(
const std::string& path);
118 static void setServerCredentials(
const std::string& username,
const std::string& password);
127 static void setOnDrop(
void(*func)(
const STREAM_ID&));
136 static void setOnStale(
void(*func)(
const STREAM_ID&));
145 static void setOnSubscribe(
void(*func)(
const STREAM_ID&,
const STREAM_ID&));
154 static void setOnUpdate(
void(*func)(
const STREAM_ID&,
const STREAM_ID&));
174 static std::vector<std::string> getCommResponseDataHelper(
char* data);
181 static std::vector<std::string> getCommResponseData(
const int& commID);
188 static const char** vecStringToCharArray(
const std::vector<std::string>& vec);
193 static StreamData getDataStreamInfo(
int& commID);
203 static void connect(
const std::string& serverIP,
int port);
214 static void connectPlugin();
219 static void cleanup();
225 static std::string getToken();
231 static std::vector<std::string> listServerFunctions();
239 static std::vector<std::string> describeServerFunction(
const std::string& func);
245 static std::vector<std::string> listWorkspaces();
252 static bool addWorkspace(
const std::string& workspace);
259 static bool rmWorkspace(
const std::string& workspace);
265 static rapidjson::Document genericComm(
const rapidjson::Document& json);
271 static rapidjson::Document genericComm(
const std::string& json);
278 static rapidjson::Document genericComm(
const char* json,
const int& len = 0);
286 static std::vector<int> listStreams(
const std::vector<std::string>& workspaces = {},
const std::vector<std::string>& types = {});
293 static StreamData streamInfo(
const int& streamID);
305 static SendStream createSender(
const std::string& workspace,
const std::string& type,
const std::string& meta,
bool echo,
bool alert,
int protocol);
317 static RecvStream createReceiver(
const std::string& workspace,
const std::vector<std::string>& types,
const std::string& meta,
bool echo,
bool alert,
int protocol);
326 static bool subscribe(
const STREAM_ID& receiverID,
const STREAM_ID& senderID);
335 static bool unsubscribe(
const STREAM_ID& receiverID,
const STREAM_ID& senderID);
341 static bool rmStream(
const STREAM_ID& streamID);
361 typedef void(*RecvFunc)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&);
382 StreamData(
const int& streamID,
const int& state,
const int& mtu,
const std::string& user,
const std::string& workspace,
const std::string& meta,
int streamRef,
const std::vector<std::string>& type);
397 bool isSender()
const;
405 static bool isSender(
const STREAM_ID& streamID);
411 bool isReceiver()
const;
419 static bool isReceiver(
const STREAM_ID& streamID);
427 static StreamData getStreamData(
const STREAM_ID& streamID);
435 static SendStream getSenderHandler(
const STREAM_ID& streamID);
443 static RecvStream getReceiverHandler(
const STREAM_ID& streamID);
449 static std::vector<STREAM_ID> listClientStreams();
455 static std::vector<STREAM_ID> listStreamSources(
const STREAM_ID& streamID);
473 SendStream(
const STREAM_ID& streamID = STREAM_DEF,
int state = Const::STREAM_STATE_NONE,
int streamRef = -1);
480 operator STREAM_ID()
const;
491 bool send(
const std::string&
msg,
const int& federationID = 0);
503 bool send(
const std::string&
msg,
const rapidjson::Document& json,
bool serverCheck =
false,
const int& federationID = 0);
514 bool send(
const char*
msg,
int msgLen,
const int& federationID = 0);
527 bool send(
const char*
msg,
int msgLen,
const rapidjson::Document& json,
bool serverCheck =
false,
const int& federationID = 0);
543 RecvStream(
const STREAM_ID& streamID = STREAM_DEF,
int state = Const::STREAM_STATE_NONE,
int streamRef = -1);
550 operator STREAM_ID()
const;
565 void setOnReceive(
void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&));
575 void setOnReceive(
void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&),
void* obj);
585 void setOnReceive(
void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&));
596 void setOnReceive(
void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&),
void* obj);
598 std::vector<STREAM_ID> listSources();
607 virtual void Func(
const RecvData& recvData) = 0;
609 static void RecvCallback(STREAM_ID recvID, STREAM_ID sendID,
const char*
msg,
int jsonLen,
int msgLen,
void* callback);
621 void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&);
623 CallbackData(
void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&));
627 void Func(
const RecvData& recvData)
override;
629 static void RecvCallback(STREAM_ID recvID, STREAM_ID sendID,
const char*
msg,
int jsonLen,
int msgLen,
void* callback);
642 void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&);
646 CallbackDataVoid(
void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&),
void* obj);
650 void Func(
const RecvData& recvData)
override;
652 static void RecvCallback(STREAM_ID recvID, STREAM_ID sendID,
const char*
msg,
int jsonLen,
int msgLen,
void* callback);
665 void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&);
667 CallbackDataJson(
void(*func)(
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&));
671 void Func(
const RecvData& recvData)
override;
673 static void RecvCallback(STREAM_ID recvID, STREAM_ID sendID,
const char*
msg,
int jsonLen,
int msgLen,
void* callback);
687 void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&);
691 CallbackDataJsonVoid(
void(*func)(
void*,
const STREAM_ID&,
const STREAM_ID&,
const char*,
const int&,
const rapidjson::Document&),
void* obj);
695 void Func(
const RecvData& recvData)
override;
697 static void RecvCallback(STREAM_ID recvID, STREAM_ID sendID,
const char*
msg,
int jsonLen,
int msgLen,
void* callback);
704 RecvData(STREAM_ID recvID, STREAM_ID sendID,
const char* data,
int hdrLen,
int msgLen);
CorelinkException & operator=(const CorelinkException &rhs)=delete
std::vector< std::string > type
Type of the stream. Sender may only have a single type while Receiver has arbritary amount...
const int code
Error code from dll. Use with Corelink::Const::ErrorCodeString to make into a readable string...
int state
Stores the type of the stream (UDP, TCP, WS & SEND, RECV).
std::string user
Username of the creator of the stream.
std::string workspace
Workspace stream belongs to in the server.
int streamID
ID of the stream seen by the server.
const std::string msg
Message string from dll.
std::ostream & operator<<(std::ostream &os, const StreamData &rhs)
int mtu
Maximum transmission unit. Max size of packets transferable at a time. Not actually used as of now...
std::string meta
Additional data attached to the stream.