diff --git a/ComponentBasic/EntityDocks.cpp b/ComponentBasic/EntityDocks.cpp index de07395..04e52e9 100644 --- a/ComponentBasic/EntityDocks.cpp +++ b/ComponentBasic/EntityDocks.cpp @@ -278,7 +278,13 @@ void DeduceFramework::execute(std::shared_ptr map, if (result->_success_mark) { auto comps_list = target_ins->components(); + for (auto comp : comps_list) { + if (!in->_component_types.contains(comp->name())) { + target_ins->remove(comp->name()); + } + } + comps_list = target_ins->components(); QStringList exists_component_types; std::transform(comps_list.begin(), comps_list.end(), std::back_inserter(exists_component_types), diff --git a/ComponentBasic/componentbasic.h b/ComponentBasic/componentbasic.h index a22c3dd..af649ec 100644 --- a/ComponentBasic/componentbasic.h +++ b/ComponentBasic/componentbasic.h @@ -66,13 +66,9 @@ struct ProcList : public _ProcRoute_, public WsComponent ProcList() : _ProcRoute_() {} // 通过 WsComponent 继承 - QList inputTypes() const override + QList signatureTypes() const override { - QList list; - for (auto key : _ProcRoute_<>::_execute_map.keys()) { - list.append(key.first); - } - return list; + return _ProcRoute_<>::_execute_map.keys(); } QList getEntryWithSignature(const WsRespondSignatureType& t) const override { diff --git a/SimsBasic/internal_impl.cpp b/SimsBasic/internal_impl.cpp index 76b8823..264f7b2 100644 --- a/SimsBasic/internal_impl.cpp +++ b/SimsBasic/internal_impl.cpp @@ -55,11 +55,11 @@ std::shared_ptr RtWsEntity::defaultNew() const { } #include -QList RtWsEntity::inputTypes() const +QList RtWsEntity::signatureTypes() const { - QList types; + QList types; for (auto c : this->_comps_list) - types.append(c->inputTypes()); + types.append(c->signatureTypes()); return types.toSet().toList(); } diff --git a/SimsBasic/internal_impl.h b/SimsBasic/internal_impl.h index 1b2e983..62af47c 100644 --- a/SimsBasic/internal_impl.h +++ b/SimsBasic/internal_impl.h @@ -71,10 +71,10 @@ public: virtual std::shared_ptr defaultNew() const; /// - /// 允许输入的消息类型 + /// 允许输入的消息处理签名类型 /// - /// 消息类型集合 - virtual QList inputTypes() const; + /// 消息处理签名类型集合 + virtual QList signatureTypes() const; /// /// 通过指定的签名获取处理入口 /// diff --git a/SimsBasic/simsbasic.h b/SimsBasic/simsbasic.h index 0c3c165..8b60292 100644 --- a/SimsBasic/simsbasic.h +++ b/SimsBasic/simsbasic.h @@ -164,10 +164,10 @@ public: virtual QString name() const = 0; /// - /// 允许输入的消息类型 + /// 允许处理的消息签名类型 /// - /// 消息类型集合 - virtual QList inputTypes() const = 0; + /// 消息签名类型集合 + virtual QList signatureTypes() const = 0; /// /// 通过指定的签名获取处理入口 ///