hyperion.ng
FlatBufferClient.h
1 #pragma once
2 
3 // util
4 #include <utils/Logger.h>
5 #include <utils/Image.h>
6 #include <utils/ColorRgb.h>
7 #include <utils/Components.h>
8 
9 // flatbuffer FBS
10 #include "hyperion_reply_generated.h"
11 #include "hyperion_request_generated.h"
12 
13 class QTcpSocket;
14 class QTimer;
15 class Hyperion;
16 
17 namespace flatbuf {
18 class HyperionRequest;
19 }
20 
24 class FlatBufferClient : public QObject
25 {
26  Q_OBJECT
27 public:
34  explicit FlatBufferClient(QTcpSocket* socket, const int &timeout, QObject *parent = nullptr);
35 
36 signals:
40  void registerGlobalInput(const int priority, const hyperion::Components& component, const QString& origin = "System", const QString& owner = "", unsigned smooth_cfg = 0);
41 
45  const bool setGlobalInputImage(const int priority, const Image<ColorRgb>& image, const int timeout_ms = -1);
46 
50  void clientDisconnected();
51 
52 public slots:
56  void forceClose();
57 
58 private slots:
62  void readyRead();
63 
67  void disconnected();
68 
69 private:
73  void handleMessage(const hyperionnet::Request * req);
74 
78  void handleRegisterCommand(const hyperionnet::Register *regReq);
79 
83  void handleColorCommand(const hyperionnet::Color *colorReq);
84 
90  void handleImageCommand(const hyperionnet::Image *image);
91 
97  void handleClearCommand(const hyperionnet::Clear *clear);
98 
102  void handleNotImplemented();
103 
107  void sendMessage();
108 
112  void sendSuccessReply();
113 
119  void sendErrorReply(const std::string & error);
120 
121 private:
122  Logger *_log;
123  QTcpSocket *_socket;
124  const QString _clientAddress;
125  QTimer *_timeoutTimer;
126  int _timeout;
127  int _priority;
128  Hyperion* _hyperion;
129 
130  QByteArray _receiveBuffer;
131 
132  // Flatbuffers builder
133  flatbuffers::FlatBufferBuilder _builder;
134 };
Definition: Logger.h:32
The main class of Hyperion.
Definition: Hyperion.h:57
Socket (client) of FlatBufferServer.
Definition: FlatBufferClient.h:24
Components
Enumeration of components in Hyperion.
Definition: Components.h:10
Definition: FlatBufferClient.h:17