Parse unsigned key

This commit is contained in:
Konstantinos Sideris 2017-11-06 22:14:16 +02:00
parent 9cf5bf3833
commit 24dd76ee0b
3 changed files with 181 additions and 117 deletions

View file

@ -60,6 +60,24 @@ isMessageEvent(EventType type);
bool
isStateEvent(EventType type);
class UnsignedData
: public Deserializable
, public Serializable
{
public:
double age() const { return age_; }
QString transactionId() const { return transaction_id_; }
bool isEmpty() const { return age_ <= 0 && transaction_id_.isEmpty(); }
void deserialize(const QJsonValue &data) override;
QJsonObject serialize() const override;
private:
double age_ = 0;
QString transaction_id_;
};
template<class Content>
class Event
: public Deserializable
@ -68,6 +86,7 @@ class Event
public:
Content content() const;
EventType eventType() const;
UnsignedData unsignedData() const { return unsignedData_; }
void deserialize(const QJsonValue &data) override;
QJsonObject serialize() const override;
@ -75,6 +94,7 @@ public:
private:
Content content_;
EventType type_;
UnsignedData unsignedData_;
};
template<class Content>
@ -102,6 +122,9 @@ Event<Content>::deserialize(const QJsonValue &data)
content_.deserialize(object.value("content"));
type_ = extractEventType(object);
if (object.contains("unsigned"))
unsignedData_.deserialize(object.value("unsigned"));
}
template<class Content>
@ -151,6 +174,9 @@ Event<Content>::serialize() const
object["content"] = content_.serialize();
if (!unsignedData_.isEmpty())
object["unsigned"] = unsignedData_.serialize();
return object;
}
} // namespace events