#pragma once #include #include #include #include #include "JsonCommandStatus.h" #include "JsonCommandDescription.h" #include "IJsonCommandInfo.h" namespace Incart::Net::WebApi { class JsonCommand : public QObject { Q_OBJECT private: std::shared_ptr m_description; public: uint32_t uid = 0; // define by execute method public: JsonCommand(std::shared_ptr description, QObject* parent = nullptr) : QObject(parent) , m_description(description) { } virtual ~JsonCommand() { } public: std::string getName() { return m_description->name; } std::string toString(size_t spaceCount) { return m_description->toString(spaceCount, true); } virtual std::shared_ptr execute(std::shared_ptr launchedCommandInfo)=0; signals: void answerIsReady(JsonCommand* command, QJsonDocument answer, std::shared_ptr statusInfo); }; } // namespace Incart::Net::WebApi