ADD: addded Orderlibryry and removed the orderlibrary from the entity library
This commit is contained in:
@@ -1,146 +0,0 @@
|
||||
#include "SimCore/Position.hpp"
|
||||
#include "SimCore/data.hpp"
|
||||
#include <Orders/Order.hpp>
|
||||
#include <WHISPER/Messages/Message.hpp>
|
||||
#include <Orders/MoveOrder.hpp>
|
||||
#include <Orders/protos/MoveOrder.pb.h>
|
||||
#include <Orders/protos/Order.pb.h>
|
||||
#include <memory>
|
||||
|
||||
namespace Orders
|
||||
{
|
||||
|
||||
MoveOrder::MoveOrder(const SimCore::Identifier OwnID):
|
||||
Order(OwnID,Orders::MOVE_ORDER)
|
||||
{
|
||||
Speed = SimCore::Data<double>();
|
||||
Course = SimCore::Data<double>();
|
||||
StartTime = SimCore::Data<uint64_t>();
|
||||
pos_ = SimCore::Position();
|
||||
|
||||
}
|
||||
|
||||
MoveOrder::MoveOrder(const SimCore::Identifier OwnID,SimCore::Position pos,double speed,double course , int startTime ):
|
||||
Order(OwnID, Orders::MOVE_ORDER)
|
||||
{
|
||||
Speed = SimCore::Data<double>();
|
||||
Course = SimCore::Data<double>();
|
||||
StartTime = SimCore::Data<uint64_t>();
|
||||
pos_ = pos;
|
||||
|
||||
|
||||
}
|
||||
MoveOrder::~MoveOrder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MoveOrder::setPosition(SimCore::Position pos)
|
||||
{
|
||||
pos_ = pos;
|
||||
}
|
||||
|
||||
|
||||
SimCore::Position MoveOrder::getPosition()
|
||||
{
|
||||
return pos_;
|
||||
}
|
||||
|
||||
|
||||
WHISPER::Message MoveOrder::buildMessage()
|
||||
{
|
||||
WHISPER::Message msg = WHISPER::Message(getOwnID().getUUID(), WHISPER::MsgTopics::COMMANDS , WHISPER::MsgType::ORDER);
|
||||
|
||||
messages::entity::order::MoveOrder MoveOrder = messages::entity::order::MoveOrder();
|
||||
|
||||
if (pos_.isValid())
|
||||
{
|
||||
LOG_S(INFO)<<"position is valid";
|
||||
MoveOrder.mutable_geocentricposition()->set_x(pos_.getGeocentricPos().x());
|
||||
MoveOrder.mutable_geocentricposition()->set_y(pos_.getGeocentricPos().y());
|
||||
MoveOrder.mutable_geocentricposition()->set_z(pos_.getGeocentricPos().z());
|
||||
}
|
||||
|
||||
if (Speed.isValid() == true) {
|
||||
MoveOrder.set_speed(Speed.getValue());
|
||||
}
|
||||
if (Course.isValid() == true) {
|
||||
MoveOrder.set_course(Course.getValue());
|
||||
}
|
||||
if (Speed.isValid() == true) {
|
||||
MoveOrder.set_speed(Speed.getValue());
|
||||
}
|
||||
if (Course.isValid() == true) {
|
||||
MoveOrder.set_course(Course.getValue());
|
||||
}
|
||||
|
||||
if (StartTime.isValid() == true) {
|
||||
MoveOrder.mutable_startingtime()->set_seconds(StartTime.getValue());
|
||||
}
|
||||
|
||||
auto anyOrder = google::protobuf::Any();
|
||||
anyOrder.PackFrom(MoveOrder);
|
||||
|
||||
auto order = messages::entity::order::Order();
|
||||
|
||||
order.mutable_orderid()->set_uuid(SimCore::Identifier().getUUID());
|
||||
order.set_ordertype(Orders::MOVE_ORDER);
|
||||
order.clear_orderpayload();
|
||||
order.mutable_orderpayload()->CopyFrom(anyOrder);
|
||||
|
||||
auto any = std::make_shared<google::protobuf::Any>();
|
||||
any->PackFrom(order);
|
||||
|
||||
msg.addPayLoad(any);
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
std::unique_ptr<MoveOrder> MoveOrder::unpack(WHISPER::Message msg)
|
||||
{
|
||||
|
||||
if(msg.msgType_ == WHISPER::MsgType::COMMAND)
|
||||
{
|
||||
auto protoMsg = msg.getProtoMessage();
|
||||
if (protoMsg.has_payload() && protoMsg.payload().Is<messages::entity::order::Order>())
|
||||
{
|
||||
auto order = messages::entity::order::Order();
|
||||
protoMsg.payload().UnpackTo(&order);
|
||||
|
||||
if (order.has_orderpayload() && order.orderpayload().Is<messages::entity::order::MoveOrder>())
|
||||
{
|
||||
auto moveOrder = messages::entity::order::MoveOrder();
|
||||
order.orderpayload().UnpackTo(&moveOrder);
|
||||
|
||||
SimCore::Identifier OrderID(order.orderid());
|
||||
|
||||
auto MoveOrderObj = std::make_unique<MoveOrder>(OrderID);
|
||||
|
||||
if (moveOrder.has_geocentricposition()) MoveOrderObj->setPosition(SimCore::Position(moveOrder.geocentricposition().x(),moveOrder.geocentricposition().y(),moveOrder.geocentricposition().z()));
|
||||
|
||||
if (moveOrder.has_speed()) MoveOrderObj->Speed.setValue(moveOrder.speed());
|
||||
if (moveOrder.has_course()) MoveOrderObj->Course.setValue(moveOrder.course());
|
||||
if (moveOrder.has_startingtime()) MoveOrderObj->Course.setValue(moveOrder.mutable_startingtime()->seconds());
|
||||
|
||||
return MoveOrderObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<MoveOrder> MoveOrder::unpack(std::string msg)
|
||||
{
|
||||
if (std::empty(msg) == false && msg != "NULL")
|
||||
{
|
||||
WHISPER::Message whisperMessage(msg);
|
||||
return unpack(whisperMessage);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
#include "SimCore/Identifier.hpp"
|
||||
#include <Orders/Order.hpp>
|
||||
|
||||
|
||||
|
||||
namespace Orders
|
||||
{
|
||||
Order::Order(const SimCore::Identifier OwnID,const Orders::OrderType OrderType_):
|
||||
orderID_(SimCore::Identifier()),
|
||||
OwnID_(OwnID),
|
||||
OrderType_(OrderType_)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const SimCore::Identifier Order::getOrderID(){ return orderID_;}
|
||||
const Orders::OrderType Order::getOrderType(){return OrderType_;}
|
||||
const SimCore::Identifier Order::getOwnID(){return OwnID_;}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user