From 5c1d7018ba867a73c160cc044b939e35a2c07243 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 1 Nov 2025 17:06:45 +0100 Subject: Added an easy feature for writing and reading files --- modules/remote-filesystem/c++/easy.hpp | 78 ++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 modules/remote-filesystem/c++/easy.hpp (limited to 'modules') diff --git a/modules/remote-filesystem/c++/easy.hpp b/modules/remote-filesystem/c++/easy.hpp new file mode 100644 index 0000000..9fc8af7 --- /dev/null +++ b/modules/remote-filesystem/c++/easy.hpp @@ -0,0 +1,78 @@ +#pragma once + +#include "remote.hpp" + +#include + +namespace saw { +namespace easy { +template +error_or encode_and_write_file(const std::filesystem::path& p_, const data& data_){ + data dat; + { + codec cdc; + auto eov = cdc.encode(data_,dat); + if(eov.is_error()){ + return eov; + } + } + + remote file_remote; + auto eo_addr = file_remote.parse_address(p_); + if(eo_addr.is_error()){ + return std::move(eo_addr.get_error()); + } + auto& addr = eo_addr.get_value(); + + auto eo_srv = file_remote.template data_listen({*addr}); + if(eo_srv.is_error()){ + return std::move(eo_srv.get_error()); + } + auto& srv = eo_srv.get_value(); + id fid{0u}; + + auto eo_write = srv->send({fid}, dat); + if(eo_write.is_error()){ + return eo_write; + } + + return make_void(); +} + +template +error_or> read_and_decode_file(const std::filesystem::path& p_){ + data dat; + + remote file_remote; + auto eo_addr = file_remote.parse_address(p_); + if(eo_addr.is_error()){ + return std::move(eo_addr.get_error()); + } + auto& addr = eo_addr.get_value(); + + auto eo_srv = file_remote.template data_listen({*addr}); + if(eo_srv.is_error()){ + return std::move(eo_srv.get_error()); + } + auto& srv = eo_srv.get_value(); + id fid{0u}; + + auto eo_read = srv->receive({fid}); + if(eo_read.is_error()){ + return eo_read; + } + auto& read = eo_read.get_value(); + + { + codec cdc; + auto eov = cdc.decode(read,dat); + if(eov.is_error()){ + return std::move(eov.get_error()); + } + } + + return dat; +} + +} +} -- cgit v1.2.3