summaryrefslogtreecommitdiffstats
path: root/protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocol.h')
-rw-r--r--protocol.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/protocol.h b/protocol.h
new file mode 100644
index 0000000..f918565
--- /dev/null
+++ b/protocol.h
@@ -0,0 +1,92 @@
+#ifndef PROTOCOL_H
+#define PROTOCOL_H
+
+#include <QtCore/QRectF>
+
+struct Message
+{
+ enum MessageType
+ {
+ InvalidMessage,
+ RequestMessage,
+ ResponseMessage,
+ EventMessage
+ };
+
+ inline Message(MessageType message = InvalidMessage, quint16 type = -1, quint32 id = -1, const QRectF &rect = QRectF())
+ : message(message), type(type), id(id), rect(rect) {}
+
+ quint16 message;
+ quint16 type;
+ quint32 id;
+ QRectF rect;
+};
+
+struct Request : public Message
+{
+ enum RequestType
+ {
+ InvalidRequest,
+ CreateRequest,
+ DestroyRequest,
+ ShowRequest,
+ HideRequest,
+ RaiseRequest,
+ LowerRequest,
+ UpdateRequest,
+ SetGeometryRequest,
+ };
+
+ inline Request(RequestType type = InvalidRequest, quint32 id = -1, const QRectF &rect = QRectF())
+ : Message(RequestMessage, type, id, rect) {}
+};
+
+struct Response : public Message
+{
+ enum ResponseType
+ {
+ InvalidResponse,
+ CreatedResponse
+ };
+
+ inline Response(ResponseType type = InvalidResponse, quint32 id = -1, const QRectF &rect = QRectF())
+ : Message(ResponseMessage, type, id, rect) {}
+};
+
+struct Event : public Message
+{
+ enum EventType
+ {
+ InvalidEvent,
+ ErrorEvent,
+ ShowEvent,
+ HideEvent,
+ PaintEvent,
+ GeometryChangeEvent,
+ MousePressEvent,
+ MouseReleaseEvent,
+ };
+
+ inline Event(EventType type = InvalidEvent, quint32 id = -1, const QRectF &rect = QRectF())
+ : Message(EventMessage, type, id, rect) {}
+};
+
+inline QDataStream &operator>>(QDataStream &in, Message &message)
+{
+ in >> message.message;
+ in >> message.type;
+ in >> message.id;
+ in >> message.rect;
+ return in;
+}
+
+inline QDataStream &operator<<(QDataStream &out, const Message &message)
+{
+ out << message.message;
+ out << message.type;
+ out << message.id;
+ out << message.rect;
+ return out;
+}
+
+#endif//PROTOCOL_H