summaryrefslogtreecommitdiff
path: root/modules/remote/c++/transfer_loopback.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote/c++/transfer_loopback.hpp')
-rw-r--r--modules/remote/c++/transfer_loopback.hpp16
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>();
}