Serializable整理接口

This commit is contained in:
codeboss 2025-06-28 17:09:10 +08:00
parent 3a77c42455
commit 22ba954955
3 changed files with 34 additions and 38 deletions

View File

@ -43,7 +43,7 @@ QList<std::shared_ptr<WsComponent>> RtWsEntity::components() const {
return _comps_list.values();
}
std::shared_ptr<WsEntity> RtWsEntity::defaultNew() const {
std::shared_ptr<Serializable> RtWsEntity::newDefault() const {
auto newx = std::make_shared<RtWsEntity>();
newx->_entity_id = this->_entity_id;
newx->_templet_name = this->_templet_name;
@ -139,7 +139,7 @@ void RtEntityManager::append(std::shared_ptr<WsComponent> ins) {
_comps_list[ins->name()] = ins;
}
std::shared_ptr<WsEntity> RtEntityManager::defaultNew() const
std::shared_ptr<Serializable> RtEntityManager::newDefault() const
{
return nullptr;
}
@ -213,7 +213,7 @@ QString RtResourceManager::name() const
return "资源管理器实例";
}
std::shared_ptr<WsEntity> RtResourceManager::defaultNew() const
std::shared_ptr<Serializable> RtResourceManager::newDefault() const
{
return nullptr;
}

View File

@ -68,7 +68,7 @@ public:
/// 深度克隆本实例,插件和数据一致
/// </summary>
/// <returns></returns>
virtual std::shared_ptr<WsEntity> defaultNew() const;
virtual std::shared_ptr<Serializable> newDefault() const override;
/// <summary>
/// 允许输入的消息类型
@ -110,7 +110,7 @@ public:
void remove(const QString& component_type) override;
QList<std::shared_ptr<WsComponent>> components() const override;
std::shared_ptr<WsEntity> defaultNew() const override;
std::shared_ptr<Serializable> newDefault() const override;
QList<WsRespondEntry> getRespondWithSignature(const WsRespondSignatureType& t) const override;
QList<WsRespondEntry> getRespondWithInType(const QString& msg_type) const override;
@ -129,7 +129,7 @@ public:
uint64_t entityID() const override;
QString name() const override;
std::shared_ptr<WsEntity> defaultNew() const override;
std::shared_ptr<Serializable> newDefault() const override;
QList<WsRespondEntry> getRespondWithSignature(const WsRespondSignatureType& t) const override;
QList<WsRespondEntry> getRespondWithInType(const QString& msg_type) const override;

View File

@ -5,24 +5,6 @@
#include <memory>
#include <functional>
/// <summary>
/// 可序列化对象
/// </summary>
class Serializable {
public:
virtual ~Serializable() = default;
/// <summary>
/// 通过反序列化完全恢复数据
/// </summary>
/// <param name="obj">数据Json</param>
virtual void recoveryFrom(const QJsonObject& obj) = 0;
/// <summary>
/// 通过序列化输出所有数据
/// </summary>
/// <param name="obj">目标Json</param>
virtual void saveTo(QJsonObject& obj) const = 0;
};
/// <summary>
/// 所有异常基类
/// </summary>
@ -37,25 +19,45 @@ public:
virtual QString content() const noexcept;
};
class TopicData {
/// <summary>
/// 可序列化对象
/// </summary>
class Serializable {
public:
/// <summary>
/// <summary>
/// 提取包含默认值的实例
/// </summary>
/// <returns></returns>
virtual std::shared_ptr<Serializable> newDefault() const = 0;
/// 通过反序列化完全恢复数据
/// </summary>
/// <param name="obj">数据Json</param>
virtual void recoveryFrom(const QJsonObject& obj) = 0;
/// <summary>
/// 通过序列化输出所有数据
/// </summary>
/// <param name="obj">目标Json</param>
virtual void saveTo(QJsonObject& obj) const = 0;
};
/// <summary>
/// 命名类型数据
/// </summary>
class TopicData : public Serializable {
public:
virtual ~TopicData() = default;
/// <summary>
/// 获取消息类型字符串
/// </summary>
/// <returns>消息类型</returns>
virtual QString topicString() const = 0;
/// <summary>
/// 提取包含默认值的实例
/// </summary>
/// <returns></returns>
virtual std::shared_ptr<TopicData> newDefault() const = 0;
};
/// <summary>
/// 通用消息基类
/// </summary>
class WsMessage : public Serializable, public TopicData {
class WsMessage : public TopicData {
public:
virtual ~WsMessage() = default;
/// <summary>
@ -107,12 +109,6 @@ public:
/// <returns>运行名称</returns>
virtual QString name() const = 0;
/// <summary>
/// 深度克隆本实例,插件和数据一致
/// </summary>
/// <returns></returns>
virtual std::shared_ptr<WsEntity> defaultNew() const = 0;
/// <summary>
/// 通过指定的签名获取消息响应处理入口
/// </summary>