JS8Call-Improved master
Loading...
Searching...
No Matches
Message.h
1#ifndef MESSAGE_HPP
2#define MESSAGE_HPP
3
7
8#include <QByteArray>
9#include <QJsonDocument>
10#include <QJsonObject>
11#include <QMap>
12#include <QSharedDataPointer>
13#include <QString>
14#include <QVariant>
15
16class Message final {
17 public:
18 // Constructors
19
20 Message();
21 Message(QString const &type, QString const &value = {});
22 Message(QString const &type, QString const &value,
23 QVariantMap const &params);
24
25 // Copying and moving
26
27 Message(Message const &);
28 Message &operator=(Message const &);
29 Message(Message &&) noexcept;
30 Message &operator=(Message &&) noexcept;
31
32 // Destructor
33
34 ~Message();
35
36 // Accessors
37
38 qint64 id() const;
39 QString type() const;
40 QString value() const;
41 QVariantMap params() const;
42
43 // Manipulators
44
45 qint64 ensureId();
46 void setType(QString const &);
47 void setValue(QString const &);
48
49 // Conversions
50
51 QByteArray toJson() const;
52 QJsonDocument toJsonDocument() const;
53 QJsonObject toJsonObject() const;
54 QVariantMap toVariantMap() const;
55
56 // Deserialization
57
58 static Message fromJson(QByteArray const &);
59 static Message fromJson(QJsonDocument const &);
60 static Message fromJson(QJsonObject const &);
61
62 private:
63 // Shared data implementation
64
65 struct Data;
66 QSharedDataPointer<Data> d_;
67};
68
69Q_DECLARE_TYPEINFO(Message, Q_MOVABLE_TYPE);
70
71#endif // MESSAGE_HPP
Definition Message.h:16
Definition Message.cpp:32