SRS-control 0.1.4
Loading...
Searching...
No Matches
AppStatus.hpp
Go to the documentation of this file.
1#pragma once
2#include <atomic>
3#include <chrono>
4#include <condition_variable>
5#include <mutex>
7
8namespace srs
9{
10 struct Status
11 {
12 std::atomic<bool> is_configured = false;
13 std::atomic<bool> is_acq_on = false;
14 std::atomic<bool> is_reading = false;
15 std::atomic<bool> is_acq_off = false;
16 std::atomic<bool> is_on_exit = false;
17 // std::atomic<bool> is_already_exit = false;
18 std::condition_variable status_change;
19
20 auto wait_for_status(auto&& condition,
21 std::chrono::seconds time_duration = common::DEFAULT_STATUS_WAITING_TIME_SECONDS) -> bool
22 {
23 using namespace std::string_literals;
24 auto mutex = std::mutex{};
25 while (not condition(*this))
26 {
27 auto lock = std::unique_lock<std::mutex>{ mutex };
28 auto res = status_change.wait_for(lock, time_duration);
29 if (res == std::cv_status::timeout)
30 {
31 return false;
32 }
33 }
34 return true;
35 }
36 };
37
38}; // namespace srs
constexpr auto DEFAULT_STATUS_WAITING_TIME_SECONDS
std::condition_variable status_change
Definition AppStatus.hpp:18
std::atomic< bool > is_reading
Definition AppStatus.hpp:14
auto wait_for_status(auto &&condition, std::chrono::seconds time_duration=common::DEFAULT_STATUS_WAITING_TIME_SECONDS) -> bool
Definition AppStatus.hpp:20
std::atomic< bool > is_on_exit
Definition AppStatus.hpp:16
std::atomic< bool > is_configured
Definition AppStatus.hpp:12
std::atomic< bool > is_acq_off
Definition AppStatus.hpp:15
std::atomic< bool > is_acq_on
Definition AppStatus.hpp:13