From 55f9635f8818614d1c0e5f2dbfc6eb3de18a7107 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Sun, 1 Sep 2024 13:24:09 +0200 Subject: Playing around with dependencies. I need to think about the potential async codec behaviours --- modules/async/.nix/derivation.nix | 3 ++- modules/async/c++/async.cpp | 16 ++++++++-------- modules/async/c++/async.hpp | 13 ++++++------- modules/codec-unit/c++/timer.hpp | 5 +++++ modules/codec/.nix/derivation.nix | 1 - modules/codec/SConstruct | 3 +-- modules/io/c++/io_unix.cpp | 9 ++++----- 7 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 modules/codec-unit/c++/timer.hpp diff --git a/modules/async/.nix/derivation.nix b/modules/async/.nix/derivation.nix index 3992ea1..96bf173 100644 --- a/modules/async/.nix/derivation.nix +++ b/modules/async/.nix/derivation.nix @@ -21,7 +21,8 @@ in stdenv.mkDerivation { ]; buildInputs = [ - forstio.core + forstio.core + forstio.codec ]; doCheck = true; diff --git a/modules/async/c++/async.cpp b/modules/async/c++/async.cpp index 742d43c..ea30cda 100644 --- a/modules/async/c++/async.cpp +++ b/modules/async/c++/async.cpp @@ -259,17 +259,17 @@ bool event_loop::turn() { return true; } -bool event_loop::wait(const std::chrono::steady_clock::duration &duration) { +bool event_loop::wait_for(uint64_t duration) { if (event_port_) { - event_port_->wait(duration); + event_port_->wait_for(duration); } return turn_loop(); } -bool event_loop::wait(const std::chrono::steady_clock::time_point &time_point) { +bool event_loop::wait_until(uint64_t time_point) { if (event_port_) { - event_port_->wait(time_point); + event_port_->wait_until(time_point); } return turn_loop(); @@ -306,12 +306,12 @@ wait_scope::~wait_scope() { loop_.leave_scope(); } void wait_scope::wait() { loop_.wait(); } -void wait_scope::wait(const std::chrono::steady_clock::duration &duration) { - loop_.wait(duration); +void wait_scope::wait_for(uint64_t duration) { + loop_.wait_for(duration); } -void wait_scope::wait(const std::chrono::steady_clock::time_point &time_point) { - loop_.wait(time_point); +void wait_scope::wait_until(uint64_t time_point) { + loop_.wait_until(time_point); } void wait_scope::poll() { loop_.poll(); } diff --git a/modules/async/c++/async.hpp b/modules/async/c++/async.hpp index bb56952..06fa4e3 100644 --- a/modules/async/c++/async.hpp +++ b/modules/async/c++/async.hpp @@ -3,7 +3,6 @@ #include #include -#include #include #include #include @@ -361,8 +360,8 @@ public: virtual void poll() = 0; virtual void wait() = 0; - virtual void wait(const std::chrono::steady_clock::duration &) = 0; - virtual void wait(const std::chrono::steady_clock::time_point &) = 0; + virtual void wait_for(uint64_t millisec) = 0; + virtual void wait_until(uint64_t millisec) = 0; virtual void wake() = 0; }; @@ -451,8 +450,8 @@ public: event_loop &operator=(event_loop &&) = default; bool wait(); - bool wait(const std::chrono::steady_clock::duration &); - bool wait(const std::chrono::steady_clock::time_point &); + bool wait_for(uint64_t millisec); + bool wait_until(uint64_t millisec); bool poll(); event_port *get_event_port(); @@ -473,8 +472,8 @@ public: ~wait_scope(); void wait(); - void wait(const std::chrono::steady_clock::duration &); - void wait(const std::chrono::steady_clock::time_point &); + void wait_for(uint64_t millisec); + void wait_until(uint64_t millisec); void poll(); }; diff --git a/modules/codec-unit/c++/timer.hpp b/modules/codec-unit/c++/timer.hpp new file mode 100644 index 0000000..30eed2f --- /dev/null +++ b/modules/codec-unit/c++/timer.hpp @@ -0,0 +1,5 @@ +#pragma once + +namespace saw { + +} diff --git a/modules/codec/.nix/derivation.nix b/modules/codec/.nix/derivation.nix index 288db6a..c17d575 100644 --- a/modules/codec/.nix/derivation.nix +++ b/modules/codec/.nix/derivation.nix @@ -19,7 +19,6 @@ in stdenv.mkDerivation { buildInputs = [ forstio.core - forstio.async ]; nativeBuildInputs = [ diff --git a/modules/codec/SConstruct b/modules/codec/SConstruct index 6bc28e3..c52aee1 100644 --- a/modules/codec/SConstruct +++ b/modules/codec/SConstruct @@ -55,8 +55,7 @@ env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=[ - 'forstio-core', - 'forstio-async' + 'forstio-core' ] ) env.__class__.add_source_files = add_kel_source_files diff --git a/modules/io/c++/io_unix.cpp b/modules/io/c++/io_unix.cpp index 2c6cf00..37af107 100644 --- a/modules/io/c++/io_unix.cpp +++ b/modules/io/c++/io_unix.cpp @@ -207,14 +207,13 @@ public: void wait() override { poll_impl(-1); } - void wait(const std::chrono::steady_clock::duration &duration) override { - poll_impl( - std::chrono::duration_cast(duration) - .count()); + void wait_for(uint64_t nanosec) override { + poll_impl(nanosec/1000); } void - wait(const std::chrono::steady_clock::time_point &time_point) override { + wait_until(uint64_t nanosec) override { auto now = std::chrono::steady_clock::now(); + std::chrono::steady_clock::time_point time_point = nanosec; if (time_point <= now) { poll(); } else { -- cgit v1.2.3