summaryrefslogtreecommitdiff
path: root/modules/io
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-03-15 11:40:02 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-03-15 11:40:02 +0100
commit2a84e80df881785f104a06c026e1810c3cc50516 (patch)
treebdba41696bc4582aff0590e1cddd3eb4ba849d13 /modules/io
parent68a6e9658047aa04f16870dbc48ba79a2963a650 (diff)
io: Building examples
Diffstat (limited to 'modules/io')
-rw-r--r--modules/io/.nix/derivation.nix20
-rw-r--r--modules/io/SConstruct12
-rw-r--r--modules/io/c++/SConscript8
-rw-r--r--modules/io/examples/SConscript12
-rw-r--r--modules/io/examples/echo_server.cpp16
5 files changed, 51 insertions, 17 deletions
diff --git a/modules/io/.nix/derivation.nix b/modules/io/.nix/derivation.nix
index a14bd34..b4a9c0c 100644
--- a/modules/io/.nix/derivation.nix
+++ b/modules/io/.nix/derivation.nix
@@ -4,11 +4,10 @@
, clang-tools
, version
, forstio
+, build_examples ? "false"
}:
-let
-
-in stdenv.mkDerivation {
+stdenv.mkDerivation {
pname = "forstio-io";
inherit version;
src = ./..;
@@ -23,7 +22,18 @@ in stdenv.mkDerivation {
buildInputs = [
forstio.core
forstio.async
- ];
+ ];
+
+ outputs = [
+ "out"
+ "dev"
+ ];
+
+ buildPhase = ''
+ scons build_examples=${build_examples}
+ '';
- outputs = ["out" "dev"];
+ installPhase = ''
+ scons prefix=$out build_examples=${build_examples} install
+ '';
}
diff --git a/modules/io/SConstruct b/modules/io/SConstruct
index 035bdda..3eedb77 100644
--- a/modules/io/SConstruct
+++ b/modules/io/SConstruct
@@ -43,8 +43,17 @@ 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'],
+ CPPDEFINES=[
+ 'SAW_UNIX'
+ ],
CXXFLAGS=[
'-std=c++20',
'-g',
@@ -67,6 +76,7 @@ env.targets = [];
Export('env')
SConscript('c++/SConscript')
+SConscript('examples/SConscript')
env.Alias('cdb', env.cdb);
env.Alias('all', [env.targets]);
diff --git a/modules/io/c++/SConscript b/modules/io/c++/SConscript
index cb10119..a941248 100644
--- a/modules/io/c++/SConscript
+++ b/modules/io/c++/SConscript
@@ -21,18 +21,18 @@ env.headers += io_env.headers;
## Shared lib
objects_shared = []
io_env.add_source_files(objects_shared, io_env.sources, shared=True);
-io_env.library_shared = io_env.SharedLibrary('#build/forstio-io', [objects_shared]);
+env.library_shared = io_env.SharedLibrary('#build/forstio-io', [objects_shared]);
## Static lib
objects_static = []
io_env.add_source_files(objects_static, io_env.sources, shared=False);
-io_env.library_static = io_env.StaticLibrary('#build/forstio-io', [objects_static]);
+env.library_static = io_env.StaticLibrary('#build/forstio-io', [objects_static]);
# Set Alias
-env.Alias('library_io', [io_env.library_shared, io_env.library_static]);
+env.Alias('library_io', [env.library_shared, env.library_static]);
env.targets += ['library_io'];
# Install
-env.Install('$prefix/lib/', [io_env.library_shared, io_env.library_static]);
+env.Install('$prefix/lib/', [env.library_shared, env.library_static]);
env.Install('$prefix/include/forstio/io/', [io_env.headers]);
diff --git a/modules/io/examples/SConscript b/modules/io/examples/SConscript
index 850edcd..a8fad79 100644
--- a/modules/io/examples/SConscript
+++ b/modules/io/examples/SConscript
@@ -19,10 +19,14 @@ env.sources += examples_env.sources;
env.headers += examples_env.headers;
objects_static = []
-examples_env.echo_client = examples_env.Program('#bin/echo_client', ['echo_client.cpp', env.sources]);
-examples_env.echo_server = examples_env.Program('#bin/echo_server', ['echo_server.cpp', env.sources]);
+examples_env.echo_client = examples_env.Program('#bin/echo_client', ['echo_client.cpp', env.library_static]);
+examples_env.echo_server = examples_env.Program('#bin/echo_server', ['echo_server.cpp', env.library_static]);
# Set Alias
-env.Alias('examples', [examples_env.echo_client, examples_env.echo_server]);
+env.examples = [examples_env.echo_client, examples_env.echo_server];
+env.Alias('examples', env.examples);
-env.targets += ['examples'];
+if env["build_examples"]:
+ env.targets += ['examples'];
+ env.Install('$prefix/bin/', env.examples);
+#endif
diff --git a/modules/io/examples/echo_server.cpp b/modules/io/examples/echo_server.cpp
index 82513ff..24bdfa2 100644
--- a/modules/io/examples/echo_server.cpp
+++ b/modules/io/examples/echo_server.cpp
@@ -52,10 +52,12 @@ int main(){
message msg_state;
+ std::cout<<"Starting to resolve address"<<std::endl;
/**
* Try to resolve address. If resolved
*/
- network.resolve_address("127.0.0.1", 4321).then([&](auto net_addr){
+ network.resolve_address("127.0.0.1", 4322).then([&](auto net_addr){
+ std::cout<<"Resolved address"<<std::endl;
addr = std::move(net_addr);
srv = network.listen(*addr);
if(srv){
@@ -74,11 +76,19 @@ int main(){
}else{
keep_running = false;
}
- }).detach();
+ }).detach([&](auto err) {
+ std::cout<<"Failed to resolve address: "<<err.get_category()<<":"<<err.get_message()<<std::endl;
+ keep_running = false;
+ return err;
+ });
+
+ std::cout<<"Entering waiting loop"<<std::endl;
while(keep_running){
- wait_scope.wait();
+ wait_scope.wait(std::chrono::seconds{1});
}
+ std::cout<<"\n\nShutting down echo server"<<std::endl;
+
return 0;
}