改进-提供消息处理签名接口

This commit is contained in:
codeboss 2025-06-10 14:12:53 +08:00
parent 0af56085ad
commit 0a7304dc41
5 changed files with 17 additions and 15 deletions

View File

@ -278,7 +278,13 @@ void DeduceFramework::execute(std::shared_ptr<Immediate> 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),

View File

@ -66,13 +66,9 @@ struct ProcList : public _ProcRoute_<Procs...>, public WsComponent
ProcList() : _ProcRoute_<Procs...>() {}
// 通过 WsComponent 继承
QList<QString> inputTypes() const override
QList<WsRespondSignatureType> signatureTypes() const override
{
QList<QString> list;
for (auto key : _ProcRoute_<>::_execute_map.keys()) {
list.append(key.first);
}
return list;
return _ProcRoute_<>::_execute_map.keys();
}
QList<WsRespondEntry> getEntryWithSignature(const WsRespondSignatureType& t) const override
{

View File

@ -55,11 +55,11 @@ std::shared_ptr<WsEntity> RtWsEntity::defaultNew() const {
}
#include <QSet>
QList<QString> RtWsEntity::inputTypes() const
QList<WsRespondSignatureType> RtWsEntity::signatureTypes() const
{
QList<QString> types;
QList<WsRespondSignatureType> types;
for (auto c : this->_comps_list)
types.append(c->inputTypes());
types.append(c->signatureTypes());
return types.toSet().toList();
}

View File

@ -71,10 +71,10 @@ public:
virtual std::shared_ptr<WsEntity> defaultNew() const;
/// <summary>
/// 允许输入的消息类型
/// 允许输入的消息处理签名类型
/// </summary>
/// <returns>消息类型集合</returns>
virtual QList<QString> inputTypes() const;
/// <returns>消息处理签名类型集合</returns>
virtual QList<WsRespondSignatureType> signatureTypes() const;
/// <summary>
/// 通过指定的签名获取处理入口
/// </summary>

View File

@ -164,10 +164,10 @@ public:
virtual QString name() const = 0;
/// <summary>
/// 允许输入的消息类型
/// 允许处理的消息签名类型
/// </summary>
/// <returns>消息类型集合</returns>
virtual QList<QString> inputTypes() const = 0;
/// <returns>消息签名类型集合</returns>
virtual QList<WsRespondSignatureType> signatureTypes() const = 0;
/// <summary>
/// 通过指定的签名获取处理入口
/// </summary>