Files
pip/utils/cloud_dispatcher/dispatcherclient.h
T
andrey 2605446573 refactor: rename __PIP_TYPENAME_DECLARE to PIP_REGISTER_TYPENAME, add PIP_DECLARE_TYPENAME macro
- Rename __PIP_TYPENAME_DECLARE to PIP_REGISTER_TYPENAME across all headers
- Add PIP_DECLARE_TYPENAME(name) macro for in-class type name declaration
- Replace all static const char * __pip_typename__() member functions with PIP_DECLARE_TYPENAME
2026-08-24 19:31:41 +03:00

53 lines
1.4 KiB
C++

#ifndef DISPATCHERCLIENT_H
#define DISPATCHERCLIENT_H
#include "picloudtcp.h"
#include "piethernet.h"
#include "pistreampacker.h"
class DispatcherClient: public PIObject {
PIOBJECT(DispatcherClient)
public:
DispatcherClient(PIEthernet * eth_, int id);
~DispatcherClient();
void start();
void close();
void stop();
void sendConnected(uint client_id);
void sendDisconnected(uint client_id);
void sendData(const PIByteArray & data);
void sendDataToClient(const PIByteArray & data, uint client_id);
void authorise(bool ok);
bool isAuthorised() const { return authorised; }
PICloud::TCP::Role role() const { return tcp.role(); }
PIString address();
uint clientId() const { return client_id; }
EVENT1(disconnectEvent, DispatcherClient *, client)
EVENT2(registerServer, const PIByteArray &, sname, DispatcherClient *, client)
EVENT2(registerClient, const PIByteArray &, sname, DispatcherClient *, client)
EVENT1(dataReaded, PIByteArray &, ba)
EVENT2(dataReadedServer, uint, id, PIByteArray &, ba)
EVENT0(pingReceived)
PIObject::Connection connect_link;
private:
EVENT_HANDLER1(void, readed, PIByteArray &, data);
EVENT_HANDLER1(void, disconnected, bool, withError);
std::atomic_bool authorised;
PIEthernet * eth;
PIStreamPacker streampacker;
PICloud::TCP tcp;
PIMutex mutex_send;
uint client_id;
};
PIP_REGISTER_TYPENAME(DispatcherClient *)
PIP_REGISTER_TYPENAME(const DispatcherClient *)
#endif // DISPATCHERCLIENT_H