summaryrefslogtreecommitdiff
path: root/modules/remote-io/c++/remote.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote-io/c++/remote.hpp')
-rw-r--r--modules/remote-io/c++/remote.hpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/modules/remote-io/c++/remote.hpp b/modules/remote-io/c++/remote.hpp
new file mode 100644
index 0000000..fe2804d
--- /dev/null
+++ b/modules/remote-io/c++/remote.hpp
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <forstio/io/io.hpp>
+
+namespace saw {
+/**
+ */
+namespace rmt {
+struct IoTcp {};
+}
+
+template<>
+class remote_address<rmt::IoTcp> final {
+private:
+
+public:
+ remote_address() = default;
+};
+
+/**
+ * A device representing a remote server. Technically it's
+ * a logical distinction and not a physical.
+ */
+template<>
+class remote<rmt::IoTcp> final {
+private:
+ ref<network> net_;
+public:
+ remote(network& net__):
+ net_{net__}
+ {}
+
+ conveyor<own<remote_address<rmt::IoTcp>>> resolve_address(){
+ return heap<remote_address<rmt::IoTcp>>();
+ }
+
+ error_or<own<remote_address<rmt::IoTcp>>> parse_address(){
+ return heap<remote_address<rmt::IoTcp>>();
+ }
+
+ template<typename Schema, typename Encoding>
+ error_or<own<data_server<Schema, Encoding, rmt::IoTcp>>> data_listen(const remote_address<rmt::IoTcp>& addr){
+ return make_error<err::not_implemented>();
+ }
+
+ template<typename Schema, typename Encoding>
+ conveyor<own<data_client<Schema, Encoding, rmt::IoTcp>>> data_connect(const remote_address<rmt::IoTcp>& addr){
+ return make_error<err::not_implemented>();
+ }
+};
+}