summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-07-21 22:24:03 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-07-21 22:24:03 +0200
commit498acb5ee9db90aaf01049ae44e098169219398d (patch)
treea79c5a2cc5bb7aa49cfde2422183644bdbb5cfd5
parent6ca91987ec91621577468ebf68fd68fc5433284a (diff)
wip
-rw-r--r--modules/core/c++/buffer.hpp2
-rw-r--r--modules/remote/c++/transfer_loopback.hpp13
2 files changed, 12 insertions, 3 deletions
diff --git a/modules/core/c++/buffer.hpp b/modules/core/c++/buffer.hpp
index 87c54a6..5bbd90b 100644
--- a/modules/core/c++/buffer.hpp
+++ b/modules/core/c++/buffer.hpp
@@ -203,7 +203,7 @@ public:
}
auto& arr_front = buffer_.front();
- if(size != arr_front.size()){
+ if(size != arr_front.read_composite_length()){
return make_error<err::invalid_state>("Can't extract array buffer. Size doesn't match. Use view and copy.");
}
diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp
index f148281..9f6dddd 100644
--- a/modules/remote/c++/transfer_loopback.hpp
+++ b/modules/remote/c++/transfer_loopback.hpp
@@ -36,9 +36,18 @@ public:
*
*/
template<typename Sch>
- error_or<void> allocate(id<Sch> store_id){
+ error_or<void> allocate(data<typename meta_schema<Sch>::type, Encoding> meta, id<Sch> store_id){
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding>>>(values_);
- return make_error<err::not_implemented>();
+ try {
+ auto insert_res = vals.emplace(std::make_pair(store_id.get_value(), {std::move(meta)}));
+ if(!insert_res.second){
+ return make_error<err::already_exists>();
+ }
+ }catch(std::exception& ){
+ return make_error<err::out_of_memory>();
+ }
+ return make_void();
}
template<typename Sch>