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
30
namespace
presage::smartspectra::grpc_bindings {
31
template
<
typename
TReactor>
32
class
ReactorWithWaitUntilDone
:
public
TReactor {
33
public
:
34
void
WaitUntilDone();
35
void
OnDone()
override
;
36
void
OnCancel()
override
;
37
38
private
:
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
presage::smartspectra::grpc_bindings::ReactorWithWaitUntilDone
Definition
reactor_with_wait_until_done.hpp:32