scheduler-scoped-event-id.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
23 
24 namespace ndn {
25 namespace util {
26 namespace scheduler {
27 
28 #if NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
29 static_assert(std::is_nothrow_move_constructible<ScopedEventId>::value,
30  "ScopedEventId must be MoveConstructible with noexcept");
31 #endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
32 
34  : m_scheduler(&scheduler)
35 {
36 }
37 
39  : m_scheduler(other.m_scheduler)
40  , m_event(other.m_event)
41 {
42  other.release();
43 }
44 
47 {
48  if (m_event != event) {
49  m_scheduler->cancelEvent(m_event);
50  m_event = event;
51  }
52  return *this;
53 }
54 
56 {
57  m_scheduler->cancelEvent(m_event);
58 }
59 
60 void
62 {
63  m_scheduler->cancelEvent(m_event);
64 }
65 
66 void
68 {
69  m_event.reset();
70 }
71 
72 } // namespace scheduler
73 } // namespace util
74 } // namespace ndn
Copyright (c) 2013-2016 Regents of the University of California.
Definition: common.hpp:74
ScopedEventId(Scheduler &scheduler)
Construct ScopedEventId tied to the specified scheduler.
void reset()
clear this EventId
Definition: scheduler.hpp:93
void cancelEvent(const EventId &eventId)
Cancel a scheduled event.
Definition: scheduler.cpp:100
void release() noexcept
releases the event so that it won't be canceled when this ScopedEventId is destructed ...
Event that is automatically cancelled upon destruction.
void cancel()
cancels the event manually
ScopedEventId & operator=(const EventId &event)
assigns an event
Identifies a scheduled event.
Definition: scheduler.hpp:47