summaryrefslogtreecommitdiff
path: root/modules/remote-io/c++
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote-io/c++')
-rw-r--r--modules/remote-io/c++/SConscript38
-rw-r--r--modules/remote-io/c++/remote.hpp51
2 files changed, 89 insertions, 0 deletions
diff --git a/modules/remote-io/c++/SConscript b/modules/remote-io/c++/SConscript
new file mode 100644
index 0000000..6194362
--- /dev/null
+++ b/modules/remote-io/c++/SConscript
@@ -0,0 +1,38 @@
+#!/bin/false
+
+import os
+import os.path
+import glob
+
+
+Import('env')
+
+dir_path = Dir('.').abspath
+
+# Environment for base library
+thread_env = env.Clone();
+
+thread_env.sources = sorted(glob.glob(dir_path + "/*.cpp"))
+thread_env.headers = sorted(glob.glob(dir_path + "/*.hpp"))
+
+env.sources += thread_env.sources;
+env.headers += thread_env.headers;
+
+## Shared lib
+objects_shared = []
+thread_env.add_source_files(objects_shared, thread_env.sources, shared=True);
+env.library_shared = thread_env.SharedLibrary('#build/forstio-thread', [objects_shared]);
+
+## Static lib
+objects_static = []
+thread_env.add_source_files(objects_static, thread_env.sources, shared=False);
+env.library_static = thread_env.StaticLibrary('#build/forstio-thread', [objects_static]);
+
+# Set Alias
+env.Alias('library_thread', [env.library_shared, env.library_static]);
+
+env.targets += ['library_thread'];
+
+# Install
+env.Install('$prefix/lib/', [env.library_shared, env.library_static]);
+env.Install('$prefix/include/forstio/thread/', [thread_env.headers]);
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>();
+ }
+};
+}