summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-26 21:44:23 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-07-26 21:44:23 +0200
commit773fffb0c3596c93ae1522f6ef5eaaed4ad54e14 (patch)
tree5862d2e2f92100223384acde06a46fcc6c9614ca
parenta5718298865976f3b977b2e7a18254d19e288152 (diff)
wip
-rw-r--r--modules/remote/c++/remote_loopback.hpp9
-rw-r--r--modules/remote/c++/transfer_loopback.hpp11
-rw-r--r--modules/window/SConstruct11
-rw-r--r--modules/window/examples/window_create.cpp4
4 files changed, 33 insertions, 2 deletions
diff --git a/modules/remote/c++/remote_loopback.hpp b/modules/remote/c++/remote_loopback.hpp
index 10ac79c..ea4eb8e 100644
--- a/modules/remote/c++/remote_loopback.hpp
+++ b/modules/remote/c++/remote_loopback.hpp
@@ -86,6 +86,7 @@ public:
template<>
class remote<rmt::Loopback> {
private:
+ std::map<uint64_t, i_data_server<>> registered_data_servers_;
public:
/**
* Resolves an address for the remote
@@ -107,5 +108,13 @@ public:
rpc_server<Iface, Encode, Storage, rmt::Loopback> listen(const remote_address<rmt::Loopback>& addr, typename rpc_server<Iface,Encode,Storage,rmt::Loopback>::InterfaceT iface){
return {addr, std::move(iface)};
}
+
+ /**
+ * Start data server
+ */
+ template<typename Encode>
+ data_server<Encode> data_listen(const remote_address<rmt::Loopback>& addr){
+ return {addr,*this};
+ }
};
}
diff --git a/modules/remote/c++/transfer_loopback.hpp b/modules/remote/c++/transfer_loopback.hpp
index 9d026f2..2e01509 100644
--- a/modules/remote/c++/transfer_loopback.hpp
+++ b/modules/remote/c++/transfer_loopback.hpp
@@ -16,7 +16,16 @@ private:
ptr<remote<rmt::Loopback>> remote_;
public:
- data_server(remote_address<rmt::Loopback>& addr)
+ data_server(remote_address<rmt::Loopback>& addr){
+ remote->register_server(addr);
+ }
+
+ ~data_server(){
+ remote->deregister_server(addr);
+ }
+
+ SAW_FORBID_COPY(data_server);
+ SAW_FORBID_MOVE(data_server);
/**
* Get data from client
diff --git a/modules/window/SConstruct b/modules/window/SConstruct
index cc66f21..3017baf 100644
--- a/modules/window/SConstruct
+++ b/modules/window/SConstruct
@@ -43,6 +43,14 @@ env_vars.Add('prefix',
validator=isAbsolutePath
)
+env_vars.Add(
+ BoolVariable('build_examples',
+ help='Build examples',
+ default=False
+ )
+);
+
+
env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[],
CPPDEFINES=['SAW_UNIX', 'SAW_UNIX_XCB'],
CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'],
@@ -64,7 +72,8 @@ env.headers = [];
env.targets = [];
Export('env')
-SConscript('SConscript')
+SConscript('c++/SConscript')
+SConscript('examples/SConscript')
env.Alias('cdb', env.cdb);
env.Alias('all', [env.targets]);
diff --git a/modules/window/examples/window_create.cpp b/modules/window/examples/window_create.cpp
new file mode 100644
index 0000000..dde8295
--- /dev/null
+++ b/modules/window/examples/window_create.cpp
@@ -0,0 +1,4 @@
+int main(){
+
+ return 0;
+}