From c37d7083a0d8c66ba0c3b7e65b01066716361730 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Mon, 9 Nov 2020 19:55:49 +0200 Subject: [PATCH] Use timeout exceptions --- SDK/CPP/private/pipeline_impl.cpp | 4 +++- SDK/CPP/private/pipeline_impl.hpp | 2 +- SDK/CPP/public/include/voltu/pipeline.hpp | 2 +- SDK/CPP/public/include/voltu/voltu.hpp | 2 +- SDK/CPP/public/samples/fusion_evaluator/main.cpp | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/SDK/CPP/private/pipeline_impl.cpp b/SDK/CPP/private/pipeline_impl.cpp index cdc52fce3..7fbbc5131 100644 --- a/SDK/CPP/private/pipeline_impl.cpp +++ b/SDK/CPP/private/pipeline_impl.cpp @@ -42,10 +42,12 @@ void PipelineImpl::submit(const voltu::FramePtr &frame) } } -bool PipelineImpl::waitCompletion(int timeout) +bool PipelineImpl::waitCompletion(int timeout, bool except) { int count = timeout / 5; while (!ready_ && --count >= 0) std::this_thread::sleep_for(std::chrono::milliseconds(5)); + + if (!ready_) throw voltu::exceptions::Timeout(); return ready_; } diff --git a/SDK/CPP/private/pipeline_impl.hpp b/SDK/CPP/private/pipeline_impl.hpp index 98fe41c90..3413f067a 100644 --- a/SDK/CPP/private/pipeline_impl.hpp +++ b/SDK/CPP/private/pipeline_impl.hpp @@ -16,7 +16,7 @@ public: void submit(const voltu::FramePtr &frame) override; - bool waitCompletion(int timeout) override; + bool waitCompletion(int timeout, bool except) override; voltu::OperatorPtr appendOperator(voltu::OperatorId id) override; diff --git a/SDK/CPP/public/include/voltu/pipeline.hpp b/SDK/CPP/public/include/voltu/pipeline.hpp index f8a201bac..4e2c4ee89 100644 --- a/SDK/CPP/public/include/voltu/pipeline.hpp +++ b/SDK/CPP/public/include/voltu/pipeline.hpp @@ -64,7 +64,7 @@ public: * @param timeout Millisecond timeout, or 0 for non-blocking check. * @return True if completed */ - PY_API virtual bool waitCompletion(int timeout) = 0; + PY_API virtual bool waitCompletion(int timeout, bool except=false) = 0; /** * @brief Add an operator to this pipeline. diff --git a/SDK/CPP/public/include/voltu/voltu.hpp b/SDK/CPP/public/include/voltu/voltu.hpp index d3e1413b4..c59518dcf 100644 --- a/SDK/CPP/public/include/voltu/voltu.hpp +++ b/SDK/CPP/public/include/voltu/voltu.hpp @@ -8,7 +8,7 @@ // Bump these for each release #define VOLTU_VERSION_MAJOR 0 // For API incompatible changes -#define VOLTU_VERSION_MINOR 3 // For binary compatibility and extensions +#define VOLTU_VERSION_MINOR 4 // For binary compatibility and extensions #define VOLTU_VERSION_PATCH 0 // Binary compatible internal fixes #define VOLTU_VERSION ((VOLTU_VERSION_MAJOR*10000) + (VOLTU_VERSION_MINOR*100) + VOLTU_VERSION_PATCH) diff --git a/SDK/CPP/public/samples/fusion_evaluator/main.cpp b/SDK/CPP/public/samples/fusion_evaluator/main.cpp index 85abd616a..b56ab129b 100644 --- a/SDK/CPP/public/samples/fusion_evaluator/main.cpp +++ b/SDK/CPP/public/samples/fusion_evaluator/main.cpp @@ -91,7 +91,7 @@ int main(int argc, char **argv) for (int i=0; i<frameno; ++i) { - room->waitNextFrame(5000); + room->waitNextFrame(5000, true); room->getFrame(); } auto frame = room->getFrame(); @@ -108,7 +108,7 @@ int main(int argc, char **argv) op1->property("mls_iterations")->setInt(iters); pipe->submit(frame); - pipe->waitCompletion(3000); + pipe->waitCompletion(3000, true); auto imgset = frame->getImageSet(display_channel); -- GitLab