mirror of
https://github.com/QuasarApp/Heart.git
synced 2025-05-13 09:59:42 +00:00
97 lines
2.4 KiB
C++
97 lines
2.4 KiB
C++
/*
|
|
* Copyright (C) 2018-2020 QuasarApp.
|
|
* Distributed under the lgplv3 software license, see the accompanying
|
|
* Everyone is permitted to copy and distribute verbatim copies
|
|
* of this license document, but changing it is not allowed.
|
|
*/
|
|
|
|
#ifndef TRANSPORTDATA_H
|
|
#define TRANSPORTDATA_H
|
|
|
|
#include "abstractdata.h"
|
|
#include "senderdata.h"
|
|
|
|
#include "hostaddress.h"
|
|
|
|
namespace QH {
|
|
|
|
class NETWORKPROTOCOLSHARED_EXPORT TransportData: public AbstractData, public SenderData
|
|
{
|
|
|
|
public:
|
|
|
|
explicit TransportData(const HostAddress& sender);
|
|
explicit TransportData(const Package& package);
|
|
|
|
const Package& data() const;
|
|
void setData(const Package &data);
|
|
bool setData(const AbstractData& data);
|
|
bool isValid() const;
|
|
bool isHaveRoute() const;
|
|
|
|
/**
|
|
* @brief targetAddress - targetAddress
|
|
* @return
|
|
*/
|
|
BaseId targetAddress() const;
|
|
void setTargetAddress(const BaseId &targetAddress);
|
|
|
|
/**
|
|
* @brief route - is list of addresses of node was the TransportData has been moved.
|
|
* @return
|
|
*/
|
|
const QList<HostAddress> &route() const;
|
|
|
|
/**
|
|
* @brief setRoute - set and validate route.
|
|
* @param route
|
|
* @return true if a new route is valid
|
|
*/
|
|
bool setRoute(const QList<HostAddress> &route);
|
|
|
|
/**
|
|
* @brief addNodeToRoute - push back new node to route
|
|
* @param node - node address
|
|
*/
|
|
void addNodeToRoute(const HostAddress &node);
|
|
|
|
/**
|
|
* @brief strip - this method remove a range addresses from route of transport data. from correntAddress to availabelTarget
|
|
* @param correntAddress - begin of remove
|
|
* @param availabelTarget - end of remove
|
|
* @return true if all addresses is removed
|
|
*/
|
|
bool strip(const HostAddress& correntAddress, const HostAddress& availabelTarget);
|
|
|
|
/**
|
|
* @brief packageId
|
|
* @return unique package id.
|
|
*/
|
|
BaseId packageId() const;
|
|
|
|
/**
|
|
* @brief completeRoute - set bool variable of route complete.
|
|
* @param fRouteIsComplete - new value for complete route default is true
|
|
*/
|
|
void completeRoute(bool fRouteIsComplete = true);
|
|
|
|
protected:
|
|
QDataStream &fromStream(QDataStream &stream);
|
|
QDataStream &toStream(QDataStream &stream) const;
|
|
|
|
private:
|
|
explicit TransportData();
|
|
|
|
Package _data;
|
|
BaseId _targetAddress;
|
|
QList<HostAddress> _route;
|
|
BaseId _packageId;
|
|
bool _fRouteIsComplete = false;
|
|
|
|
|
|
|
|
};
|
|
|
|
}
|
|
#endif // TRANSPORTDATA_H
|