diff options
Diffstat (limited to 'protocol.h')
-rw-r--r-- | protocol.h | 92 |
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 |