94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include "messagebasic_global.h"
|
|
#include <simsbasic.h>
|
|
#include <standardglobe.h>
|
|
#include <QStringList>
|
|
#include <QHash>
|
|
|
|
#define NAME(v) QString(#v).replace(".","_").replace("->","_")
|
|
#define DOUBLE_SAVE(u) obj[NAME(u)] = u
|
|
#define DOUBLE_PEAK(u) u = obj[NAME(u)].toDouble()
|
|
|
|
#define UINT64_SAVE(u) obj[NAME(u)] = QJsonValue::fromVariant(QVariant::fromValue(u))
|
|
#define UINT64_PEAK(u) u = obj[NAME(u)].toVariant().toULongLong()
|
|
|
|
#define STRING_SAVE(u) obj[NAME(u)] = u
|
|
#define STRING_PEAK(u) u = obj[NAME(u)].toString()
|
|
|
|
#define STRLIST_SAVE(u) obj[NAME(u)] = u.join(",")
|
|
#define STRLIST_PEAK(u) u = obj[NAME(u)].toString().split(",")
|
|
|
|
class MESSAGEBASIC_EXPORT AbstractMessage : public WsMessage {
|
|
protected:
|
|
uint64_t _from_id = 0, _to_id = 0;
|
|
QString _topic_string;
|
|
|
|
AbstractMessage(const QString& topic);
|
|
|
|
public:
|
|
virtual ~AbstractMessage() = default;
|
|
|
|
void reset(uint64_t from, uint64_t to);
|
|
|
|
// 通过 WsMessage 继承
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
void saveTo(QJsonObject& obj) const override;
|
|
QString topicString() const override;
|
|
uint64_t targetEntity() const override;
|
|
uint64_t sourceEntity() const override;
|
|
};
|
|
|
|
/// <summary>
|
|
/// 时间同步消息
|
|
/// </summary>
|
|
struct MESSAGEBASIC_EXPORT SyncRequest : public AbstractMessage {
|
|
double _time_current;
|
|
|
|
SyncRequest();
|
|
|
|
// 通过 WsMessage 继承
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
void saveTo(QJsonObject& obj) const override;
|
|
};
|
|
|
|
/// <summary>
|
|
/// 推演请求
|
|
/// </summary>
|
|
struct MESSAGEBASIC_EXPORT DeduceRequest : public AbstractMessage {
|
|
DeduceRequest();
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
};
|
|
|
|
/// <summary>
|
|
/// 默认的无返回消息的处理过程通用返回消息
|
|
/// </summary>
|
|
struct MESSAGEBASIC_EXPORT RespondDefault : public AbstractMessage {
|
|
double _time_consume;
|
|
bool _success_mark = false;
|
|
QString _reason_text = "";
|
|
|
|
RespondDefault();
|
|
|
|
// 通过 WsMessage 继承
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
void saveTo(QJsonObject& obj) const override;
|
|
};
|
|
|
|
/// <summary>
|
|
/// 实体初始化消息
|
|
/// </summary>
|
|
struct MESSAGEBASIC_EXPORT EntityInitialRequest : public AbstractMessage {
|
|
EntityInitialRequest();
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
};
|
|
|
|
/// <summary>
|
|
/// 实体仿真准备消息
|
|
/// </summary>
|
|
struct MESSAGEBASIC_EXPORT EntityPreparedRequest : public AbstractMessage{
|
|
EntityPreparedRequest();
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
}; |