summaryrefslogtreecommitdiff
path: root/modules/remote
diff options
context:
space:
mode:
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