From e5bf2f231e5ebaa13baf0742149d71fc8777e823 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sun, 21 Jul 2024 22:42:22 +0200 Subject: Added preallocation to remote --- modules/remote/c++/transfer_loopback.hpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'modules/remote/c++/transfer_loopback.hpp') diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp index 9f6dddd..abea83f 100644 --- a/modules/remote/c++/transfer_loopback.hpp +++ b/modules/remote/c++/transfer_loopback.hpp @@ -36,11 +36,10 @@ public: * */ template - error_or allocate(data::type, Encoding> meta, id store_id){ + error_or allocate(data::MetaSchema, Encoding> meta, id store_id){ auto& vals = std::get>>(values_); - try { - auto insert_res = vals.emplace(std::make_pair(store_id.get_value(), {std::move(meta)})); + auto insert_res = vals.emplace(std::make_pair(store_id.get_value(), data::MetaSchema, Encoding>{std::move(meta)})); if(!insert_res.second){ return make_error(); } @@ -125,6 +124,21 @@ public: ++next_id_; return dat_id; } + + /** + * Preallocate data + */ + template + error_or> allocate(const data::MetaSchema, Encoding>& meta){ + id dat_id{next_id_}; + auto eov = srv_->allocate(meta, dat_id); + if(eov.is_error()){ + auto& err = eov.get_error(); + return std::move(err); + } + ++next_id_; + return dat_id; + } /** * Receive data -- cgit v1.2.3