SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
PeriodicTimer.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_comm_PeriodicTimer_h
7 #define swcdb_core_comm_PeriodicTimer_h
8 
9 
12 
13 
14 namespace SWC { namespace Comm {
15 
16 class PeriodicTimer final {
17  public:
18  typedef const std::function<void()> Call_t;
19 
21  Call_t&& call, const IoContextPtr& ioctx);
22 
24  PeriodicTimer(const PeriodicTimer&) = delete;
27 
28  ~PeriodicTimer() noexcept;
29 
30  void cancel();
31 
32  private:
33 
34  void schedule();
35 
36  const Config::Property::Value_int32_g::Ptr m_ms;
37  const Call_t m_call;
38  Core::MutexAtomic m_mutex;
39  asio::high_resolution_timer m_timer;
40 };
41 
42 
43 
44 class PeriodicTimers final
45  : private Core::Vector<std::unique_ptr<PeriodicTimer>> {
46  public:
47 
48  PeriodicTimers() noexcept: m_mutex() { }
49 
50  ~PeriodicTimers() noexcept;
51 
52  void stop();
53 
54  void set(const Config::Property::Value_int32_g::Ptr ms,
55  PeriodicTimer::Call_t&& call,
56  const IoContextPtr& ioctx);
57 
58  private:
59  Core::MutexSptd m_mutex;
60 };
61 
62 
63 }} // namespace SWC::Comm
64 
65 
66 
67 #endif // swcdb_core_comm_PeriodicTimer_h
SWC::Comm::PeriodicTimer::m_call
const Call_t m_call
Definition: PeriodicTimer.h:37
SWC::Comm::PeriodicTimer::operator=
PeriodicTimer & operator=(const PeriodicTimer &)=delete
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::Comm::PeriodicTimers
Definition: PeriodicTimer.h:45
SWC::Comm::PeriodicTimer::~PeriodicTimer
~PeriodicTimer() noexcept
Definition: PeriodicTimer.cc:19
SWC::Comm::PeriodicTimers::PeriodicTimers
PeriodicTimers() noexcept
Definition: PeriodicTimer.h:48
SWC::Comm::PeriodicTimer::Call_t
const std::function< void()> Call_t
Definition: PeriodicTimer.h:18
SWC::Comm::PeriodicTimer::PeriodicTimer
PeriodicTimer(PeriodicTimer &&)=delete
SWC::Comm::PeriodicTimer::m_mutex
Core::MutexAtomic m_mutex
Definition: PeriodicTimer.h:38
Settings.h
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::PeriodicTimer::m_ms
const Config::Property::Value_int32_g::Ptr m_ms
Definition: PeriodicTimer.h:36
asio_wrap.h
set
void set(uint64_t cmd=0, uint32_t timeout=0) noexcept
Definition: Header.h:33
SWC::Comm::PeriodicTimer::schedule
void schedule()
Definition: PeriodicTimer.cc:23
SWC::Comm::PeriodicTimer::m_timer
asio::high_resolution_timer m_timer
Definition: PeriodicTimer.h:39
SWC::Comm::PeriodicTimer::cancel
void cancel()
Definition: PeriodicTimer.cc:40
SWC::Comm::PeriodicTimer::PeriodicTimer
PeriodicTimer(const Config::Property::Value_int32_g::Ptr cfg_ms, Call_t &&call, const IoContextPtr &ioctx)
Definition: PeriodicTimer.cc:10
SWC::Comm::PeriodicTimer::operator=
PeriodicTimer & operator=(PeriodicTimer &&)=delete
SWC::Comm::PeriodicTimer::PeriodicTimer
PeriodicTimer(const PeriodicTimer &)=delete
SWC::Comm::PeriodicTimer
Definition: PeriodicTimer.h:16
SWC::Config::Property::Value_int32_g
Definition: Property.h:586