From fad5d37382552af7328dd67d038c1eaf44cf0aee Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 13 Aug 2024 23:36:59 +0200 Subject: Wip for FS remotes --- modules/remote-filesystem/c++/remote.hpp | 49 ++++++++++++++------------------ 1 file changed, 22 insertions(+), 27 deletions(-) (limited to 'modules/remote-filesystem/c++/remote.hpp') diff --git a/modules/remote-filesystem/c++/remote.hpp b/modules/remote-filesystem/c++/remote.hpp index 42cdd03..062d7ee 100644 --- a/modules/remote-filesystem/c++/remote.hpp +++ b/modules/remote-filesystem/c++/remote.hpp @@ -6,54 +6,49 @@ namespace saw { namespace rmt { -struct FileSystem {}; +struct File {}; } template<> -class remote_address { +class remote_address { private: std::filesystem::path path_; public: remote_address(const std::filesystem::path& path__): path_{path__} {} -}; -template -class rpc_client { -private: - ptr> addr_; -public: - rpc_client(ptr> addr__): - addr_{addr__} - {} -}; + std::string get_path_string() const { + return path_.string(); + } -template -class rpc_server { -private: - ptr> addr_; -public: - rpc_server(ptr> addr__): - addr_{addr__} - {} + const std::filesystem::path& get_path() const { + return path_; + } }; template<> -class remote { +class remote { private: SAW_FORBID_COPY(remote); SAW_FORBID_MOVE(remote); - + std::map>> registered_data_servers_; public: - error_or>> parse_address(const std::string_view& path_v){ - return heap>(path_v); + error_or>> parse_address(const std::string_view& path_v){ + return heap>(path_v); } - template - rpc_server listen(const remote_address& addr, typename rpc_server::InterfaceT iface){ - return {addr, std::move(iface)}; + template + error_or>> data_listen(ref> addr){ + auto insert_res = registered_data_servers_.emplace(std::make_pair(addr.get_path_string(),{})); + if(!insert_res.second){ + return make_error(); + } + + auto dat_srv = heap>(*this, addr); + insert_res.first->second = {dat_srv}; + return dat_srv; } }; } -- cgit v1.2.3