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 <condition_variable>
5
6namespace srs
7{
8 struct Status
9 {
10 std::atomic<bool> is_configured = false;
11 std::atomic<bool> is_acq_on = false;
12 std::atomic<bool> is_reading = false;
13 std::atomic<bool> is_acq_off = false;
14 std::atomic<bool> is_on_exit = false;
15 // std::atomic<bool> is_already_exit = false;
16 std::condition_variable status_change;
17
18 auto wait_for_status(auto&& condition, std::chrono::seconds time_duration = common::DEFAULT_STATUS_WAITING_TIME_SECONDS)
19 -> bool
20 {
21 using namespace std::string_literals;
22 auto mutex = std::mutex{};
23 while (not condition(*this))
24 {
25 auto lock = std::unique_lock<std::mutex>{ mutex };
26 auto res = status_change.wait_for(lock, time_duration);
27 if (res == std::cv_status::timeout)
28 {
29 return false;
30 }
31 }
32 return true;
33 }
34 };
35
36}; // namespace srs
constexpr auto DEFAULT_STATUS_WAITING_TIME_SECONDS
std::condition_variable status_change
Definition AppStatus.hpp:16
std::atomic< bool > is_reading
Definition AppStatus.hpp:12
auto wait_for_status(auto &&condition, std::chrono::seconds time_duration=common::DEFAULT_STATUS_WAITING_TIME_SECONDS) -> bool
Definition AppStatus.hpp:18
std::atomic< bool > is_on_exit
Definition AppStatus.hpp:14
std::atomic< bool > is_configured
Definition AppStatus.hpp:10
std::atomic< bool > is_acq_off
Definition AppStatus.hpp:13
std::atomic< bool > is_acq_on
Definition AppStatus.hpp:11