WhisperCom/include/Whisper/Transmittable.hpp
2021-08-21 23:48:06 +02:00

41 lines
1.2 KiB
C++

#pragma once
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/** @file */
/** @copyright 2021 MPLv2 */
#include <Whisper/Network/Encoding.hpp>
#include <Tree/tree.hpp>
#include <memory>
/**
* @brief This is the main namespace for all whisper-com related datatypes and classed.
*/
namespace Whisper
{
class Transmittable : public std::enable_shared_from_this<Whisper::Transmittable>
{
private:
std::shared_ptr<Whisper::Network::Encoding> encoding_;
public:
Transmittable() : encoding_(nullptr) {}
~Transmittable() {encoding_=nullptr;}
void setEncoding(std::shared_ptr<Whisper::Network::Encoding> encoding) {encoding_=encoding;}
std::shared_ptr<Whisper::Network::Encoding> encoding() { return encoding_;}
bool hasEnconding() { return encoding_ != nullptr;}
virtual std::shared_ptr<std::vector<std::uint8_t>> encode() = 0;
virtual void decode(std::shared_ptr<std::vector<std::uint8_t>> data) = 0;
virtual std::shared_ptr<Tree::BaseNode> getPayload() = 0;
}; // Transmittable
}; // namespace Whisper