119 lines
3.0 KiB
C
119 lines
3.0 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include "componentbasic.h"
|
|||
|
#include <messagebasic.h>
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>Ϊ<EFBFBD><CEAA>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
class COMPONENTBASIC_EXPORT MapHost : public Serializable {
|
|||
|
private:
|
|||
|
/// <summary>
|
|||
|
/// {Topic<69><63>init-value}
|
|||
|
/// </summary>
|
|||
|
QHash<QString, std::shared_ptr<TopicData>> _variable_types;
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
QHash<QString, std::shared_ptr<TopicData>> _variable_map;
|
|||
|
|
|||
|
public:
|
|||
|
virtual ~MapHost() = default;
|
|||
|
/// <summary>
|
|||
|
/// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="init"></param>
|
|||
|
virtual void registData(std::shared_ptr<TopicData> init) = 0;
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD>UniException<6F>쳣
|
|||
|
/// <20>ڵ<EFBFBD><DAB5><EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD>ᰴ<EFBFBD><E1B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
virtual void setVariable(const QString& key, std::shared_ptr<TopicData> ins);
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="key"></param>
|
|||
|
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>nullptr<74><72><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>ȷ<EFBFBD><C8B7></returns>
|
|||
|
virtual std::shared_ptr<TopicData> getVariable(const QString& key) const;
|
|||
|
};
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>ڵ<EFBFBD><DAB5>Ļ<EFBFBD><C4BB><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
class LogicalNode : public Serializable {
|
|||
|
public:
|
|||
|
virtual ~LogicalNode() = default;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>ýڵ<C3BD>id
|
|||
|
/// </summary>
|
|||
|
/// <param name="unique_id"></param>
|
|||
|
virtual void setID(int unique_id) = 0;
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD>id
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
virtual int getID() const = 0;
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
virtual QString name() const = 0;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD>ӽڵ<D3BD><DAB5>б<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
virtual QList<std::shared_ptr<LogicalNode>> children() const = 0;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|||
|
/// </summary>
|
|||
|
/// <returns>map{name, type}</returns>
|
|||
|
virtual QHash<QString, std::shared_ptr<TopicData>> inputDeclares() const = 0;
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|||
|
/// </summary>
|
|||
|
/// <returns>map{name, type}</returns>
|
|||
|
virtual QHash<QString, std::shared_ptr<TopicData>> outputDeclares() const = 0;
|
|||
|
};
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
/// </summary>
|
|||
|
class COMPONENTBASIC_EXPORT BehaviorMapNode : public MapHost, public LogicalNode {
|
|||
|
public:
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="path"></param>
|
|||
|
virtual void setBehaviorMap(const QString &path){}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="val"></param>
|
|||
|
virtual void resetName(const QString &val){}
|
|||
|
};
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
class COMPONENTBASIC_EXPORT BehaviorPerformPlugin : public ProcList<
|
|||
|
WsRespond<SyncRequest, RespondDefault>
|
|||
|
>{
|
|||
|
private:
|
|||
|
std::weak_ptr<WsEntity> _bind_entity;
|
|||
|
|
|||
|
public:
|
|||
|
// ͨ<><CDA8> ProcList <20>̳<EFBFBD>
|
|||
|
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const SyncRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|||
|
|
|||
|
void recoveryFrom(const QJsonObject& obj) override;
|
|||
|
void saveTo(QJsonObject& obj) const override;
|
|||
|
|
|||
|
std::shared_ptr<WsComponent> defaultNew() const override;
|
|||
|
void bindEntity(std::weak_ptr<WsEntity> host) override;
|
|||
|
QString name() const override;
|
|||
|
};
|
|||
|
|