diff options
Diffstat (limited to 'modules/remote/c++/remote_loopback_base.hpp')
-rw-r--r-- | modules/remote/c++/remote_loopback_base.hpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/modules/remote/c++/remote_loopback_base.hpp b/modules/remote/c++/remote_loopback_base.hpp index 5e5e108..7a567b2 100644 --- a/modules/remote/c++/remote_loopback_base.hpp +++ b/modules/remote/c++/remote_loopback_base.hpp @@ -54,14 +54,19 @@ private: template<typename Iface, typename Encoding, uint64_t I> error_or<void> find_data_servers_ele(typename rpc_server<Iface,Encoding,rmt::Loopback>::DataServers& ret_val){ - + if } template<typename Iface, typename Encoding> error_or<typename rpc_server<Iface, Encoding, rmt::Loopback>::DataServers> find_data_servers(){ typename rpc_server<Iface,Encoding,rmt::Loopback>::DataServers ret_val; - + { + auto eov = find_data_servers_ele<Iface,Encoding,0u>(ret_val); + if(eov.is_error()){ + return std::move(eov.get_error()); + } + } return ret_val; } @@ -77,15 +82,21 @@ public: * Connect to a remote */ template<typename Iface, typename Encode> - conveyor<rpc_client<Iface, Encode, rmt::Loopback>> connect(const remote_address<rmt::Loopback>& addr); + conveyor<rpc_client<Iface, Encode, rmt::Loopback>> rpc_connect(const remote_address<rmt::Loopback>& addr); /** * Start listening */ template<typename Iface, typename Encode> - error_or<own<rpc_server<Iface, Encode, rmt::Loopback>>> rpc_listen(const remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,rmt::Loopback>::InterfaceT iface){ + error_or<own<rpc_server<Iface, Encode, rmt::Loopback>>> rpc_listen(remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,rmt::Loopback>::InterfaceT iface){ + + auto eo_dat_srvs = find_data_servers<Iface,Encode>(); + if(eo_dat_srvs.is_error()){ + return std::move(eo_dat_srvs.get_error()); + } + auto& dat_srvs = eo_dat_srvs.get_value(); - return heap<rpc_server<Iface,Encode,rmt::Loopback>>({*this}, addr, std::move(iface)); + return heap<rpc_server<Iface,Encode,rmt::Loopback>>(*this, addr, std::move(iface), dat_srvs); } /** |