summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-21 18:01:16 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-21 18:01:16 +0200
commit4fdfa202eef2419a9f043cd45a3075d6b5e3063f (patch)
treecc58d4804e81b680ce4ac3c9a47dc902893c0232
parent227f9d945d2b99bb33b71442ec229a13d1d29561 (diff)
Pulling out Storage template
-rw-r--r--modules/codec-netcdf/c++/netcdf.hpp10
-rw-r--r--modules/codec/c++/data.hpp2
-rw-r--r--modules/remote-sycl/c++/rpc.hpp4
-rw-r--r--modules/remote-sycl/c++/transfer.hpp24
-rw-r--r--modules/remote/c++/remote.hpp26
-rw-r--r--modules/remote/c++/remote_loopback.hpp20
-rw-r--r--modules/remote/c++/remote_loopback_base.hpp8
7 files changed, 47 insertions, 47 deletions
diff --git a/modules/codec-netcdf/c++/netcdf.hpp b/modules/codec-netcdf/c++/netcdf.hpp
index e89928d..f93eceb 100644
--- a/modules/codec-netcdf/c++/netcdf.hpp
+++ b/modules/codec-netcdf/c++/netcdf.hpp
@@ -19,7 +19,7 @@ struct Netcdf {};
* Class representing the files system netcdf file
*/
template<typename Schema>
-class data<Schema, encode::Netcdf, storage::Default> {
+class data<Schema, encode::Netcdf> {
private:
std::vector<uint8_t> buff_;
public:
@@ -44,7 +44,7 @@ public:
};
template<typename Schema>
-class codec<Schema, encode::Netcdf,storage::Default>{
+class codec<Schema, encode::Netcdf>{
static_assert(always_false<Schema,encode::Netcdf>, "NetCDF only supports Structs as a root object");
};
@@ -53,7 +53,7 @@ class codec<Schema, encode::Netcdf,storage::Default>{
namespace saw {
template<typename... Vals, string_literal... Keys>
-class codec<schema::Struct<schema::Member<Vals,Keys>...>, encode::Netcdf, storage::Default> {
+class codec<schema::Struct<schema::Member<Vals,Keys>...>, encode::Netcdf> {
private:
using Schema = schema::Struct<schema::Member<Vals,Keys>...>;
public:
@@ -69,7 +69,7 @@ public:
* Encoder function
*/
template<typename FromEncoding>
- error_or<void> encode(const data<Schema, FromEncoding, storage::Default>& from, data<Schema,encode::Netcdf, storage::Default>& to) {
+ error_or<void> encode(const data<Schema, FromEncoding>& from, data<Schema,encode::Netcdf>& to) {
int rc{};
int ncid{};
@@ -131,7 +131,7 @@ public:
* Decoder function
*/
template<typename ToEncoding>
- error_or<void> decode(data<Schema, encode::Netcdf, storage::Default>& from_decode, data<Schema,ToEncoding,storage::Default>& to_decode) {
+ error_or<void> decode(data<Schema, encode::Netcdf>& from_decode, data<Schema,ToEncoding>& to_decode) {
int ncid{};
int rc{};
diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp
index 11d94e6..77edf8e 100644
--- a/modules/codec/c++/data.hpp
+++ b/modules/codec/c++/data.hpp
@@ -27,7 +27,7 @@ struct Native {
};
}
-template<typename Schema, typename Encode, typename Storage = storage::Default>
+template<typename Schema, typename Encode>
class codec;
/*
* Helper for the basic message container, so the class doesn't have to be
diff --git a/modules/remote-sycl/c++/rpc.hpp b/modules/remote-sycl/c++/rpc.hpp
index 65e2df5..da2eeaa 100644
--- a/modules/remote-sycl/c++/rpc.hpp
+++ b/modules/remote-sycl/c++/rpc.hpp
@@ -10,8 +10,8 @@ namespace saw {
/**
* Remote data class for the Sycl backend.
*/
-template<typename T, typename Encoding, typename Storage>
-class remote_data<T, Encoding, Storage, rmt::Sycl> final {
+template<typename T, typename Encoding>
+class remote_data<T, Encoding, rmt::Sycl> final {
private:
/**
* An identifier to the data being held on the remote
diff --git a/modules/remote-sycl/c++/transfer.hpp b/modules/remote-sycl/c++/transfer.hpp
index a7f1b53..e39165b 100644
--- a/modules/remote-sycl/c++/transfer.hpp
+++ b/modules/remote-sycl/c++/transfer.hpp
@@ -88,9 +88,9 @@ public:
* Get data which we will store.
*/
template<typename Sch>
- error_or<void> send(const data<Sch, Encoding, storage::Default>& dat, id<Sch> store_id){
+ error_or<void> send(const data<Sch, Encoding>& dat, id<Sch> store_id){
auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
- auto eoval = device_->template copy_to_device<Sch, Encoding, storage::Default>(dat);
+ auto eoval = device_->template copy_to_device<Sch, Encoding>(dat);
if(eoval.is_error()){
auto& err = eoval.get_error();
return std::move(err);
@@ -108,9 +108,9 @@ public:
}
template<typename Sch>
- error_or<void> allocate(const data<typename meta_schema<Sch>::MetaSchema, Encoding, storage::Default>& dat, id<Sch> store_id){
- auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
- auto eoval = device_->template allocate_on_device<Sch, Encoding, storage::Default>(dat);
+ error_or<void> allocate(const data<typename meta_schema<Sch>::MetaSchema, Encoding>& dat, id<Sch> store_id){
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,encode::Sycl<Encoding>>>>(values_);
+ auto eoval = device_->template allocate_on_device<Sch, Encoding>(dat);
if(eoval.is_error()){
auto& err = eoval.get_error();
return std::move(err);
@@ -132,14 +132,14 @@ public:
*/
template<typename Sch>
error_or<data<Sch, Encoding, storage::Default>> receive(id<Sch> store_id){
- auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,encode::Sycl<Encoding>>>>(values_);
auto find_res = vals.find(store_id.get_value());
if(find_res == vals.end()){
return make_error<err::not_found>();
}
auto& dat = find_res->second;
- auto eoval = device_->template copy_to_host<Sch, Encoding, storage::Default>(dat);
+ auto eoval = device_->template copy_to_host<Sch, Encoding>(dat);
return eoval;
}
@@ -148,7 +148,7 @@ public:
*/
template<typename Sch>
error_or<void> erase(id<Sch> store_id){
- auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding>>>(values_);
auto erase_op = vals.erase(store_id.get_value());
if(erase_op == 0u){
return make_error<err::not_found>();
@@ -161,8 +161,8 @@ public:
* Insert operations may invalidate the pointer.
*/
template<typename Sch>
- error_or<data<Sch, Encoding, rmt::Sycl>*> find(id<Sch> store_id){
- auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
+ error_or<data<Sch, encode::Sycl<Encoding>>*> find(id<Sch> store_id){
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding>>>(values_);
auto find_res = vals.find(store_id.get_value());
if(find_res == vals.end()){
return make_error<err::not_found>();
@@ -200,7 +200,7 @@ public:
* Send data to the remote.
*/
template<typename Sch>
- error_or<id<Sch>> send(const data<Sch, Encoding, storage::Default>& dat){
+ error_or<id<Sch>> send(const data<Sch, Encoding>& dat){
id<Sch> dat_id{next_id_};
auto eov = srv_->send(dat, dat_id);
if(eov.is_error()){
@@ -216,7 +216,7 @@ public:
* Receive data
*/
template<typename Sch>
- conveyor<data<Sch, Encoding, storage::Default>> receive(id<Sch> dat_id){
+ conveyor<data<Sch, Encoding>> receive(id<Sch> dat_id){
auto eov = srv_->receive(dat_id);
if(eov.is_error()){
auto& err = eov.get_error();
diff --git a/modules/remote/c++/remote.hpp b/modules/remote/c++/remote.hpp
index 571a4e7..807213e 100644
--- a/modules/remote/c++/remote.hpp
+++ b/modules/remote/c++/remote.hpp
@@ -14,13 +14,13 @@ namespace saw {
/**
* This class acts as a helper for rpc calls and representing data on the remote.
*/
-template<typename T, typename Encoding, typename Storage>
+template<typename T, typename Encoding>
class data_or_id {
private:
/**
* Variant representing the either id or data class.
*/
- std::variant<id<T>, data<T,Encoding, Storage>> doi_;
+ std::variant<id<T>, data<T,Encoding>> doi_;
public:
/**
* Constructor for instantiating.
@@ -32,7 +32,7 @@ public:
/**
* Constructor for instantiating.
*/
- data_or_id(data<T,Encoding, Storage> val):
+ data_or_id(data<T,Encoding> val):
doi_{std::move(val)}
{}
@@ -47,7 +47,7 @@ public:
* Check if this class holds data.
*/
bool is_data() const {
- return std::holds_alternative<data<T,Encoding,Storage>>(doi_);
+ return std::holds_alternative<data<T,Encoding>>(doi_);
}
/**
@@ -60,15 +60,15 @@ public:
/**
* Return a data reference.
*/
- data<T,Encoding, Storage>& get_data(){
- return std::get<data<T,Encoding, Storage>>(doi_);
+ data<T,Encoding>& get_data(){
+ return std::get<data<T,Encoding>>(doi_);
}
/**
* Return a data reference.
*/
- const data<T,Encoding,Storage>& get_data() const {
- return std::get<data<T,Encoding,Storage>>(doi_);
+ const data<T,Encoding>& get_data() const {
+ return std::get<data<T,Encoding>>(doi_);
}
};
@@ -76,21 +76,21 @@ public:
/**
* Representing data on the remote
*/
-template<typename T, typename Encoding, typename Storage, typename Remote>
+template<typename T, typename Encoding, typename Remote>
class remote_data;
-template<typename Iface, typename Encoding, typename Storage, typename Remote>
+template<typename Iface, typename Encoding, typename Remote>
class rpc_client;
/**
* Implementation of a remote server on the backend
*/
-template<typename Iface, typename Encoding, typename Storage, typename Remote>
+template<typename Iface, typename Encoding, typename Remote>
class rpc_server {
private:
- interface<Iface, Encoding, Storage> iface_;
+ interface<Iface, Encoding> iface_;
public:
- rpc_server(interface<Iface, Encoding, Storage> iface):
+ rpc_server(interface<Iface, Encoding> iface):
iface_{std::move(iface)}
{}
};
diff --git a/modules/remote/c++/remote_loopback.hpp b/modules/remote/c++/remote_loopback.hpp
index fde410d..308bdc6 100644
--- a/modules/remote/c++/remote_loopback.hpp
+++ b/modules/remote/c++/remote_loopback.hpp
@@ -9,8 +9,8 @@
namespace saw {
-template<typename T, typename Encoding, typename Storage>
-class remote_data<T, Encoding, Storage, rmt::Loopback> {
+template<typename T, typename Encoding>
+class remote_data<T, Encoding, rmt::Loopback> {
private:
id<T> id_;
public:
@@ -21,24 +21,24 @@ public:
/**
* Wait until data arrives
*/
- error_or<data<T, Encoding, Storage>> wait(wait_scope& wait);
+ error_or<data<T, Encoding>> wait(wait_scope& wait);
/**
* Asynchronously wait for a result
*/
- conveyor<data<T, Encoding, Storage>> on_receive();
+ conveyor<data<T, Encoding>> on_receive();
};
/**
* Client RPC reference structure
*/
-template<typename Iface, typename Encoding, typename Storage>
-class rpc_client<Iface, Encoding, Storage, rmt::Loopback> {
+template<typename Iface, typename Encoding>
+class rpc_client<Iface, Encoding, rmt::Loopback> {
/**
* request the data from the remote
*/
template<typename IdT>
- remote_data<IdT, Encoding, Storage, rmt::Loopback> request_data(id<IdT> data);
+ remote_data<IdT, Encoding, rmt::Loopback> request_data(id<IdT> data);
/** @todo
* Determine type based on Name
@@ -54,10 +54,10 @@ class rpc_client<Iface, Encoding, Storage, rmt::Loopback> {
};
-template<typename Iface, typename Encode, typename Storage>
-class rpc_server<Iface, Encode, Storage, rmt::Loopback> {
+template<typename Iface, typename Encode>
+class rpc_server<Iface, Encode, rmt::Loopback> {
public:
- using InterfaceT = interface<Iface, Encode, Storage>;
+ using InterfaceT = interface<Iface, Encode>;
private:
const remote_address<rmt::Loopback>* addr_;
InterfaceT iface_;
diff --git a/modules/remote/c++/remote_loopback_base.hpp b/modules/remote/c++/remote_loopback_base.hpp
index 87d4393..b53ae49 100644
--- a/modules/remote/c++/remote_loopback_base.hpp
+++ b/modules/remote/c++/remote_loopback_base.hpp
@@ -61,14 +61,14 @@ public:
/**
* Connect to a remote
*/
- template<typename Iface, typename Encode, typename Storage>
- conveyor<rpc_client<Iface, Encode, Storage, rmt::Loopback>> connect(const remote_address<rmt::Loopback>& addr);
+ template<typename Iface, typename Encode>
+ conveyor<rpc_client<Iface, Encode, rmt::Loopback>> connect(const remote_address<rmt::Loopback>& addr);
/**
* Start listening
*/
- template<typename Iface, typename Encode, typename Storage>
- rpc_server<Iface, Encode, Storage, rmt::Loopback> listen(const remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,Storage,rmt::Loopback>::InterfaceT iface){
+ template<typename Iface, typename Encode>
+ rpc_server<Iface, Encode, rmt::Loopback> listen(const remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,rmt::Loopback>::InterfaceT iface){
return {addr, std::move(iface)};
}