添加MessageLoader和newDefault
This commit is contained in:
parent
a6ccb3e97d
commit
8713278878
|
@ -46,7 +46,25 @@ MessageLoader::MessageLoader()
|
||||||
_message_types << std::make_shared<PlainRouteReset>();
|
_message_types << std::make_shared<PlainRouteReset>();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<std::shared_ptr<WsMessage>> MessageLoader::allType() const
|
#include <QMutexLocker>
|
||||||
|
QList<QString> MessageLoader::allType() const
|
||||||
{
|
{
|
||||||
return _message_types;
|
QMutexLocker o(&const_cast<MessageLoader*>(this)->_type_mutex);
|
||||||
|
|
||||||
|
QList<QString> keys;
|
||||||
|
std::transform(_message_types.begin(), _message_types.end(), std::back_inserter(keys),
|
||||||
|
[](std::shared_ptr<WsMessage> ins) { return ins->topicString(); });
|
||||||
|
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<WsMessage> MessageLoader::makeDefault(const QString& topic) const
|
||||||
|
{
|
||||||
|
QMutexLocker o(&const_cast<MessageLoader*>(this)->_type_mutex);
|
||||||
|
|
||||||
|
for(auto it : this->_message_types)
|
||||||
|
if(it->topicString() == topic)
|
||||||
|
return std::dynamic_pointer_cast<WsMessage>(it->newDefault());
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "messagebasic.h"
|
#include "messagebasic.h"
|
||||||
|
#include <QMutex>
|
||||||
|
|
||||||
class MESSAGEBASIC_EXPORT MessageLoader
|
class MESSAGEBASIC_EXPORT MessageLoader
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
QList<std::shared_ptr<WsMessage>> _message_types;
|
QList<std::shared_ptr<WsMessage>> _message_types;
|
||||||
|
QMutex _type_mutex;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MessageLoader();
|
MessageLoader();
|
||||||
|
|
||||||
QList<std::shared_ptr<WsMessage>> allType() const;
|
QList<QString> allType() const;
|
||||||
|
std::shared_ptr<WsMessage> makeDefault(const QString &topic) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ SyncRequest::SyncRequest()
|
||||||
|
|
||||||
std::shared_ptr<TopicData> SyncRequest::newDefault() const
|
std::shared_ptr<TopicData> SyncRequest::newDefault() const
|
||||||
{
|
{
|
||||||
return std::make_shared<SyncRequest>();
|
return std::make_shared<SyncRequest>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyncRequest::recoveryFrom(const QJsonObject& obj)
|
void SyncRequest::recoveryFrom(const QJsonObject& obj)
|
||||||
|
@ -51,7 +51,7 @@ RespondDefault::RespondDefault()
|
||||||
|
|
||||||
std::shared_ptr<TopicData> RespondDefault::newDefault() const
|
std::shared_ptr<TopicData> RespondDefault::newDefault() const
|
||||||
{
|
{
|
||||||
return std::make_shared<RespondDefault>();
|
return std::make_shared<RespondDefault>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RespondDefault::recoveryFrom(const QJsonObject& obj)
|
void RespondDefault::recoveryFrom(const QJsonObject& obj)
|
||||||
|
@ -404,3 +404,21 @@ void Set3DBoxLLAPos::saveTo(QJsonObject& obj) const
|
||||||
DOUBLE_SAVE(_lla_pos._lat_deg);
|
DOUBLE_SAVE(_lla_pos._lat_deg);
|
||||||
DOUBLE_SAVE(_lla_pos._alt_m);
|
DOUBLE_SAVE(_lla_pos._alt_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EntityInitialRequest::EntityInitialRequest()
|
||||||
|
:AbstractMessage(NAME(EntityInitialRequest)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<TopicData> EntityInitialRequest::newDefault() const
|
||||||
|
{
|
||||||
|
return std::make_shared<EntityInitialRequest>();
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityPreparedRequest::EntityPreparedRequest()
|
||||||
|
:AbstractMessage(NAME(EntityPreparedRequest)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<TopicData> EntityPreparedRequest::newDefault() const
|
||||||
|
{
|
||||||
|
return std::make_shared<EntityPreparedRequest>();
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
|
||||||
#define NAME(v) #v
|
#define NAME(v) QString(#v).replace(".","_").replace("->","_")
|
||||||
#define DOUBLE_SAVE(u) obj[NAME(u)] = u
|
#define DOUBLE_SAVE(u) obj[NAME(u)] = u
|
||||||
#define DOUBLE_PEAK(u) u = obj[NAME(u)].toDouble()
|
#define DOUBLE_PEAK(u) u = obj[NAME(u)].toDouble()
|
||||||
|
|
||||||
|
@ -76,3 +76,19 @@ struct MESSAGEBASIC_EXPORT RespondDefault : public AbstractMessage {
|
||||||
void recoveryFrom(const QJsonObject& obj) override;
|
void recoveryFrom(const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 实体初始化消息
|
||||||
|
/// </summary>
|
||||||
|
struct MESSAGEBASIC_EXPORT EntityInitialRequest : public AbstractMessage {
|
||||||
|
EntityInitialRequest();
|
||||||
|
std::shared_ptr<TopicData> newDefault() const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 实体仿真准备消息
|
||||||
|
/// </summary>
|
||||||
|
struct MESSAGEBASIC_EXPORT EntityPreparedRequest : public AbstractMessage{
|
||||||
|
EntityPreparedRequest();
|
||||||
|
std::shared_ptr<TopicData> newDefault() const override;
|
||||||
|
};
|
|
@ -63,10 +63,6 @@ void PlatformMotionSequence::saveTo(QJsonObject& obj) const
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <standardglobe.h>
|
#include <standardglobe.h>
|
||||||
|
|
||||||
#define PI 3.14159265354
|
|
||||||
auto deg2a = [](double v) { return v / 180.0 * PI; };
|
|
||||||
auto rad2d = [](double v) { return v / PI * 180.0; };
|
|
||||||
#include <QVector2D>
|
#include <QVector2D>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
StrightLineMotion::StrightLineMotion()
|
StrightLineMotion::StrightLineMotion()
|
||||||
|
|
Loading…
Reference in New Issue