picloud add server logics
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#define PICLOUDSERVER_H
|
||||
|
||||
#include "picloudbase.h"
|
||||
#include "piconditionvar.h"
|
||||
|
||||
|
||||
class PIP_CLOUD_EXPORT PICloudServer : public PIIODevice, private PICloudBase
|
||||
@@ -36,12 +37,22 @@ public:
|
||||
|
||||
class Client : public PIIODevice {
|
||||
PIIODEVICE(PICloudServer::Client)
|
||||
friend class PICloudServer;
|
||||
public:
|
||||
Client(PICloudServer * srv = nullptr);
|
||||
Client(PICloudServer * srv = nullptr, uint id = 0);
|
||||
protected:
|
||||
bool openDevice();
|
||||
bool closeDevice();
|
||||
int readDevice(void * read_to, int max_size);
|
||||
int writeDevice(const void * data, int max_size);
|
||||
|
||||
private:
|
||||
void pushBuffer(const PIByteArray & ba);
|
||||
PICloudServer * server;
|
||||
uint client_id;
|
||||
PIByteArray buff;
|
||||
PIMutex mutex_buff;
|
||||
PIConditionVariable cond_buff;
|
||||
};
|
||||
|
||||
void setServerName(const PIString & server_name);
|
||||
@@ -56,8 +67,11 @@ protected:
|
||||
|
||||
private:
|
||||
EVENT_HANDLER2(void, readed, uchar * , data, int, size);
|
||||
void clientDisconnect(uint client_id);
|
||||
int sendData(const PIByteArray & data, uint client_id);
|
||||
|
||||
PIVector<Client> clients;
|
||||
PIVector<Client *> clients;
|
||||
PIMap<uint, Client *> index_clients;
|
||||
};
|
||||
|
||||
#endif // PICLOUDSERVER_H
|
||||
|
||||
Reference in New Issue
Block a user