From 7611bd2aeeb5c29ccfed6a1e8d5cb0e17b8c6aac Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Mon, 12 Aug 2024 14:37:07 +0200 Subject: wip --- modules/remote/c++/transfer_loopback.hpp | 49 ++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) (limited to 'modules/remote/c++') diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp index 9e3c7f6..3eb6922 100644 --- a/modules/remote/c++/transfer_loopback.hpp +++ b/modules/remote/c++/transfer_loopback.hpp @@ -54,6 +54,49 @@ public: } return void_t{}; } + + error_or allocate(data::MetaSchema, Encoding> meta, id store_id){ + try{ + auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), data::MetaSchema, Encoding>{std::move(meta)})); + if(!insert_res.second){ + return make_error(); + } + }catch(const std::exception&){ + return make_error(); + } + + return make_void(); + } + + error_or> receive(id store_id){ + auto find_res = values_.find(store_id.get_value()); + if(find_res == values_.end()){ + return make_error(); + } + + auto& dat = find_res->second; + // here + return dat;// boy + } + + error_or erase(id store_id){ + auto erase_res = values_.erase(store_id.get_value()); + if(erase_res == 0u){ + return make_error(); + } + + return make_void(); + } + + error_or>> find(id store_id){ + auto find_res = values_.find(store_id.get_value()); + if(find_res == values_.end()){ + return make_error(); + } + + auto& dat = find_res->second; + return ptr>{dat}; + } }; template @@ -142,7 +185,7 @@ public: if(erase_op == 0u){ return make_error(); } - return void_t{}; + return make_void(); } template @@ -224,7 +267,7 @@ public: * An exception for the Loopback backend. Here we can safely use find from * the client side. */ - error_or>> find(id dat_id){ + error_or>> find(id dat_id){ auto eov = srv_().find(dat_id); if(eov.is_error()){ auto& err = eov.get_error(); @@ -232,7 +275,7 @@ public: } auto val = eov.get_value(); - return {*val}; + return val; } }; -- cgit v1.2.3