From 4089e7a3cc148f5faf5087d4356dce48fd11c268 Mon Sep 17 00:00:00 2001 From: Sven Luethi Date: Sun, 18 Apr 2021 13:29:04 +0200 Subject: [PATCH] builds now. Implements serializable base class --- src/core/dns/Record.cpp | 14 +++++++++----- src/core/dns/include/Record.hpp | 5 ++++- src/core/include/Serializable.hpp | 7 ++++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/core/dns/Record.cpp b/src/core/dns/Record.cpp index 42f3241..5ada779 100644 --- a/src/core/dns/Record.cpp +++ b/src/core/dns/Record.cpp @@ -7,12 +7,16 @@ namespace DNS { Record::Record(const uint16_t id) : _id(id) { - _os = ostream(_sb); - _os << "NOT IMPLEMENTED"; - } + _os = new ostream(&_sb); + *_os << "NOT IMPLEMENTED"; +} -ostream& Record::operator>>(Serializable& record) { - return _os; +Record::~Record() { + delete _os; +} + +ostream& Record::serialze() { + return *_os; } ARecord::ARecord() : Record(1) {} diff --git a/src/core/dns/include/Record.hpp b/src/core/dns/include/Record.hpp index 557a640..54b3c31 100644 --- a/src/core/dns/include/Record.hpp +++ b/src/core/dns/include/Record.hpp @@ -4,6 +4,7 @@ #include "Resource.hpp" #include #include +#include namespace Plains { namespace Core { @@ -12,13 +13,15 @@ namespace DNS { using std::ostream; using std::stringbuf; + // Provides an abstract class for dns records that may be stored in the database class Record : public Resource { public: const uint16_t _id; - ostream& operator>>(Serializable& object); + ostream& serialze(); Record(const uint16_t id); + ~Record(); private: stringbuf _sb; diff --git a/src/core/include/Serializable.hpp b/src/core/include/Serializable.hpp index 85d7b46..5a49be6 100644 --- a/src/core/include/Serializable.hpp +++ b/src/core/include/Serializable.hpp @@ -2,19 +2,20 @@ #define SERIALIZABLE_HPP #include #include +#include namespace Plains { namespace Core { using std::ostream; - +using std::shared_ptr; class Serializable { public: // Serialize - virtual ostream& operator>>(Serializable& object); + virtual ostream& serialze() = 0; // Deserialize - //virtual Serializable& operator<<(ostream& os); + template static shared_ptr deserialize(ostream& os); }; }}