picloud next iteration

This commit is contained in:
2021-04-05 17:42:02 +03:00
parent 8eff5d24c9
commit f0d4801d3c
13 changed files with 237 additions and 90 deletions

View File

@@ -23,7 +23,7 @@
#ifndef PICLOUDCLIENT_H
#define PICLOUDCLIENT_H
#include "pip_cloud_export.h"
#include "picloudtcp.h"
#include "piethernet.h"
@@ -35,15 +35,19 @@ public:
explicit PICloudClient(const PIString & path = PIString(), PIIODevice::DeviceMode mode = PIIODevice::ReadWrite);
virtual ~PICloudClient();
void setServerName(const PIString & server_name);
protected:
bool openDevice();
bool closeDevice();
private:
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);
PIEthernet eth;
PICloud::TCP tcp;
};
#endif // PICLOUDCLIENT_H

View File

@@ -23,7 +23,7 @@
#ifndef PICLOUDSERVER_H
#define PICLOUDSERVER_H
#include "pip_cloud_export.h"
#include "picloudtcp.h"
#include "piethernet.h"
@@ -55,11 +55,10 @@ protected:
private:
EVENT_HANDLER2(void, readed, uchar * , data, int, size);
void sendStart();
PIEthernet eth;
PIVector<Client> clients;
PICloud::TCP tcp;
};
#endif // PICLOUDSERVER_H

View File

@@ -27,38 +27,51 @@
#include "pistring.h"
class PIEthernet;
namespace PICloud {
enum Version {
Version_1 = 1,
};
enum HeaderType {
Server = 1,
Client = 2,
};
struct PIP_CLOUD_EXPORT Header {
Header() {
version = Version_1;
}
uchar version; // PICloud::Version
uchar type; // PICloud::HeaderType
PIString sname; // server name
};
class PIP_CLOUD_EXPORT TCP {
public:
enum Version {
Version_1 = 1,
};
enum Role {
Server = 1,
Client = 2,
};
enum Type {
Invalid = 0,
Connect = 1,
Disconnect = 2,
Data = 3,
};
TCP();
void setRole(Role r);
void setServerName(const PIString & server_name);
void sendStart(PIEthernet * eth);
PIPair<PICloud::TCP::Type, PICloud::TCP::Role> parseHeader(PIByteArray & ba);
PIByteArray parseData(PIByteArray & ba);
PIString parseConnect(PIByteArray & ba);
private:
struct Header {
Header();
uchar version; // PICloud::Version
uchar type; // PICloud::Type
uchar role; // PICloud::Role
};
Header header;
PIString sname;
};
}
PIP_CLOUD_EXPORT PIByteArray & operator <<(PIByteArray & s, const PICloud::Header & v);
PIP_CLOUD_EXPORT PIByteArray & operator >>(PIByteArray & s, PICloud::Header & v);
#endif // PICLOUDTCP_H