From 28efc0068f47ec787791a07a63d720710068c095 Mon Sep 17 00:00:00 2001 From: Aleksi Lindeman Date: Sat, 3 Feb 2018 19:33:05 +0100 Subject: Add seed function, not yet finished --- include/Database.hpp | 20 ++++++-------------- include/Key.hpp | 1 + include/StagedObject.hpp | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 include/StagedObject.hpp (limited to 'include') diff --git a/include/Database.hpp b/include/Database.hpp index 20d7513..68fff62 100644 --- a/include/Database.hpp +++ b/include/Database.hpp @@ -2,6 +2,7 @@ #include "types.hpp" #include "Key.hpp" +#include "StagedObject.hpp" #include "DataView.hpp" #include #include @@ -11,26 +12,13 @@ namespace odhtdb { class Group; - struct StagedCreateObject - { - Key key; - Group *primaryAdminGroup; - u64 timestamp; // In microseconds - }; - - struct StagedAddObject - { - Key key; - DataView data; - u64 timestamp; // In microseconds - }; - class Database { public: Database(const char *bootstrapNodeAddr, u16 port); ~Database(); + void seed(); void create(const Key &key, Group *primaryAdminGroup); void add(const Key &key, DataView data); void commit(); @@ -38,6 +26,10 @@ namespace odhtdb void commitStagedCreateObject(const StagedCreateObject &stagedObject); void commitStagedAddObject(const StagedAddObject &stagedObject); ntp::NtpTimestamp getSyncedTimestampUtc() const; + StagedCreateObject deserializeCreateRequest(const std::shared_ptr &value); + StagedAddObject deserializeAddRequest(const std::shared_ptr &value); + bool listenCreateData(const std::vector> &values); + bool listenAddData(const std::vector> &values); private: dht::DhtRunner node; std::vector stagedCreateObjects; diff --git a/include/Key.hpp b/include/Key.hpp index e9f0591..505050d 100644 --- a/include/Key.hpp +++ b/include/Key.hpp @@ -7,6 +7,7 @@ namespace odhtdb class Key { public: + Key() {} Key(const char *key) : hashedKey(dht::InfoHash::get(key)) {} dht::InfoHash hashedKey; diff --git a/include/StagedObject.hpp b/include/StagedObject.hpp new file mode 100644 index 0000000..61e1073 --- /dev/null +++ b/include/StagedObject.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include "Key.hpp" +#include "types.hpp" +#include "DataView.hpp" + +namespace odhtdb +{ + class Group; + + struct StagedCreateObject + { + Key key; + Group *primaryAdminGroup; + u64 timestamp; // In microseconds + + StagedCreateObject() : key(), primaryAdminGroup(nullptr), timestamp(0) {} + StagedCreateObject(const Key &_key, Group *_primaryAdminGroup, u64 _timestamp) : + key(_key), primaryAdminGroup(_primaryAdminGroup), timestamp(_timestamp) + { + + } + }; + + struct StagedAddObject + { + Key key; + DataView data; + u64 timestamp; // In microseconds + + StagedAddObject() : key(), data(), timestamp(0) {} + StagedAddObject(const Key &_key, const DataView &_data, u64 _timestamp) : + key(_key), data(_data), timestamp(_timestamp) + { + + } + }; +} \ No newline at end of file -- cgit v1.2.3