SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
reactor_with_wait_until_done.hpp
1
2// reactor_with_wait_until_done.hpp
3// Created by greg on 2/20/25.
4// Copyright (C) 2025 Presage Security, Inc.
5//
6// This program is free software; you can redistribute it and/or
7// modify it under the terms of the GNU Lesser General Public
8// License as published by the Free Software Foundation; either
9// version 3 of the License, or (at your option) any later version.
10//
11// This program is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14// Lesser General Public License for more details.
15//
16// You should have received a copy of the GNU Lesser General Public License
17// along with this program; if not, write to the Free Software Foundation,
18// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21// === standard library includes (if any) ===
22#include <mutex>
23#include <atomic>
24#include <condition_variable>
25// === third-party includes (if any) ===
26// === local includes (if any) ===
27
28#pragma once
29
30namespace presage::smartspectra::grpc_bindings {
31template<typename TReactor>
32class ReactorWithWaitUntilDone : public TReactor {
33public:
34 void WaitUntilDone();
35 void OnDone() override;
36 void OnCancel() override;
37
38private:
39 void HandleWaitingThreads();
40 std::mutex done_mutex;
41 std::condition_variable done_cv;
42 bool done = false;
43 std::atomic_int waiting_thread_count = 0;
44};
45
46
47
48}// namespace presage::smartspectra::grpc_bindings
Definition reactor_with_wait_until_done.hpp:32