diff --git a/CellFrameDashboardGUI/DapCommandController.cpp b/CellFrameDashboardGUI/DapCommandController.cpp index 47562227a6d7cb21cf7422882613cefa457157d7..11d2e5225f6dac4904369f25a9c3338de0b88aba 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. @@ -51,6 +54,7 @@ void DapCommandController::getHistory() { DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.getHistory"); connect(reply, SIGNAL(finished()), this, SLOT(processGetHistory())); + } void DapCommandController::setNewHistory(const QVariant& aData) @@ -92,8 +96,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()); } /// @@ -105,9 +109,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); } @@ -120,8 +124,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); } @@ -133,22 +137,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++) @@ -171,49 +175,49 @@ 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); } void DapCommandController::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); } diff --git a/DapRPCProtocol/DapRpcLocalServer.cpp b/DapRPCProtocol/DapRpcLocalServer.cpp index 11a2e842352b3a1d14409ad41abfd1e5ad0505ba..bb1b65b3a607dd2d1e622f6aee24c60775f274db 100644 --- a/DapRPCProtocol/DapRpcLocalServer.cpp +++ b/DapRPCProtocol/DapRpcLocalServer.cpp @@ -21,7 +21,7 @@ DapRpcLocalServer::~DapRpcLocalServer() bool DapRpcLocalServer::listen(const QString &asAddress, quint16 aPort) { - Q_UNUSED(aPort); + Q_UNUSED(aPort) return QLocalServer::listen(asAddress); } diff --git a/DapRPCProtocol/DapRpcMessage.cpp b/DapRPCProtocol/DapRpcMessage.cpp index d07901ba323cb17da89f438a5c3adb773e5216e8..a2a835937a4d58cc4614b05cfc73b67a2ad77ad5 100644 --- a/DapRPCProtocol/DapRpcMessage.cpp +++ b/DapRPCProtocol/DapRpcMessage.cpp @@ -204,6 +204,12 @@ DapRpcMessage DapRpcMessage::createRequest(const QString &asMethod, return request; } +DapRpcMessage DapRpcMessage::createRequest(const QString& asMethod, const QByteArray& aStream) +{ + DapRpcMessage request = createRequest(asMethod, QJsonValue::fromVariant(aStream)); + return request; +} + DapRpcMessage DapRpcMessage::createNotification(const QString &asMethod, const QJsonArray &aParams) { DapRpcMessage notification = DapRpcMessagePrivate::createBasicRequest(asMethod, aParams); @@ -227,6 +233,12 @@ DapRpcMessage DapRpcMessage::createNotification(const QString &asMethod, return notification; } +DapRpcMessage DapRpcMessage::createNotification(const QString& asMethod, const QByteArray& aStream) +{ + DapRpcMessage notification = createNotification(asMethod, QJsonValue::fromVariant(aStream)); + return notification; +} + DapRpcMessage DapRpcMessage::createResponse(const QJsonValue &aResult) const { DapRpcMessage response; @@ -293,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); @@ -301,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) @@ -362,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 92b47aaa6648a9b84b656d7c621efb163c61cb77..489ae5787eb3a3894d65c2460eac5fbb0849f721 100644 --- a/DapRPCProtocol/DapRpcMessage.h +++ b/DapRPCProtocol/DapRpcMessage.h @@ -47,16 +47,15 @@ public: Error }; - static DapRpcMessage createRequest(const QString &asMethod, - const QJsonArray &aParams = QJsonArray()); + static DapRpcMessage createRequest(const QString &asMethod, const QJsonArray &aParams = QJsonArray()); static DapRpcMessage createRequest(const QString &asMethod, const QJsonValue &aParam); static DapRpcMessage createRequest(const QString &asMethod, const QJsonObject &aNamedParameters); + static DapRpcMessage createRequest(const QString &asMethod, const QByteArray& aStream); - static DapRpcMessage createNotification(const QString &asMethod, - const QJsonArray &aParams = QJsonArray()); + static DapRpcMessage createNotification(const QString &asMethod, const QJsonArray &aParams = QJsonArray()); static DapRpcMessage createNotification(const QString &asMethod, const QJsonValue &aParam); - static DapRpcMessage createNotification(const QString &asMethod, - const QJsonObject &aNamedParameters); + static DapRpcMessage createNotification(const QString &asMethod, const QJsonObject &aNamedParameters); + static DapRpcMessage createNotification(const QString &asMethod, const QByteArray& aStream); DapRpcMessage createResponse(const QJsonValue &aResult) const; DapRpcMessage createErrorResponse(DapErrorCode aCode, @@ -72,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 7159d4acc52112f43e4bf40e61e473511ea995bd..6c37bbf190d11d8dbb931e0f8ce77924a7fb62f3 100644 --- a/DapRPCProtocol/DapRpcService.cpp +++ b/DapRPCProtocol/DapRpcService.cpp @@ -100,12 +100,12 @@ int DapRpcService::convertVariantTypeToJSType(int aType) 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; + default: break; } return QJsonValue::Undefined; @@ -217,7 +217,7 @@ QJsonValue DapRpcService::convertReturnValue(QVariant &aReturnValue) else if (static_cast<int>(aReturnValue.type()) == qMetaTypeId<QJsonArray>()) return QJsonValue(aReturnValue.toJsonArray()); - switch (aReturnValue.type()) { + switch (static_cast<QMetaType::Type>(aReturnValue.type())) { case QMetaType::Bool: case QMetaType::Int: case QMetaType::Double: @@ -229,6 +229,8 @@ QJsonValue DapRpcService::convertReturnValue(QVariant &aReturnValue) case QMetaType::QVariantList: case QMetaType::QVariantMap: 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 106e9fe61c693f896dc18f60d03362a22406ecd6..71168a8f88a8555a50a78379292923cc9a04c172 100644 --- a/DapRPCProtocol/DapRpcServiceProvider.cpp +++ b/DapRPCProtocol/DapRpcServiceProvider.cpp @@ -89,5 +89,5 @@ void DapRpcServiceProvider::processMessage(DapRpcSocket *apSocket, const DapRpcM apSocket->notify(error); break; } - }; + } }