| Kea 3.0.2-git

threaded_test.cc
Go to the documentation of this file.
1// Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#include <config.h>
8
9#include <testutils/threaded_test.h>
10
11 namespace isc {
12 namespace test {
13
14 ThreadedTest::ThreadedTest()
15 : thread_(), condvar_(), ready_(false), stopping_(false),
16 stopped_(false) {
17}
18
19 void
20 ThreadedTest::doSignal(bool& flag) {
21 {
22 std::lock_guard<std::mutex> lock(mutex_);
23 flag = true;
24 }
25 condvar_.notify_one();
26}
27
28 void
29 ThreadedTest::signalReady() {
30 doSignal(ready_);
31}
32
33 void
34 ThreadedTest::signalStopping() {
35 doSignal(stopping_);
36}
37
38 void
39 ThreadedTest::signalStopped() {
40 doSignal(stopped_);
41}
42
43 void
44 ThreadedTest::doWait(bool& flag) {
45 std::unique_lock<std::mutex> lock(mutex_);
46 while (!flag) {
47 condvar_.wait(lock);
48 }
49}
50
51 void
52 ThreadedTest::waitReady() {
53 doWait(ready_);
54}
55
56 void
57 ThreadedTest::waitStopping() {
58 doWait(stopping_);
59}
60
61 void
62 ThreadedTest::waitStopped() {
63 doWait(stopped_);
64}
65
66 bool
67 ThreadedTest::isStopping() {
68 std::lock_guard<std::mutex> lock(mutex_);
69 return (stopping_);
70}
71
72} // end of namespace isc::test
73} // end of namespace isc
isc::test::ThreadedTest::doWait
void doWait(bool &flag)
Wait for a selected flag to be set.
Definition threaded_test.cc:44
isc::test::ThreadedTest::doSignal
void doSignal(bool &flag)
Sets selected flag to true and signals condition variable.
Definition threaded_test.cc:20
isc::test::ThreadedTest::thread_
boost::shared_ptr< std::thread > thread_
Pointer to server thread.
Definition threaded_test.h:66
isc::test::ThreadedTest::condvar_
std::condition_variable condvar_
Conditional variable for thread waits.
Definition threaded_test.h:72
isc::test::ThreadedTest::mutex_
std::mutex mutex_
Mutex used to synchronize threads.
Definition threaded_test.h:69
isc::test::ThreadedTest::ready_
bool ready_
Flag indicating that the thread is ready.
Definition threaded_test.h:75
isc::test::ThreadedTest::waitStopped
void waitStopped()
Wait for the thread to stop.
Definition threaded_test.cc:62
isc::test::ThreadedTest::stopped_
bool stopped_
Flag indicating that the thread is stopped.
Definition threaded_test.h:81
isc::test::ThreadedTest::ThreadedTest
ThreadedTest()
Constructor.
Definition threaded_test.cc:14
isc::test::ThreadedTest::waitStopping
void waitStopping()
Wait for the thread to be stopping.
Definition threaded_test.cc:57
isc::test::ThreadedTest::signalStopped
void signalStopped()
Signal that thread is stopped.
Definition threaded_test.cc:39
isc::test::ThreadedTest::stopping_
bool stopping_
Flag indicating that the thread is stopping.
Definition threaded_test.h:78
isc::test::ThreadedTest::isStopping
bool isStopping()
Checks if the thread is stopping.
Definition threaded_test.cc:67
isc::test::ThreadedTest::waitReady
void waitReady()
Wait for the thread to be ready.
Definition threaded_test.cc:52
isc::test::ThreadedTest::signalStopping
void signalStopping()
Signal that thread is stopping.
Definition threaded_test.cc:34
isc::test::ThreadedTest::signalReady
void signalReady()
Signal that thread is ready.
Definition threaded_test.cc:29
isc::test
Definition env_var_wrapper.cc:12
isc
Defines the logger used by the top-level component of kea-lfc.
Definition agent_parser.cc:148
threaded_test.h