From d05de3b235f0f1c726fc8ca5fffcc7d4bc7758f1 Mon Sep 17 00:00:00 2001 From: EndrII Date: Sun, 14 Jan 2024 13:46:28 +0100 Subject: [PATCH] use hash insteat set --- Patronum/src/IPService.h | 4 +++- Patronum/src/PController.cpp | 4 ++-- Patronum/src/PFeature.cpp | 10 ++-------- Patronum/src/PFeature.h | 14 ++++++-------- Patronum/src/PServiceBase.cpp | 2 +- Patronum/src/PServiceBase.h | 4 +++- Patronum/src/Private/controllerprivate.cpp | 12 ++++++++---- Patronum/src/Private/controllerprivate.h | 3 ++- Patronum/src/Private/serviceprivate.cpp | 16 ++++++++-------- Patronum/src/Private/serviceprivate.h | 2 +- 10 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Patronum/src/IPService.h b/Patronum/src/IPService.h index bcca249..da808ec 100644 --- a/Patronum/src/IPService.h +++ b/Patronum/src/IPService.h @@ -29,7 +29,7 @@ public: * For each command will invoke the IService::handleReceive method. * @param data This is array of the incomming requests (commands) */ - virtual void handleReceiveData(const QSet& data) = 0; + virtual void handleReceiveData(const QHash& data) = 0; /** * @brief handleReceive This method invoked when service receive a request from terminal. @@ -37,6 +37,8 @@ public: * @param data This is input data. * @return This method should be return true if the @a data command is supported and processed successful. * IF you return false then a negative message will be sent to a terminal app. + * @see ServiceBase::handleReceiveData + */ virtual bool handleReceive(const Feature &data) = 0; diff --git a/Patronum/src/PController.cpp b/Patronum/src/PController.cpp index 3c1c634..43b0e9f 100644 --- a/Patronum/src/PController.cpp +++ b/Patronum/src/PController.cpp @@ -65,7 +65,7 @@ bool Controller::send() { return d_ptr->pause(); } - QSet sendData = {}; + QHash sendData = {}; auto userParams = QuasarAppUtils::Params::getUserParamsMap(); for (auto val = userParams.begin(); val != userParams.end(); ++val) { @@ -75,7 +75,7 @@ bool Controller::send() { continue; } - sendData.insert(Feature{val.key(), val.value()}); + sendData.insert(val.key(), Feature{val.key(), val.value()}); } if (!d_ptr->sendCmd(sendData)) { diff --git a/Patronum/src/PFeature.cpp b/Patronum/src/PFeature.cpp index 8e31ffa..ea918f6 100644 --- a/Patronum/src/PFeature.cpp +++ b/Patronum/src/PFeature.cpp @@ -25,7 +25,6 @@ QString Feature::cmd() const { void Feature::setCmd(const QString &cmd) { _cmd = cmd; - _id = qHash(_cmd); } QString Feature::arg() const { @@ -59,10 +58,6 @@ QString Feature::toString() const { return _cmd; } -unsigned int Feature::id() const { - return _id; -} - QDataStream &operator<<(QDataStream &stream, const Feature &obj) { stream << obj._cmd << obj._arg; @@ -78,12 +73,11 @@ QDataStream &operator>>(QDataStream &stream, Feature &obj) { } bool operator==(const Feature &left, const Feature &right) { - return left.id() == right.id(); + return left.cmd() == right.cmd(); } - uint qHash(const Feature &feature) { - return feature.id(); + return qHash(feature.cmd()); } } diff --git a/Patronum/src/PFeature.h b/Patronum/src/PFeature.h index ca68de2..e3868fc 100644 --- a/Patronum/src/PFeature.h +++ b/Patronum/src/PFeature.h @@ -10,7 +10,7 @@ #include #include -#include +#include #include namespace Patronum { @@ -43,6 +43,11 @@ public: * @return Argument value. */ QString arg() const; + + /** + * @brief setArg This method sets arg value for this object. + * @param arg This is a new value. + */ void setArg(const QString &arg); PATRONUM_LIBRARYSHARED_EXPORT friend QDataStream& operator<<(QDataStream& stream, const Feature& obj); @@ -80,15 +85,8 @@ public: */ QString toString() const; - /** - * @brief id This method retun id of the feature. The id is qHash from command string. - * @return id of the feature. - */ - unsigned int id() const; private: - - unsigned int _id; QString _cmd; QString _description; QString _example; diff --git a/Patronum/src/PServiceBase.cpp b/Patronum/src/PServiceBase.cpp index 2918665..c20a3ed 100644 --- a/Patronum/src/PServiceBase.cpp +++ b/Patronum/src/PServiceBase.cpp @@ -47,7 +47,7 @@ ServiceBase::~ServiceBase() { } } -void ServiceBase::handleReceiveData(const QSet &data) { +void ServiceBase::handleReceiveData(const QHash &data) { auto list = supportedFeatures(); QString commandList; diff --git a/Patronum/src/PServiceBase.h b/Patronum/src/PServiceBase.h index e1192aa..7fab395 100644 --- a/Patronum/src/PServiceBase.h +++ b/Patronum/src/PServiceBase.h @@ -46,8 +46,10 @@ protected: * @brief handleReceiveData - This method invoice when service receive new command from terminal of controller of this service. * @param data - Is list of commands from controller. * Default implementation send message about error, and invoke the. + * @note If you override this method the ServiceBase::handleReceive method wil not invoked wuthou base implementation of thism method. + * @see ServiceBase::handleReceive */ - void handleReceiveData(const QSet &data) override final; + void handleReceiveData(const QHash &data) override; /** * @brief supportedFeatures diff --git a/Patronum/src/Private/controllerprivate.cpp b/Patronum/src/Private/controllerprivate.cpp index 1157895..1763c92 100644 --- a/Patronum/src/Private/controllerprivate.cpp +++ b/Patronum/src/Private/controllerprivate.cpp @@ -48,7 +48,7 @@ bool ControllerPrivate::sendFeaturesRequest() { return _socket->send(_parser->createPackage(Command::FeaturesRequest)); } -bool ControllerPrivate::sendCmd(const QSet &result) { +bool ControllerPrivate::sendCmd(const QHash &result) { if (!_socket->isValid()) { QuasarAppUtils::Params::log("scoket is closed!", QuasarAppUtils::Debug); @@ -64,16 +64,20 @@ bool ControllerPrivate::sendCmd(const QSet &result) { return false; } +bool ControllerPrivate::sendCmd(const QString &cmd) { + return sendCmd({{cmd, Feature(cmd)}}); +} + bool ControllerPrivate::stop() { - return sendCmd({Feature("stop")}); + return sendCmd("stop"); } bool ControllerPrivate::pause() { - return sendCmd({Feature("pause")}); + return sendCmd("pause"); } bool ControllerPrivate::resume() { - return sendCmd({Feature("resume")}); + return sendCmd("resume"); } QList ControllerPrivate::features() const { diff --git a/Patronum/src/Private/controllerprivate.h b/Patronum/src/Private/controllerprivate.h index 86c005b..2d9f8bb 100644 --- a/Patronum/src/Private/controllerprivate.h +++ b/Patronum/src/Private/controllerprivate.h @@ -22,7 +22,8 @@ public: ControllerPrivate(IController* controller = nullptr, QObject *parent = nullptr); ~ControllerPrivate(); bool sendFeaturesRequest(); - bool sendCmd(const QSet &result); + bool sendCmd(const QHash &result); + bool sendCmd(const QString &cmd); bool stop(); bool pause(); diff --git a/Patronum/src/Private/serviceprivate.cpp b/Patronum/src/Private/serviceprivate.cpp index df5f671..3dd1622 100644 --- a/Patronum/src/Private/serviceprivate.cpp +++ b/Patronum/src/Private/serviceprivate.cpp @@ -156,7 +156,7 @@ bool ServicePrivate::startDeamon() { return true; } -bool ServicePrivate::handleStandartCmd(QSet *cmds) { +bool ServicePrivate::handleStandartCmd(QHash *cmds) { if (!cmds) return false; @@ -164,17 +164,17 @@ bool ServicePrivate::handleStandartCmd(QSet *cmds) { if (!_service) return false; - if (cmds->contains(Feature{"stop"})) { + if (cmds->contains("stop")) { _service->onStop(); - cmds->remove(Feature{"stop"}); + cmds->remove("stop"); - } else if (cmds->contains(Feature{"pause"})) { + } else if (cmds->contains("pause")) { _service->onPause(); - cmds->remove(Feature{"pause"}); + cmds->remove("pause"); - } else if (cmds->contains(Feature{"resume"})) { + } else if (cmds->contains("resume")) { _service->onResume(); - cmds->remove(Feature{"resume"}); + cmds->remove("resume"); } @@ -239,7 +239,7 @@ void ServicePrivate::handleReceve(QByteArray data) { QDataStream stream(pkg.data()); - QSet feature; + QHash feature; stream >> feature; handleStandartCmd(&feature); diff --git a/Patronum/src/Private/serviceprivate.h b/Patronum/src/Private/serviceprivate.h index 8b18cf9..0feb5f1 100644 --- a/Patronum/src/Private/serviceprivate.h +++ b/Patronum/src/Private/serviceprivate.h @@ -88,7 +88,7 @@ private: * @param cmds * @return */ - bool handleStandartCmd(QSet *cmds); + bool handleStandartCmd(QHash *cmds); /** * @brief getServiceLauncher This method return path to launcher file.