SimsWorld/ComponentBasic/EntityDocks.h

56 lines
1.6 KiB
C
Raw Normal View History

2025-06-07 15:58:50 +00:00
#pragma once
#include <simsbasic.h>
#include <messagebasic.h>
#include "componentbasic.h"
#include <QObject>
#include <QHash>
class COMPONENTBASIC_EXPORT DeduceFramework : public QObject,
public ProcList<
WsRespond<EntityAllocte, RespondDefault>,
WsRespond<EntityTotalGet, EntityTotalList>>
{
Q_OBJECT
private:
uint64_t _bind_entity = 0;
QHash<uint64_t, std::shared_ptr<WsEntity>> _entity_map;
signals:
/// <summary>
/// <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD>еĻظ<C4BB><D8B8><EFBFBD>Ϣ
/// </summary>
/// <param name="msg_set"><3E><>Ϣ<EFBFBD>б<EFBFBD></param>
void reply(const QList<std::shared_ptr<WsMessage>> &msg_set);
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="ins"><3E>ظ<EFBFBD><D8B8><EFBFBD>Ϣ</param>
void complete(std::shared_ptr<RespondDefault> ins);
public slots:
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>б<EFBFBD>
/// </summary>
/// <param name="set"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD></param>
void accept(const QList<std::shared_ptr<WsMessage>> &set);
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="ins"><3E><>Ϣ</param>
void deduceBegin(std::shared_ptr<const DeduceRequest> ins);
public:
static QList<std::shared_ptr<WsMessage>> _accept_stack;
DeduceFramework();
std::shared_ptr<WsComponent> defaultNew() const override;
void bindEntity(uint64_t entity_id) override;
QString name() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityAllocte> in, QList<std::shared_ptr<RespondDefault>>& out) override;
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityTotalGet> in, QList<std::shared_ptr<EntityTotalList>>& out) override;
};