From 991a5cbfea6b4ae6551a17e3e8ec375aec1a2a62 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Wed, 14 Aug 2024 10:38:42 +0200 Subject: Fixed assignement in data server creation --- modules/remote-filesystem/c++/remote.hpp | 12 ++++++- modules/remote-filesystem/c++/transfer.hpp | 49 +++++++++++++++++++++++++ modules/remote-filesystem/c++/transport.hpp | 51 --------------------------- modules/remote-filesystem/tests/transport.cpp | 6 ++-- 4 files changed, 64 insertions(+), 54 deletions(-) create mode 100644 modules/remote-filesystem/c++/transfer.hpp delete mode 100644 modules/remote-filesystem/c++/transport.hpp (limited to 'modules/remote-filesystem') diff --git a/modules/remote-filesystem/c++/remote.hpp b/modules/remote-filesystem/c++/remote.hpp index 8390501..0225bc5 100644 --- a/modules/remote-filesystem/c++/remote.hpp +++ b/modules/remote-filesystem/c++/remote.hpp @@ -2,6 +2,7 @@ #include +#include #include namespace saw { @@ -35,6 +36,8 @@ private: std::map>> registered_data_servers_; public: + remote() = default; + error_or>> parse_address(const std::string_view& path_v){ return heap>(path_v); } @@ -47,8 +50,15 @@ public: } auto dat_srv = heap>(*this, addr); - insert_res.first->second = {dat_srv}; + insert_res.first->second = ptr>{*dat_srv}; return dat_srv; } + + /** + * Internal deregister function + */ + error_or deregister_data_server(ptr> srv){ + return make_error(); + } }; } diff --git a/modules/remote-filesystem/c++/transfer.hpp b/modules/remote-filesystem/c++/transfer.hpp new file mode 100644 index 0000000..e3df023 --- /dev/null +++ b/modules/remote-filesystem/c++/transfer.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include "remote.hpp" + +#include + +namespace saw { +template +class data_server final : public i_data_server { +private: + ptr> remote_; + remote_address addr_; +public: + static constexpr std::pair class_id{schema_hash::apply(), schema_hash::apply()}; + + data_server(ptr> remote__, ref> addr__): + remote_{remote__}, + addr_{addr__()} + {} + + ~data_server(){ + remote_().deregister_data_server(*this); + } + + SAW_FORBID_MOVE(data_server); + SAW_FORBID_COPY(data_server); + + std::pair get_class_id() const override { + return class_id; + } + + error_or send(const data& dat, id store_id){ + return make_error(); + } + + error_or allocate(data::MetaSchema, Encoding> meta, id store_id){ + return make_error(); + } + + error_or erase(id store_id){ + return make_error(); + } + + error_or> receive(id store_id){ + return make_error(); + } + +}; +} diff --git a/modules/remote-filesystem/c++/transport.hpp b/modules/remote-filesystem/c++/transport.hpp deleted file mode 100644 index 0db4600..0000000 --- a/modules/remote-filesystem/c++/transport.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "remote.hpp" - -#include - -namespace saw { -template -class data_server final : public i_data_server { -private: - ptr> remote_; - remote_address addr_; -public: - static constexpr std::pair class_id{schema_hash::apply(), schema_hash::apply()}; - - data_server(ptr> remote__, ref> addr__): - remote_{remote__}, - addr_{addr__()} - {} - - ~data_server(){ - remote().deregister_data_server(*this); - } - - SAW_FORBID_MOVE(data_server); - SAW_FORBID_COPY(data_server); - - std::pair get_class_id() const override { - return class_id; - } - - error_or send(const data& dat, id store_id){ - try { - } - return make_error(); - } - - error_or allocate(data::MetaSchema, Encoding> meta, id store_id){ - return make_error(); - } - - error_or erase(id store_id){ - return make_error(); - } - - error_or> receive(id store_id){ - return make_error(); - } - -}; -} diff --git a/modules/remote-filesystem/tests/transport.cpp b/modules/remote-filesystem/tests/transport.cpp index 05c13a6..e8df294 100644 --- a/modules/remote-filesystem/tests/transport.cpp +++ b/modules/remote-filesystem/tests/transport.cpp @@ -1,5 +1,7 @@ #include -#include "../c++/transport.hpp" +#include "../c++/transfer.hpp" + +#include namespace { namespace sch { @@ -20,7 +22,7 @@ SAW_TEST("File Remote"){ SAW_EOV_EXPECT(eo_addr, "Couldn't parse file"); auto& addr = eo_addr.get_value(); - auto eo_dat_srv = file_remote.data_listen({*addr}); + auto eo_dat_srv = file_remote.template data_listen({*addr}); SAW_EOV_EXPECT(eo_dat_srv, "Couldn't setup data server."); auto& dat_srv = eo_dat_srv.get_value(); -- cgit v1.2.3