wakeup_signal.hpp
Go to the documentation of this file.
1 #ifndef BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
2 #define BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
3 
4 #include <chrono>
5 #include <mutex>
6 #include <condition_variable>
7 
8 namespace BT
9 {
10 
12 {
13 public:
15  bool waitFor(std::chrono::system_clock::duration tm)
16  {
17  std::unique_lock<std::mutex> lk(mutex_);
18  auto res = cv_.wait_for(lk, tm, [this]{
19  return ready_;
20  });
21  ready_ = false;
22  return res;
23  }
24 
25  void emitSignal()
26  {
27  {
28  std::lock_guard<std::mutex> lk(mutex_);
29  ready_ = true;
30  }
31  cv_.notify_all();
32  }
33 
34 private:
35 
37  std::condition_variable cv_;
38  bool ready_ = false;
39 };
40 
41 }
42 
43 #endif // BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
BT
Definition: ex01_wrap_legacy.cpp:29
BT::WakeUpSignal::emitSignal
void emitSignal()
Definition: wakeup_signal.hpp:25
minitrace::mutex
static pthread_mutex_t mutex
Definition: minitrace.cpp:61
BT::WakeUpSignal::cv_
std::condition_variable cv_
Definition: wakeup_signal.hpp:37
BT::WakeUpSignal::waitFor
bool waitFor(std::chrono::system_clock::duration tm)
Return true if the.
Definition: wakeup_signal.hpp:15
BT::WakeUpSignal::ready_
bool ready_
Definition: wakeup_signal.hpp:38
BT::WakeUpSignal
Definition: wakeup_signal.hpp:11
BT::WakeUpSignal::mutex_
std::mutex mutex_
Definition: wakeup_signal.hpp:36


behaviortree_cpp_v3
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Wed Jun 26 2024 02:51:19