diff options
Diffstat (limited to 'modules/remote/c++')
-rw-r--r-- | modules/remote/c++/remote_loopback.hpp | 9 | ||||
-rw-r--r-- | modules/remote/c++/transfer_loopback.hpp | 11 |
2 files changed, 19 insertions, 1 deletions
diff --git a/modules/remote/c++/remote_loopback.hpp b/modules/remote/c++/remote_loopback.hpp index 10ac79c..ea4eb8e 100644 --- a/modules/remote/c++/remote_loopback.hpp +++ b/modules/remote/c++/remote_loopback.hpp @@ -86,6 +86,7 @@ public: template<> class remote<rmt::Loopback> { private: + std::map<uint64_t, i_data_server<>> registered_data_servers_; public: /** * Resolves an address for the remote @@ -107,5 +108,13 @@ public: rpc_server<Iface, Encode, Storage, rmt::Loopback> listen(const remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,Storage,rmt::Loopback>::InterfaceT iface){ return {addr, std::move(iface)}; } + + /** + * Start data server + */ + template<typename Encode> + data_server<Encode> data_listen(const remote_address<rmt::Loopback>& addr){ + return {addr,*this}; + } }; } diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp index 9d026f2..2e01509 100644 --- a/modules/remote/c++/transfer_loopback.hpp +++ b/modules/remote/c++/transfer_loopback.hpp @@ -16,7 +16,16 @@ private: ptr<remote<rmt::Loopback>> remote_; public: - data_server(remote_address<rmt::Loopback>& addr) + data_server(remote_address<rmt::Loopback>& addr){ + remote->register_server(addr); + } + + ~data_server(){ + remote->deregister_server(addr); + } + + SAW_FORBID_COPY(data_server); + SAW_FORBID_MOVE(data_server); /** * Get data from client |