Remove dynamic exceptions
[anna.git] / include / anna / timex / Clock.hpp
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_Clock_hpp
10 #define anna_timex_Clock_hpp
11
12 #include <anna/timex/TimeEvent.hpp>
13
14 namespace anna {
15
16 namespace timex {
17
18 /**
19    Clase base para los relojes. Se activa de forma periodica cada #getTimeout milisegundos.
20
21    @see Timer
22 */
23 class Clock : public TimeEvent {
24 public:
25   /**
26      Constructor
27
28      @param name Nombre logico de este reloj.
29      @param timeout Periodo de activacion indicado en milisegundos.
30   */
31   Clock(const char* name, const Millisecond & timeout);
32
33   /**
34      Devuelve una cadena con la informacion referente a este reloj.
35      \return Una cadena con la informacion referenta a este reloj.
36   */
37   std::string asString() const
38   {
39     std::string msg("Clock { ");
40     msg += TimeEvent::asString();
41     msg += " | Name: ";
42     msg += a_name;
43     return msg += " }";
44   }
45
46   /**
47      Metodo a reimplementar para establecer las acciones que se ejecutaran cada vez
48      que expire el tiempo asociado al reloj.
49
50      \return \em true si el reloj desea continuar recibiendo los pulsos periodicamente o
51      \em false en otro caso.
52   */
53   virtual bool tick() noexcept(false) = 0;
54
55 private:
56   std::string a_name;
57
58   void expire(Engine* timeController) noexcept(false);
59 };
60
61 }
62 }
63
64 #endif
65
66