danicoin/tests/UnitTests/EventWaiter.cpp

25 lines
704 B
C++
Raw Normal View History

// Copyright (c) 2011-2016 The Cryptonote developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
2014-06-25 17:21:42 +00:00
#include "EventWaiter.h"
2014-06-25 17:21:42 +00:00
void EventWaiter::notify() {
std::unique_lock<std::mutex> lck(mtx);
available = true;
cv.notify_all();
2014-06-25 17:21:42 +00:00
}
void EventWaiter::wait() {
std::unique_lock<std::mutex> lck(mtx);
cv.wait(lck, [this]() { return available; });
available = false;
2014-06-25 17:21:42 +00:00
}
bool EventWaiter::wait_for(const std::chrono::milliseconds& rel_time) {
std::unique_lock<std::mutex> lck(mtx);
auto result = cv.wait_for(lck, rel_time, [this]() { return available; });
available = false;
return result;
2015-05-27 12:08:46 +00:00
}