ANNA Suite  2020b
Multipurpose development suite for Telco applications
TimeEvent.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_timex_TimeEvent_hpp
10 #define anna_timex_TimeEvent_hpp
11 
13 #include <anna/config/defines.hpp>
15 
16 namespace anna {
17 
18 namespace timex {
19 
20 class Engine;
21 class TimeEventObserver;
22 
26 class TimeEvent {
27 public:
35 
41  virtual ~TimeEvent();
42 
47  Id getId() const { return a_id; }
48 
53  const Millisecond & getTimeout() const { return a_timeout; }
54 
61  const TimeEventObserver* getObserver() const { return a_observer; }
62 
69  void setId(const Id id) { a_id = id; }
70 
75  void setTimeout(const Millisecond & timeout) { a_timeout = timeout; }
76 
85  void setObserver(TimeEventObserver* observer) { a_observer = observer; }
86 
91  bool isActive() const { return (a_controller != NULL); }
92 
97  virtual std::string asString() const ;
98 
99 protected:
104  a_id(0),
105  a_timeout(0),
106  a_controller(NULL),
107  a_observer(NULL)
108  {;}
109 
116  TimeEvent(const Id id, const Millisecond & timeout) :
117  a_id(id),
118  a_timeout(timeout),
119  a_controller(NULL),
120  a_observer(NULL) {}
121 
130  virtual void expire(Engine* timeController) noexcept(false) = 0;
131 
140  virtual void stop() noexcept(false) {;}
141 
142 private:
143  Id a_id;
144  Millisecond a_timeout;
145  Engine* a_controller;
146  TimeEventObserver* a_observer;
147 
148  friend class Engine;
149 };
150 
151 }
152 }
153 
154 #endif
155 
156 
anna::ptrnumber Id
Definition: TimeEvent.hpp:34
Definition: Millisecond.hpp:24
virtual void stop() noexcept(false)
Definition: TimeEvent.hpp:140
void setId(const Id id)
Definition: TimeEvent.hpp:69
Id getId() const
Definition: TimeEvent.hpp:47
intptr_t ptrnumber
Definition: defines.hpp:111
virtual void expire(Engine *timeController) noexcept(false)=0
void setObserver(TimeEventObserver *observer)
Definition: TimeEvent.hpp:85
TimeEvent()
Definition: TimeEvent.hpp:103
virtual std::string asString() const
Definition: TimeEvent.hpp:26
bool isActive() const
Definition: TimeEvent.hpp:91
void setTimeout(const Millisecond &timeout)
Definition: TimeEvent.hpp:75
const TimeEventObserver * getObserver() const
Definition: TimeEvent.hpp:61
Definition: TimeEventObserver.hpp:33
Definition: app.hpp:12
Definition: Engine.hpp:62
TimeEvent(const Id id, const Millisecond &timeout)
Definition: TimeEvent.hpp:116
const Millisecond & getTimeout() const
Definition: TimeEvent.hpp:53