diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-06-12 17:15:34 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-06-12 17:15:34 +0200 |
commit | e2a7609028346c3b776a424c9be848e49d3a0e2e (patch) | |
tree | ed4d8adf8b82a6442514da467406c6bc3d3fc312 /modules/io_codec | |
parent | e4e49a117702945066e3e279fa0f005200400cb7 (diff) |
Working on reference types in std::function deduction
Diffstat (limited to 'modules/io_codec')
-rw-r--r-- | modules/io_codec/c++/rpc.hpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/modules/io_codec/c++/rpc.hpp b/modules/io_codec/c++/rpc.hpp index 04293cd..f01ebd5 100644 --- a/modules/io_codec/c++/rpc.hpp +++ b/modules/io_codec/c++/rpc.hpp @@ -13,13 +13,13 @@ namespace saw { /** * This class acts as a helper for rpc calls and representing data on the remote. */ -template<typename T, typename Encoding> +template<typename T, typename Encoding, typename Storage> class data_or_id { private: /** * Variant representing the either id or data class. */ - std::variant<id<T>, data<T,Encoding>> doi_; + std::variant<id<T>, data<T,Encoding, Storage>> doi_; public: /** * Constructor for instantiating. @@ -31,7 +31,7 @@ public: /** * Constructor for instantiating. */ - data_or_id(data<T,Encoding> val): + data_or_id(data<T,Encoding, Storage> val): doi_{std::move(val)} {} @@ -46,7 +46,7 @@ public: * Check if this class holds data. */ bool is_data() const { - return std::holds_alternative<data<T,Encoding>>(doi_); + return std::holds_alternative<data<T,Encoding,Storage>>(doi_); } /** @@ -59,22 +59,22 @@ public: /** * Return a data reference. */ - data<T,Encoding>& get_data(){ - return std::get<data<T,Encoding>>(doi_); + data<T,Encoding, Storage>& get_data(){ + return std::get<data<T,Encoding, Storage>>(doi_); } /** * Return a data reference. */ - const data<T,Encoding>& get_data() const { - return std::get<data<T,Encoding>>(doi_); + const data<T,Encoding,Storage>& get_data() const { + return std::get<data<T,Encoding,Storage>>(doi_); } }; /** * Representing data on the remote */ -template<typename T, typename Encoding, typename Remote> +template<typename T, typename Encoding, typename Storage, typename Remote> class remote_data { private: id<T> id_; @@ -86,24 +86,24 @@ public: /** * Wait until data arrives */ - error_or<data<T, Encoding>> wait(wait_scope& wait); + error_or<data<T, Encoding, Storage>> wait(wait_scope& wait); /** * Asynchronously wait for a result */ - conveyor<data<T, Encoding>> on_receive(); + conveyor<data<T, Encoding, Storage>> on_receive(); }; /** * Client RPC reference structure */ -template<typename Iface, typename Encoding, typename Remote> +template<typename Iface, typename Encoding, typename Storage, typename Remote> class rpc_client { /** * request the data from the remote */ template<typename IdT> - remote_data<IdT, Encoding, Remote> request_data(id<IdT> data); + remote_data<IdT, Encoding, Storage, Remote> request_data(id<IdT> data); /** @todo * Determine type based on Name @@ -157,8 +157,8 @@ class remote { /** * Connect to a remote */ - template<typename Iface, typename Encode> - conveyor<rpc_client<Iface, Encode, Remote>> connect(const remote_address<Remote>& addr); + template<typename Iface, typename Encode, typename Storage> + conveyor<rpc_client<Iface, Encode, Storage, Remote>> connect(const remote_address<Remote>& addr); /** * Start listening |