From e9448fa9b295ce589aa68a005226298536d1c0c2 Mon Sep 17 00:00:00 2001 From: "evgenii.tagiltsev" <tagiltsev.evgenii@gmail.com> Date: Wed, 9 Oct 2019 13:08:59 +0200 Subject: [PATCH] [*] fixed QByteArray for RPC protocol --- .../DapCommandController.cpp | 65 ++++++++----------- CellFrameDashboardGUI/DapCommandController.h | 4 -- .../DapChainDashboardService.cpp | 14 ---- .../DapChainDashboardService.h | 2 - DapRPCProtocol/DapRpcMessage.cpp | 10 ++- DapRPCProtocol/DapRpcMessage.h | 3 +- DapRPCProtocol/DapRpcService.cpp | 20 ++++-- DapRPCProtocol/DapRpcServiceProvider.cpp | 2 +- 8 files changed, 50 insertions(+), 70 deletions(-) diff --git a/CellFrameDashboardGUI/DapCommandController.cpp b/CellFrameDashboardGUI/DapCommandController.cpp index d3673ba..18d82a6 100755 --- a/CellFrameDashboardGUI/DapCommandController.cpp +++ b/CellFrameDashboardGUI/DapCommandController.cpp @@ -1,5 +1,8 @@ #include "DapCommandController.h" +#include <DapNodeType.h> +#include <QDataStream> + /// Overloaded constructor. /// @param apIODevice Data transfer device. /// @param apParent Parent. @@ -36,7 +39,7 @@ void DapCommandController::processCommandResult() qWarning() << "Invalid response received"; return; } - emit sigCommandResult(reply->response().result()); + emit sigCommandResult(reply->response().toJsonValue()); } /// Get node logs. @@ -71,12 +74,6 @@ void DapCommandController::getCmdHistory() connect(reply, SIGNAL(finished()), this, SLOT(processGetCmdHistory())); } -void DapCommandController::getTest() -{ - DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.getTest"); - connect(reply, SIGNAL(finished()), this, SLOT(processGetTest())); -} - void DapCommandController::processChangedLog() { // QStringList tempLogModel; @@ -94,8 +91,8 @@ void DapCommandController::processGetNodeLogs() qWarning() << "Invalid response received"; return; } - emit sigCommandResult(reply->response().result()); - emit sigNodeLogsReceived(reply->response().result().toVariant().toStringList()); + emit sigCommandResult(reply->response().toJsonValue()); + emit sigNodeLogsReceived(reply->response().toJsonValue().toVariant().toStringList()); } /// @@ -107,9 +104,9 @@ void DapCommandController::processAddWallet() qWarning() << "Invalid response received"; return; } - emit sigCommandResult(reply->response().result()); - auto name = reply->response().result().toVariant().toStringList().at(0); - auto address = reply->response().result().toVariant().toStringList().at(1); + emit sigCommandResult(reply->response().toJsonValue()); + auto name = reply->response().toJsonValue().toVariant().toStringList().at(0); + auto address = reply->response().toJsonValue().toVariant().toStringList().at(1); emit sigWalletAdded(name, address); } @@ -122,8 +119,8 @@ void DapCommandController::processSendToken() return; } qInfo() << reply->response(); - emit sigCommandResult(reply->response().result()); - auto answer = reply->response().result().toVariant().toString(); + emit sigCommandResult(reply->response().toJsonValue()); + auto answer = reply->response().toJsonValue().toVariant().toString(); emit onTokenSended(answer); } @@ -135,22 +132,22 @@ void DapCommandController::processGetWallets() qWarning() << "Invalid response received"; return; } - emit sigCommandResult(reply->response().result()); - emit sigWalletsReceived(reply->response().result().toVariant().toMap()); + emit sigCommandResult(reply->response().toJsonValue()); + emit sigWalletsReceived(reply->response().toJsonValue().toVariant().toMap()); } void DapCommandController::processGetWalletInfo() { qInfo() << "processGetWalletInfo()"; DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - if (!reply || reply->response().result().toVariant().toStringList().count() <= 0) { + if (!reply || reply->response().toJsonValue().toVariant().toStringList().count() <= 0) { qWarning() << "Invalid response received"; return; } - emit sigCommandResult(reply->response().result()); - QString name = reply->response().result().toVariant().toStringList().at(0); - QString address = reply->response().result().toVariant().toStringList().at(1); - QStringList temp = reply->response().result().toVariant().toStringList(); + emit sigCommandResult(reply->response().toJsonValue()); + QString name = reply->response().toJsonValue().toVariant().toStringList().at(0); + QString address = reply->response().toJsonValue().toVariant().toStringList().at(1); + QStringList temp = reply->response().toJsonValue().toVariant().toStringList(); QStringList tokens; QStringList balance; for(int x{2}; x < temp.count(); x++) @@ -173,28 +170,28 @@ void DapCommandController::processGetWalletInfo() void DapCommandController::processGetNodeNetwork() { DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - emit sendNodeNetwork(reply->response().result().toVariant()); + emit sendNodeNetwork(reply->response().toJsonValue().toVariant()); } void DapCommandController::processGetNodeStatus() { DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - emit sendNodeStatus(reply->response().result().toVariant()); + emit sendNodeStatus(reply->response().toJsonValue().toVariant()); } void DapCommandController::processExecuteCommand() { qInfo() << "processGetWalletInfo()"; DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - if (!reply || reply->response().result().toVariant().toStringList().isEmpty()) { + if (!reply || reply->response().toJsonValue().toVariant().toStringList().isEmpty()) { QString result = "Invalid response received"; qWarning() << result; emit executeCommandChanged(result); return; } - emit sigCommandResult(reply->response().result()); - QString result = reply->response().result().toVariant().toStringList().at(0); + emit sigCommandResult(reply->response().toJsonValue()); + QString result = reply->response().toJsonValue().toVariant().toStringList().at(0); emit executeCommandChanged(result); } @@ -202,32 +199,24 @@ void DapCommandController::processGetHistory() { qDebug() << "processGetHistory()"; DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - QVariant result = reply->response().result().toArray().toVariantList(); + QVariant result = reply->response().toJsonValue().toArray().toVariantList(); emit sendHistory(result); } void DapCommandController::processResponseConsole() { DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - QString result = reply->response().result().toVariant().toString(); + QString result = reply->response().toJsonValue().toVariant().toString(); emit responseConsole(result); } void DapCommandController::processGetCmdHistory() { DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - QString result = reply->response().result().toVariant().toString(); + QString result = reply->response().toJsonValue().toVariant().toString(); emit sigCmdHistory(result); } -void DapCommandController::processGetTest() -{ - qDebug() << "!!!!!!!!processGetTest!!!!!!!!!!"; - DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender()); - QByteArray result = reply->response().result().toVariant().toByteArray(); - qDebug() << result; -} - /// Show or hide GUI client by clicking on the tray icon. /// @param aIsActivated Accepts true - when requesting to /// display a client, falso - when requesting to hide a client. @@ -266,8 +255,6 @@ void DapCommandController::getWallets() { DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.getWallets"); connect(reply, SIGNAL(finished()), this, SLOT(processGetWallets())); - getTest(); - } void DapCommandController::getWalletInfo(const QString& asWalletName) diff --git a/CellFrameDashboardGUI/DapCommandController.h b/CellFrameDashboardGUI/DapCommandController.h index 2f6e3f0..845f95c 100755 --- a/CellFrameDashboardGUI/DapCommandController.h +++ b/CellFrameDashboardGUI/DapCommandController.h @@ -84,8 +84,6 @@ private slots: void processGetCmdHistory(); - void processGetTest(); - public slots: /// Show or hide GUI client by clicking on the tray icon. /// @param aIsActivated Accepts true - when requesting to @@ -121,8 +119,6 @@ public slots: void requestConsole(const QString& aQueue); /// Get command history void getCmdHistory(); - - void getTest(); }; #endif // COMMANDCONTROLLER_H diff --git a/CellFrameDashboardService/DapChainDashboardService.cpp b/CellFrameDashboardService/DapChainDashboardService.cpp index c98290f..fa588c8 100755 --- a/CellFrameDashboardService/DapChainDashboardService.cpp +++ b/CellFrameDashboardService/DapChainDashboardService.cpp @@ -100,20 +100,6 @@ QString DapChainDashboardService::getCmdHistory() const return m_pDapChainConsoleHandler->getHistory(); } -QByteArray DapChainDashboardService::getTest() const -{ - QByteArray data; - QDataStream out(&data, QIODevice::WriteOnly); - - DapNodeData nodeData; - nodeData.Cell = 1; - nodeData.Ipv4 = "mua"; - - out << nodeData; - - return data; -} - void DapChainDashboardService::doRequestWallets() { m_pDapChainHistoryHandler->onRequestNewHistory(m_pDapChainWalletHandler->getWallets()); diff --git a/CellFrameDashboardService/DapChainDashboardService.h b/CellFrameDashboardService/DapChainDashboardService.h index 6844f60..6f1fe70 100755 --- a/CellFrameDashboardService/DapChainDashboardService.h +++ b/CellFrameDashboardService/DapChainDashboardService.h @@ -111,8 +111,6 @@ public slots: /// @return history of last 50 commands QString getCmdHistory() const; - QByteArray getTest() const; - private slots: void doRequestWallets(); void doSendNewHistory(const QVariant& aData); diff --git a/DapRPCProtocol/DapRpcMessage.cpp b/DapRPCProtocol/DapRpcMessage.cpp index 43aba8e..a2a8359 100644 --- a/DapRPCProtocol/DapRpcMessage.cpp +++ b/DapRPCProtocol/DapRpcMessage.cpp @@ -305,7 +305,7 @@ QJsonValue DapRpcMessage::params() const return d->m_pObject->value(QLatin1String("params")); } -QJsonValue DapRpcMessage::result() const +QJsonValue DapRpcMessage::toJsonValue() const { if (d->m_type != DapRpcMessage::Response || !d->m_pObject) return QJsonValue(QJsonValue::Undefined); @@ -313,6 +313,12 @@ QJsonValue DapRpcMessage::result() const return d->m_pObject->value(QLatin1String("result")); } +QByteArray DapRpcMessage::toByteArray() const +{ + QJsonValue value = toJsonValue(); + return QByteArray::fromHex(value.toVariant().toByteArray()); +} + int DapRpcMessage::errorCode() const { if (d->m_type != DapRpcMessage::Error || !d->m_pObject) @@ -374,7 +380,7 @@ QDebug operator<<(QDebug dbg, const DapRpcMessage &msg) dbg.nospace() << ", method=" << msg.method() << ", params=" << msg.params(); } else if (msg.type() == DapRpcMessage::Response) { - dbg.nospace() << ", result=" << msg.result(); + dbg.nospace() << ", result=" << msg.toJsonValue(); } else if (msg.type() == DapRpcMessage::Error) { dbg.nospace() << ", code=" << msg.errorCode() << ", message=" << msg.errorMessage() diff --git a/DapRPCProtocol/DapRpcMessage.h b/DapRPCProtocol/DapRpcMessage.h index dc3164b..489ae57 100644 --- a/DapRPCProtocol/DapRpcMessage.h +++ b/DapRPCProtocol/DapRpcMessage.h @@ -71,7 +71,8 @@ public: QJsonValue params() const; // response - QJsonValue result() const; + QJsonValue toJsonValue() const; + QByteArray toByteArray() const; // error int errorCode() const; diff --git a/DapRPCProtocol/DapRpcService.cpp b/DapRPCProtocol/DapRpcService.cpp index 34aad0f..6c37bbf 100644 --- a/DapRPCProtocol/DapRpcService.cpp +++ b/DapRPCProtocol/DapRpcService.cpp @@ -93,13 +93,18 @@ int DapRpcService::convertVariantTypeToJSType(int aType) case QMetaType::ULongLong: case QMetaType::UShort: case QMetaType::UChar: - case QMetaType::QByteArray: - case QMetaType::Float: return QJsonValue::Double; // all numeric types in js are doubles + case QMetaType::Float: + return QJsonValue::Double; // all numeric types in js are doubles case QMetaType::QVariantList: - case QMetaType::QStringList: return QJsonValue::Array; - case QMetaType::QVariantMap: return QJsonValue::Object; - case QMetaType::QString: return QJsonValue::String; - case QMetaType::Bool: return QJsonValue::Bool; + case QMetaType::QStringList: + return QJsonValue::Array; + case QMetaType::QVariantMap: + return QJsonValue::Object; + case QMetaType::QByteArray: + case QMetaType::QString: + return QJsonValue::String; + case QMetaType::Bool: + return QJsonValue::Bool; default: break; } @@ -223,8 +228,9 @@ QJsonValue DapRpcService::convertReturnValue(QVariant &aReturnValue) case QMetaType::QStringList: case QMetaType::QVariantList: case QMetaType::QVariantMap: - case QMetaType::QByteArray: return QJsonValue::fromVariant(aReturnValue); + case QMetaType::QByteArray: + return QJsonValue::fromVariant(aReturnValue.toByteArray().toHex()); default: // if a conversion operator was registered it will be used if (aReturnValue.convert(QMetaType::QJsonValue)) diff --git a/DapRPCProtocol/DapRpcServiceProvider.cpp b/DapRPCProtocol/DapRpcServiceProvider.cpp index 106e9fe..71168a8 100644 --- a/DapRPCProtocol/DapRpcServiceProvider.cpp +++ b/DapRPCProtocol/DapRpcServiceProvider.cpp @@ -89,5 +89,5 @@ void DapRpcServiceProvider::processMessage(DapRpcSocket *apSocket, const DapRpcM apSocket->notify(error); break; } - }; + } } -- GitLab