diff options
Diffstat (limited to 'modules/remote-hip/c++')
-rw-r--r-- | modules/remote-hip/c++/remote.hpp | 8 | ||||
-rw-r--r-- | modules/remote-hip/c++/transfer.hpp | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/modules/remote-hip/c++/remote.hpp b/modules/remote-hip/c++/remote.hpp index 7263aaf..b814ff2 100644 --- a/modules/remote-hip/c++/remote.hpp +++ b/modules/remote-hip/c++/remote.hpp @@ -1,6 +1,7 @@ #pragma once #include "common.hpp" +#include "device.hpp" namespace saw { @@ -104,7 +105,12 @@ public: */ template<typename Schema, typename Encoding> error_or<own<data_server<Schema, Encoding, rmt::Hip>>> data_listen(remote_address<rmt::Hip>& dev){ - return heap<data_server<Schema, Encoding, rmt::Hip>>(dev); + our<device<rmt::Hip>> dev = nullptr; + auto ins = devs_.emplace(std::make_pair(dev.get_device_id(), our<device<rmt::Hip>>{nullptr})); + if(ins.second){ + ins.first->second = share<device<rmt::Hip>>(); + } + return heap<data_server<Schema, Encoding, rmt::Hip>>(ins.first->second); } /** diff --git a/modules/remote-hip/c++/transfer.hpp b/modules/remote-hip/c++/transfer.hpp index a81f657..4e76436 100644 --- a/modules/remote-hip/c++/transfer.hpp +++ b/modules/remote-hip/c++/transfer.hpp @@ -22,7 +22,12 @@ public: {} error_or<void> send(const data<Schema,Encoding>& dat, id<Schema> store_id){ - return make_error<err::not_implemented>(); + auto ins = values_.emplace(std::make_pair(store_id.get_value(), data<Schema, encode::Hip<Encoding>>{dat})); + if(!ins.second){ + return make_error<err::already_exists>(); + } + + return make_void(); } error_or<void> allocate(const data<typename meta_schema<Schema>::MetaSchema, Encoding>& dat, id<Schema> store_id){ |