添加MessageLoader和newDefault
This commit is contained in:
parent
a6ccb3e97d
commit
8713278878
|
@ -46,7 +46,25 @@ MessageLoader::MessageLoader()
|
|||
_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
|
||||
#include "messagebasic.h"
|
||||
#include <QMutex>
|
||||
|
||||
class MESSAGEBASIC_EXPORT MessageLoader
|
||||
{
|
||||
private:
|
||||
QList<std::shared_ptr<WsMessage>> _message_types;
|
||||
QMutex _type_mutex;
|
||||
|
||||
public:
|
||||
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
|
||||
{
|
||||
return std::make_shared<SyncRequest>();
|
||||
return std::make_shared<SyncRequest>();
|
||||
}
|
||||
|
||||
void SyncRequest::recoveryFrom(const QJsonObject& obj)
|
||||
|
@ -51,7 +51,7 @@ RespondDefault::RespondDefault()
|
|||
|
||||
std::shared_ptr<TopicData> RespondDefault::newDefault() const
|
||||
{
|
||||
return std::make_shared<RespondDefault>();
|
||||
return std::make_shared<RespondDefault>();
|
||||
}
|
||||
|
||||
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._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 <QHash>
|
||||
|
||||
#define NAME(v) #v
|
||||
#define NAME(v) QString(#v).replace(".","_").replace("->","_")
|
||||
#define DOUBLE_SAVE(u) obj[NAME(u)] = u
|
||||
#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 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>
|
||||
|
||||
#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 <cmath>
|
||||
StrightLineMotion::StrightLineMotion()
|
||||
|
|
Loading…
Reference in New Issue