From e57b4f75b55c2befad4f9944f43c8aa2310321b7 Mon Sep 17 00:00:00 2001 From: Raquel Medina Date: Thu, 9 Apr 2020 16:39:32 +0200 Subject: add missing overrides in ResponseMessage The original message hierarchy rework patch is missing functionality which results in received replies being discarded. Basically, ResponseMessage class is missing the override required to match replies to the original calls. Bug-AGL: SPEC-3112 Fixes: 0ed292d3ccf9 (rework Message hierarchy) Signed-off-by: Raquel Medina Change-Id: I39030ef212b2175a590deca02f9f9ff41bf7abf4 --- callmessage.cpp | 5 ++--- message.h | 5 ++++- responsemessage.cpp | 27 +-------------------------- responsemessage.h | 7 ++++++- 4 files changed, 13 insertions(+), 31 deletions(-) diff --git a/callmessage.cpp b/callmessage.cpp index 4afb071..1dfa72e 100644 --- a/callmessage.cpp +++ b/callmessage.cpp @@ -49,8 +49,7 @@ QByteArray CallMessage::serialize(QJsonDocument::JsonFormat format) array.append(m_request["api"].toString() + "/" + m_request["verb"].toString()); array.append(m_request["parameter"].toJsonValue()); - QJsonDocument jdoc; - jdoc.setArray(array); + m_jdoc.setArray(array); - return jdoc.toJson(format).data(); + return m_jdoc.toJson(format).data(); } diff --git a/message.h b/message.h index 0b5ad64..38936f3 100644 --- a/message.h +++ b/message.h @@ -37,7 +37,10 @@ class Message { public: Message(); - void setAdditionalData(QByteArray data) {}; + virtual bool setAdditionalData(QByteArray data) + { + return false; + } QByteArray send(QWebSocket& transport, unsigned int callid); inline bool isComplete() const diff --git a/responsemessage.cpp b/responsemessage.cpp index 96dab97..9f8e6f2 100644 --- a/responsemessage.cpp +++ b/responsemessage.cpp @@ -22,35 +22,10 @@ #include "responsemessage.h" -//deprecated method call new constructor and setAdditionalData() instead: -ResponseMessage::ResponseMessage(QByteArray request) -{ - - QJsonDocument jdoc(QJsonDocument::fromJson(request)); - - if (!jdoc.isArray()) { - qWarning("Invalid appfw message: not an array"); - return; - } - - QJsonArray msg = jdoc.array(); - - if (msg.size() != 4) { - qWarning("Invalid appfw message: invalid array size"); - return; - } - - QStringList api_str_list = msg[2].toString().split(QRegExp("/")); - - m_request["msgid"] = msg.at(0); - m_request["callid"] = msg.at(1); - m_request["api"] = api_str_list[0]; - m_request["verb"] = api_str_list[1]; - m_request["parameter"] = msg.at(3); -} ResponseMessage::ResponseMessage(QJsonDocument content) { + m_jdoc = content; QJsonArray msg = content.array(); if (!msg[2].isObject()) { qWarning("Invalid appfw payload: no JSON object"); diff --git a/responsemessage.h b/responsemessage.h index edad3b1..bac4296 100644 --- a/responsemessage.h +++ b/responsemessage.h @@ -60,6 +60,11 @@ class ResponseMessage : public Message return m_reply_data; } + bool getCallId(unsigned int *id) const override + { + *id = m_reply_callid; + return true; + } bool isEvent() override { return false; @@ -70,7 +75,7 @@ class ResponseMessage : public Message return true; } - bool setAdditionalData(QByteArray data); + bool setAdditionalData(QByteArray data) override; bool copyCallId(unsigned int *id); QByteArray serialize(QJsonDocument::JsonFormat format = QJsonDocument::Compact) override; -- cgit 1.2.3-korg