SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
StateSynchronization.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_core_StateSynchronization_h
7 #define swcdb_core_StateSynchronization_h
8 
9 
10 #include "swcdb/core/Compat.h"
11 
12 
13 namespace SWC { namespace Core {
14 
15 
17  public:
18 
20  StateSynchronization() noexcept : m_mutex(), m_cv(), m_ack(false) { }
21 
22  ~StateSynchronization() noexcept { }
23 
25  void wait() {
26  Core::UniqueLock lock_wait(m_mutex);
27  m_cv.wait(lock_wait, [this] { return m_ack; });
28  }
29 
31  void acknowledge() noexcept {
33  m_ack = true;
34  m_cv.notify_all();
35  }
36 
38  void reset() noexcept {
39  m_ack = false;
40  }
41 
42  private:
43  std::mutex m_mutex;
44  std::condition_variable m_cv;
45  bool m_ack;
46 
47 };
48 
49 
50 
51 }}
52 
53 
54 #endif // swcdb_core_StateSynchronization_h
SWC::Core::StateSynchronization::m_mutex
std::mutex m_mutex
Definition: StateSynchronization.h:43
SWC::Core::StateSynchronization::m_ack
bool m_ack
Definition: StateSynchronization.h:45
SWC::Core::UniqueLock
Definition: MutexLock.h:68
SWC::Core::ScopedLock
Definition: MutexLock.h:41
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Core::StateSynchronization::wait
SWC_CAN_INLINE void wait()
Definition: StateSynchronization.h:25
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
Compat.h
SWC::Core::StateSynchronization::StateSynchronization
SWC_CAN_INLINE StateSynchronization() noexcept
Definition: StateSynchronization.h:20
SWC::Core::StateSynchronization::reset
SWC_CAN_INLINE void reset() noexcept
Definition: StateSynchronization.h:38
SWC::Core::StateSynchronization
Definition: StateSynchronization.h:16
SWC::Core::StateSynchronization::m_cv
std::condition_variable m_cv
Definition: StateSynchronization.h:44
SWC::Core::StateSynchronization::acknowledge
SWC_CAN_INLINE void acknowledge() noexcept
Definition: StateSynchronization.h:31
SWC::Core::StateSynchronization::~StateSynchronization
~StateSynchronization() noexcept
Definition: StateSynchronization.h:22