]> git.vomp.tv Git - vompclient-marten.git/blob - timers.h
New timers system. New program structure for handling buttons/timers
[vompclient-marten.git] / timers.h
1 /*\r
2     Copyright 2004-2005 Chris Tallon\r
3 \r
4     This file is part of VOMP.\r
5 \r
6     VOMP is free software; you can redistribute it and/or modify\r
7     it under the terms of the GNU General Public License as published by\r
8     the Free Software Foundation; either version 2 of the License, or\r
9     (at your option) any later version.\r
10 \r
11     VOMP is distributed in the hope that it will be useful,\r
12     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14     GNU General Public License for more details.\r
15 \r
16     You should have received a copy of the GNU General Public License\r
17     along with VOMP; if not, write to the Free Software\r
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19 */\r
20 \r
21 #ifndef TIMERS_H\r
22 #define TIMERS_H\r
23 \r
24 #include <stdio.h>\r
25 #include <pthread.h>\r
26 #include <list>\r
27 \r
28 #include "defines.h"\r
29 #include "log.h"\r
30 #include "thread.h"\r
31 #include "command.h"\r
32 #include "timerreceiver.h"\r
33 \r
34 class Timer\r
35 {\r
36   public:\r
37     TimerReceiver* client;\r
38     int clientReference;\r
39     struct timespec requestedTime;\r
40 };\r
41 \r
42 using namespace std;\r
43 //using namespace __gnu_cxx;\r
44 typedef list<Timer*> TimerList;\r
45 \r
46 class Timers : public Thread\r
47 {\r
48   public:\r
49     Timers();\r
50     virtual ~Timers();\r
51     static Timers* getInstance();\r
52 \r
53     int init();\r
54     int shutdown();\r
55 \r
56     // FIXME - ensure all objects that call settimer call cancel timer if they are being deleted\r
57 \r
58     int setTimer(TimerReceiver* client, int clientReference, time_t requestedTime);\r
59     int setTimer(TimerReceiver* client, int clientReference, timespec duration);\r
60     int cancelTimer(TimerReceiver* client, int clientReference);\r
61 \r
62     // Thread stuff\r
63     virtual void threadMethod();\r
64     virtual void threadPostStopCleanup();\r
65 \r
66   private:\r
67     static Timers* instance;\r
68     Log* logger;\r
69     bool initted;\r
70     TimerList timerList;\r
71     bool resetThreadFlag;\r
72 };\r
73 \r
74 #endif\r