summaryrefslogtreecommitdiff
path: root/modules/remote
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-26 21:44:23 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-26 21:44:23 +0200
commit773fffb0c3596c93ae1522f6ef5eaaed4ad54e14 (patch)
tree5862d2e2f92100223384acde06a46fcc6c9614ca /modules/remote
parenta5718298865976f3b977b2e7a18254d19e288152 (diff)
wip
Diffstat (limited to 'modules/remote')
-rw-r--r--modules/remote/c++/remote_loopback.hpp9
-rw-r--r--modules/remote/c++/transfer_loopback.hpp11
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