From 3d19695090223802b05d877eefc05e66cb0fb407 Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Wed, 20 Nov 2024 20:03:31 +0800 Subject: [PATCH] improve --- PenetrateBasic/cmds_basic.h | 2 ++ PenetrateBasic/data_types.h | 2 ++ PenetrateBasic/dispatch.cpp | 17 +++++++++++++---- PenetrateBasic/dispatch.h | 13 +++---------- PenetrateBasic/main.cpp | 26 +++++++++++++++++++------- PenetrateBasic/validate_depict.cpp | 8 ++++++++ PenetrateBasic/validate_depict.h | 4 ++++ 7 files changed, 51 insertions(+), 21 deletions(-) diff --git a/PenetrateBasic/cmds_basic.h b/PenetrateBasic/cmds_basic.h index efc7a71..fcb4f65 100644 --- a/PenetrateBasic/cmds_basic.h +++ b/PenetrateBasic/cmds_basic.h @@ -118,6 +118,7 @@ namespace Inlet { _args_value.execute(_func); } virtual void saveTo(datas::IDataObject& object) { + object.setUInt64(u8"Address", (quint64)addr); _args_value.saveTo(0, object); } virtual void loadFrom(datas::IDataObject& object) { @@ -144,6 +145,7 @@ namespace Inlet { } void run() { } virtual void saveTo(datas::IDataObject& object) { + object.setUInt64(u8"Address", (quint64) addr); _args_value.saveTo(0, object); } virtual void loadFrom(datas::IDataObject& object) { diff --git a/PenetrateBasic/data_types.h b/PenetrateBasic/data_types.h index 7e1b540..2dd26a9 100644 --- a/PenetrateBasic/data_types.h +++ b/PenetrateBasic/data_types.h @@ -69,12 +69,14 @@ namespace datas { virtual double getDouble(const QString& key) const = 0; virtual int32_t getInt32(const QString& key) const = 0; virtual int64_t getInt64(const QString& key) const = 0; + virtual uint64_t getUInt64(const QString& key) const = 0; virtual QString getString(const QString& key) const = 0; virtual void setBool(const QString& key, bool value) = 0; virtual void setDouble(const QString& key, double value) = 0; virtual void setInt32(const QString& key, int32_t value) = 0; virtual void setInt64(const QString& key, int64_t value) = 0; + virtual void setUInt64(const QString& key, uint64_t value) = 0; virtual void setString(const QString& key, const QString& value) = 0; virtual QString toText() const = 0; diff --git a/PenetrateBasic/dispatch.cpp b/PenetrateBasic/dispatch.cpp index d46d256..ba4bd55 100644 --- a/PenetrateBasic/dispatch.cpp +++ b/PenetrateBasic/dispatch.cpp @@ -9,7 +9,7 @@ Dispatch* dispatch::Dispatch::unique() { return _unique_inst; } -void dispatch::Dispatch::loadOutput(std::shared_ptr out_ins) { +void dispatch::Dispatch::loadOutput(std::shared_ptr out_ins) { this->_output_list << out_ins; } @@ -46,16 +46,25 @@ void Dispatch::runWith(IRunbase* unit) { depict::ValidateDocObject obj; auto addrs = unit->address(); + auto alias_name = _cmds_map[addrs].first; if (_cmds_validators.contains(addrs) && !_cmds_validators[addrs]->doValidate(unit)) { unit->saveTo(obj); + obj.setString(u8"CmdAlias", alias_name); auto args_content = obj.toText(); - std::for_each(_output_list.begin(), _output_list.end(), [&](std::shared_ptr ins) { - ins->write(u8"命令校验信息", u8"命令执行参数校验失败", args_content); - ins->flush(); + std::for_each(_output_list.begin(), _output_list.end(), [&](std::shared_ptr ins) { + ins->write(u8"命令校验", u8"命令执行参数校验失败", args_content); + ins->flush(true); }); return; } unit->run(); + unit->saveTo(obj); + obj.setString(u8"CmdAlias", alias_name); + auto args_content = obj.toText(); + std::for_each(_output_list.begin(), _output_list.end(), [&](std::shared_ptr ins) { + ins->write(u8"命令执行", u8"命令执行上下文", args_content); + ins->flush(); + }); } void dispatch::Dispatch::getValidateDepict(datas::IDataObject& object) const { diff --git a/PenetrateBasic/dispatch.h b/PenetrateBasic/dispatch.h index dbc3ea6..23ce7f6 100644 --- a/PenetrateBasic/dispatch.h +++ b/PenetrateBasic/dispatch.h @@ -5,16 +5,9 @@ #include #include "cmds_basic.h" #include "validate_basic.h" +#include "logs_port.h" namespace dispatch { - class IOutput { - public: - virtual ~IOutput() = default; - - virtual void write(const QString &type, const QString& title, const QString& desc) = 0; - virtual void flush() = 0; - }; - class Dispatch { private: @@ -22,14 +15,14 @@ namespace dispatch { QHash _cmds_validators; QHash> _events_map; - QList> _output_list; + QList> _output_list; static Dispatch* _unique_inst; public: static Dispatch* unique(); - void loadOutput(std::shared_ptr out_ins); + void loadOutput(std::shared_ptr out_ins); QList allCmds() const; void registerCmd(quint64 addr, Inlet::IRunbase* unit); diff --git a/PenetrateBasic/main.cpp b/PenetrateBasic/main.cpp index c0d4f48..7dccfc9 100644 --- a/PenetrateBasic/main.cpp +++ b/PenetrateBasic/main.cpp @@ -8,14 +8,11 @@ #include "validate_impl.h" #include "validate_depict.h" -int vp(int c) { - qDebug() << c; - return c; -} +int vp(int c); +cmds::T::Cmd entry("hello"); verify::T::Validate vp_check; auto args0 = vp_check.pos<0>() & new impls::Int32Limit(u8"Hello World", 0, 3); -cmds::T::Cmd entry("hello"); namespace xproc { @@ -26,9 +23,14 @@ namespace xproc { } cmds::T::Cmd xvv("sfaf"); -template<> void datas::dataSet(IDataObject& object, const QString& key, int value) { } +template<> void datas::dataSet(IDataObject& object, const QString& key, int value) { + auto argx = object.newObject(); + argx->setString(u8"Type", u8"int"); + argx->setInt32(u8"Value", value); + object.setChild(key, argx); +} template<> int datas::dataGet(IDataObject& object, const QString& key) { - return 0; + return object.getInt32(key); } #include "logs_port.h" @@ -36,6 +38,9 @@ using namespace Inlet; int main(int argc, char* argv[]) { QCoreApplication a(argc, argv); + auto logs = std::make_shared(QDir(u8"./")); + dispatch::Dispatch::unique()->loadOutput(logs); + SignatureImpl v(3); v.execute(vp); @@ -54,5 +59,12 @@ int main(int argc, char* argv[]) { dispatch::Dispatch::unique()->getValidateDepict(doc); qDebug().noquote() << doc.toText(); + logs->flush(true); return a.exec(); } + + +int vp(int c) { + qDebug() << c; + return c; +} \ No newline at end of file diff --git a/PenetrateBasic/validate_depict.cpp b/PenetrateBasic/validate_depict.cpp index 08c1f99..581bb17 100644 --- a/PenetrateBasic/validate_depict.cpp +++ b/PenetrateBasic/validate_depict.cpp @@ -69,6 +69,10 @@ int64_t ValidateDocObject::getInt64(const QString& key) const { return _object_bind.value(key).toVariant().toLongLong(); } +uint64_t depict::ValidateDocObject::getUInt64(const QString& key) const { + return _object_bind.value(key).toVariant().toULongLong(); +} + QString ValidateDocObject::getString(const QString& key) const { return _object_bind.value(key).toString(); } @@ -85,6 +89,10 @@ void ValidateDocObject::setInt32(const QString& key, int32_t value) { _object_bind[key] = value; } +void depict::ValidateDocObject::setUInt64(const QString& key, uint64_t value) { + _object_bind[key] = QJsonValue::fromVariant(QVariant(value)); +} + void ValidateDocObject::setInt64(const QString& key, int64_t value) { _object_bind[key] = value; } diff --git a/PenetrateBasic/validate_depict.h b/PenetrateBasic/validate_depict.h index 1dec1f1..46c8ee1 100644 --- a/PenetrateBasic/validate_depict.h +++ b/PenetrateBasic/validate_depict.h @@ -40,6 +40,8 @@ namespace depict { int64_t getInt64(const QString& key) const override; + uint64_t getUInt64(const QString &key) const override; + QString getString(const QString& key) const override; void setBool(const QString& key, bool value) override; @@ -48,6 +50,8 @@ namespace depict { void setInt32(const QString& key, int32_t value) override; + void setUInt64(const QString &key, uint64_t value) override; + void setInt64(const QString& key, int64_t value) override; void setString(const QString& key, const QString& value) override;