summaryrefslogtreecommitdiff
path: root/c++
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2023-10-30 22:32:41 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2023-10-30 22:32:41 +0100
commitbd1482cde66cf2aaa314ce4d23db5ceb45d41d4b (patch)
treeea09f6241d405afd05d23b98e0f56b6054e8d35f /c++
parent3e09472ba3e6a651287ecfb5e2bfeb0ef2aeb5db (diff)
codec,io_codec: Intermediate commit for rpc
Diffstat (limited to 'c++')
-rw-r--r--c++/codec/rpc.h24
-rw-r--r--c++/io_codec/rpc.h17
2 files changed, 41 insertions, 0 deletions
diff --git a/c++/codec/rpc.h b/c++/codec/rpc.h
new file mode 100644
index 0000000..8e14292
--- /dev/null
+++ b/c++/codec/rpc.h
@@ -0,0 +1,24 @@
+#pragma once
+
+namespace saw {
+template<typename T>
+class remote {
+ static_assert(always_false<T>, "Type of remote host not supported");
+};
+
+class rpc_client {
+ template<typename... T>
+ struct request {
+ private:
+ std::tuple<id<T>> ids_;
+ public:
+ error_or<data<T>> wait();
+ };
+
+ template<typename... T>
+ request<T...> request_data(id<T>... data);
+};
+
+class rpc_server {
+};
+}
diff --git a/c++/io_codec/rpc.h b/c++/io_codec/rpc.h
new file mode 100644
index 0000000..06a5f76
--- /dev/null
+++ b/c++/io_codec/rpc.h
@@ -0,0 +1,17 @@
+#pragma once
+
+namespace saw {
+namespace rmt {
+struct Network {};
+}
+
+template<>
+class remote<rmt::Network> {
+private:
+ std::string addr_str_;
+public:
+ remote(std::string addr_str);
+
+ conveyor<rpc_client<rmt::Network>> create_client();
+};
+}