// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include <QVariant> #include <QDataStream> /** * @brief Class used to encapsulate a packet which may be sent to another version of VS. */ class VS_GUI_EXPORT Packet { public: enum Types { WAKEUP = 0x01, OPEN_FILES = 0x02, UNKNOWN = 0x00 }; Packet(const quint8 type = UNKNOWN, const quint16 payloadSize = 0, const QByteArray payload = QByteArray()); ~Packet() {} Packet(const Packet& copie); /** * @brief Returns the type of the packet */ quint8 getType() const; /** * @brief Returns the payload size of the packet */ quint16 getPayloadSize() const; /** * @brief Get the payload of the packet */ QByteArray getPayload() const; private: quint8 type; quint16 payloadSize; QByteArray payload; /** * @brief To send a packet through a data stream * @param out input data stream * @param value packet to send * @return filled data stream */ friend QDataStream& operator<<(QDataStream& out, const Packet& value); /** * @brief constructs a packed from a data stream * @param in input stream * @param value Resulting packet * @return emptied stream */ friend QDataStream& operator>>(QDataStream& in, Packet& value); }; Q_DECLARE_METATYPE(Packet) QDataStream& operator<<(QDataStream& out, const Packet& value); QDataStream& operator>>(QDataStream& in, Packet& value);