summaryrefslogtreecommitdiff
path: root/modules/remote/c++/transfer_loopback.hpp
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-29 14:53:48 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-29 14:53:48 +0200
commit44f6a2ec37e35cf96419885be27afeab9ea84ec5 (patch)
treecbdd97513095ece2c1f23433b8e15196b147e7cc /modules/remote/c++/transfer_loopback.hpp
parent773fffb0c3596c93ae1522f6ef5eaaed4ad54e14 (diff)
wip
Diffstat (limited to 'modules/remote/c++/transfer_loopback.hpp')
-rw-r--r--modules/remote/c++/transfer_loopback.hpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp
index 2e01509..d205776 100644
--- a/modules/remote/c++/transfer_loopback.hpp
+++ b/modules/remote/c++/transfer_loopback.hpp
@@ -9,25 +9,38 @@ namespace rmt {
struct Loopback {};
}
+template<>
+class remote<rmt::Loopback>;
+
template<typename... Schema, typename Encoding>
-class data_server<tmpl_group<Schema...>, Encoding, rmt::Loopback> {
+class data_server<tmpl_group<Schema...>, Encoding, rmt::Loopback> final : public i_data_server<rmt::Loopback> {
private:
typename impl::data_server_redux<Encoding, storage::Default, typename tmpl_reduce<tmpl_group<Schema...>>::type>::type values_;
ptr<remote<rmt::Loopback>> remote_;
public:
data_server(remote_address<rmt::Loopback>& addr){
- remote->register_server(addr);
+ remote_().register_server(addr);
}
~data_server(){
- remote->deregister_server(addr);
+ remote_().deregister_server(addr);
}
SAW_FORBID_COPY(data_server);
SAW_FORBID_MOVE(data_server);
/**
+ * Return the schema id
+ */
+ std::pair<uint32_t,uint32_t> get_class_id() const override {
+ uint32_t schema_hash = schema_hash<tmpl_group<Schema...>>::apply();
+ uint32_t encode_hash = schema_hash<Encoding>::apply();
+
+ return std::make_pair(schema_hash, encode_hash);
+ }
+
+ /**
* Get data from client
*/
template<typename Sch>