56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
#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>
|
|
/// 推演过程中的回复信息
|
|
/// </summary>
|
|
/// <param name="msg_set">消息列表</param>
|
|
void reply(const QList<std::shared_ptr<WsMessage>> &msg_set);
|
|
/// <summary>
|
|
/// 推演完成
|
|
/// </summary>
|
|
/// <param name="ins">回复消息</param>
|
|
void complete(std::shared_ptr<RespondDefault> ins);
|
|
|
|
public slots:
|
|
/// <summary>
|
|
/// 接收消息列表
|
|
/// </summary>
|
|
/// <param name="set">传入的消息队列</param>
|
|
void accept(const QList<std::shared_ptr<WsMessage>> &set);
|
|
/// <summary>
|
|
/// 推演入口
|
|
/// </summary>
|
|
/// <param name="ins">消息</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;
|
|
}; |