C++ Client  0.0.0.0
C++ wrapper for Corelink DLL
CorelinkRecvStream.h
Go to the documentation of this file.
1 
6 #ifndef CORELINKRECVSTREAM_H
7 #define CORELINKRECVSTREAM_H
8 
9 #include "CorelinkClasses.h"
10 
11 namespace Corelink {
12  inline RecvStream::RecvStream(const STREAM_ID& stream, int state, int streamRef) :
13  streamID(stream), state(state), streamRef(streamRef)
14  {}
15 
16  inline RecvStream::RecvStream(const StreamData& streamData) {
17  if ((streamData.state & Const::STREAM_STATE_RECV) > 0) {
18  streamID = streamData.streamID;
19  state = streamData.state;
20  streamRef = streamData.streamRef;
21  }
22  else {
23  streamID = STREAM_DEF;
24  state = Const::STREAM_STATE_NONE;
25  streamRef = -1;
26  }
27  }
28 
29  inline RecvStream::RecvStream(const RecvStream& rhs) :
30  streamID(rhs.streamID), state(rhs.state), streamRef(rhs.streamRef)
31  {}
32 
33  inline RecvStream::RecvStream(RecvStream&& rhs) {
34  std::swap(this->streamID, rhs.streamID);
35  std::swap(this->state, rhs.state);
36  std::swap(this->streamRef, rhs.streamRef);
37  }
38 
40  streamID = rhs.streamID;
41  state = rhs.state;
42  streamRef = rhs.streamRef;
43  return *this;
44  }
45 
46  inline RecvStream::operator STREAM_ID() const {
47  return streamID;
48  }
49 
50  inline void RecvStream::setOnReceive() {
51  Callback* oldData = (Callback*)CorelinkDLL::setOnRecv(state, streamRef, streamID, nullptr, nullptr);
52  if (oldData != nullptr) {
53  delete oldData;
54  }
55  }
56 
57  inline void RecvStream::setOnReceive(void(*func)(const STREAM_ID&, const STREAM_ID&, const char*, const int&)) {
58  Callback* oldData = (Callback*)CorelinkDLL::setOnRecv(state, streamRef, streamID, CallbackData::RecvCallback, new CallbackData(func));
59  if (oldData != nullptr) {
60  delete oldData;
61  }
62  }
63 
64  inline void RecvStream::setOnReceive(void(*func)(void*, const STREAM_ID&, const STREAM_ID&, const char*, const int&), void* obj) {
65  Callback* oldData = (Callback*)CorelinkDLL::setOnRecv(state, streamRef, streamID, CallbackDataVoid::RecvCallback, new CallbackDataVoid(func, obj));
66  if (oldData != nullptr) {
67  delete oldData;
68  }
69  }
70 
71  inline void RecvStream::setOnReceive(void(*func)(const STREAM_ID&, const STREAM_ID&, const char*, const int&, const rapidjson::Document&)) {
72  Callback* oldData = (Callback*)CorelinkDLL::setOnRecv(state, streamRef, streamID, CallbackDataJson::RecvCallback, new CallbackDataJson(func));
73  if (oldData != nullptr) {
74  delete oldData;
75  }
76  }
77 
78  inline void RecvStream::setOnReceive(void(*func)(void*, const STREAM_ID&, const STREAM_ID&, const char*, const int&, const rapidjson::Document&), void* obj) {
79  Callback* oldData = (Callback*)CorelinkDLL::setOnRecv(state, streamRef, streamID, CallbackDataJsonVoid::RecvCallback, new CallbackDataJsonVoid(func, obj));
80  if (oldData != nullptr) {
81  delete oldData;
82  }
83  }
84 
85  inline std::vector<STREAM_ID> RecvStream::listSources() {
86  return (this->streamID == STREAM_DEF) ? std::vector<STREAM_ID>() : StreamData::listStreamSources(this->streamID);
87  }
88 }
89 
90 #endif