PICloud with streampacker
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "picloudtcp.h"
|
||||
#include "piethernet.h"
|
||||
#include "pistreampacker.h"
|
||||
|
||||
|
||||
class PICloudBase
|
||||
@@ -34,6 +35,7 @@ public:
|
||||
|
||||
protected:
|
||||
PIEthernet eth;
|
||||
PIStreamPacker streampacker;
|
||||
PICloud::TCP tcp;
|
||||
};
|
||||
|
||||
|
||||
@@ -41,14 +41,17 @@ public:
|
||||
protected:
|
||||
bool openDevice();
|
||||
bool closeDevice();
|
||||
bool isConnected() const {return is_connected;}
|
||||
int readDevice(void * read_to, int max_size);
|
||||
int writeDevice(const void * data, int max_size);
|
||||
|
||||
private:
|
||||
EVENT_HANDLER2(void, readed, uchar * , data, int, size);
|
||||
EVENT_HANDLER1(void, _readed, PIByteArray &, data);
|
||||
PIByteArray buff;
|
||||
PIMutex mutex_buff;
|
||||
PIMutex mutex_connect;
|
||||
PIConditionVariable cond_buff;
|
||||
PIConditionVariable cond_connect;
|
||||
std::atomic_bool is_connected;
|
||||
};
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ protected:
|
||||
int writeDevice(const void * data, int max_size);
|
||||
|
||||
private:
|
||||
EVENT_HANDLER2(void, readed, uchar * , data, int, size);
|
||||
EVENT_HANDLER1(void, _readed, PIByteArray &, ba);
|
||||
void clientDisconnect(uint client_id);
|
||||
int sendData(const PIByteArray & data, uint client_id);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
|
||||
class PIEthernet;
|
||||
class PIStreamPacker;
|
||||
|
||||
namespace PICloud {
|
||||
|
||||
@@ -40,27 +41,28 @@ public:
|
||||
};
|
||||
|
||||
enum Role {
|
||||
InvalidRole = 0,
|
||||
Server = 1,
|
||||
Client = 2,
|
||||
};
|
||||
|
||||
enum Type {
|
||||
Invalid = 0,
|
||||
InvalidType = 0,
|
||||
Connect = 1,
|
||||
Disconnect = 2,
|
||||
Data = 3,
|
||||
};
|
||||
|
||||
TCP();
|
||||
TCP(PIStreamPacker * s);
|
||||
void setRole(Role r);
|
||||
Role role() const {return (Role)header.role;}
|
||||
void setServerName(const PIString & server_name);
|
||||
|
||||
void sendStart(PIEthernet * eth);
|
||||
void sendConnected(PIEthernet * eth, uint client_id);
|
||||
void sendDisconnected(PIEthernet * eth, uint client_id);
|
||||
void sendData(PIEthernet * eth, const PIByteArray & data);
|
||||
int sendData(PIEthernet * eth, const PIByteArray & data, uint client_id);
|
||||
void sendStart();
|
||||
void sendConnected(uint client_id);
|
||||
void sendDisconnected(uint client_id);
|
||||
void sendData(const PIByteArray & data);
|
||||
int sendData(const PIByteArray & data, uint client_id);
|
||||
PIPair<PICloud::TCP::Type, PICloud::TCP::Role> parseHeader(PIByteArray & ba);
|
||||
PIByteArray parseData(PIByteArray & ba);
|
||||
PIPair<uint, PIByteArray> parseDataServer(PIByteArray & ba);
|
||||
@@ -78,6 +80,7 @@ private:
|
||||
|
||||
Header header;
|
||||
PIString sname;
|
||||
PIStreamPacker * streampacker;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user