summaryrefslogtreecommitdiff
path: root/modules/io_codec
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-06-12 17:15:34 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-06-12 17:15:34 +0200
commite2a7609028346c3b776a424c9be848e49d3a0e2e (patch)
treeed4d8adf8b82a6442514da467406c6bc3d3fc312 /modules/io_codec
parente4e49a117702945066e3e279fa0f005200400cb7 (diff)
Working on reference types in std::function deduction
Diffstat (limited to 'modules/io_codec')
-rw-r--r--modules/io_codec/c++/rpc.hpp30
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