diff options
Diffstat (limited to 'modules/remote/c++/transfer_loopback.hpp')
-rw-r--r-- | modules/remote/c++/transfer_loopback.hpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp index afc9d17..e45abb3 100644 --- a/modules/remote/c++/transfer_loopback.hpp +++ b/modules/remote/c++/transfer_loopback.hpp @@ -43,9 +43,21 @@ public: return class_id; } - error_or<void> send(const data<Schema, Encoding>& dat, id<Schema> store_id){ + error_or<void> send(ref<data<Schema, Encoding>> dat, id<Schema> store_id){ try { - auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), dat)); + auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), dat())); + if(!insert_res.second){ + return make_error<err::already_exists>(); + } + }catch(std::exception& ){ + return make_error<err::out_of_memory>(); + } + return void_t{}; + } + + error_or<void> send(data<Schema, Encoding> dat, id<Schema> store_id){ + try { + auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), std::move(dat))); if(!insert_res.second){ return make_error<err::already_exists>(); } |