From b9a4cf706cf0145c814ef5987dad21ebc4172ac6 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Sun, 11 Aug 2024 16:07:52 +0200 Subject: wip --- modules/remote/c++/transfer_loopback.hpp | 41 +++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'modules/remote/c++/transfer_loopback.hpp') diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp index d205776..55a43fa 100644 --- a/modules/remote/c++/transfer_loopback.hpp +++ b/modules/remote/c++/transfer_loopback.hpp @@ -12,14 +12,53 @@ struct Loopback {}; template<> class remote; +template +class data_server final : public i_data_server { +private: + //typename + using type = std::unordered_map>; + type values_; + + ptr> remote_; + remote_address rmt_address_; +public: + data_server(ptr> remote__, const remote_address& addr): + remote_{remote__}, + rmt_address_{addr} + { + remote_().register_server(addr); + } + + ~data_server(){ + remote_().deregister_server(addr); + } + + SAW_FORBID_COPY(data_server); + SAW_FORBID_MOVE(data_server); + + /** + * Return the schema id + */ + std::pair get_class_id() const override { + uint32_t schema_hash = schema_hash::apply(); + uint32_t encode_hash = schema_hash::apply(); + + return std::make_pair(schema_hash, encode_hash); + } +}; + template class data_server, Encoding, rmt::Loopback> final : public i_data_server { private: typename impl::data_server_redux>::type>::type values_; ptr> remote_; + remote_address rmt_address_; public: - data_server(remote_address& addr){ + data_server(ptr> remote__, const remote_address& addr): + remote_{remote__}, + rmt_address_{addr} + { remote_().register_server(addr); } -- cgit v1.2.3