diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-26 21:44:23 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-26 21:44:23 +0200 |
commit | 773fffb0c3596c93ae1522f6ef5eaaed4ad54e14 (patch) | |
tree | 5862d2e2f92100223384acde06a46fcc6c9614ca /modules/remote | |
parent | a5718298865976f3b977b2e7a18254d19e288152 (diff) |
wip
Diffstat (limited to 'modules/remote')
-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 |