[IOMultiplexerV2] added CIOTimer class to c++ interface && added some features to...
[NextIRCd.git] / src / IOHandler++ / IOTimer.h
1 /* IOTimer.h - IOMultiplexer v2
2  * Copyright (C) 2014  Philipp Kreil (pk910)
3  * 
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  * 
14  * You should have received a copy of the GNU General Public License 
15  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
16  */
17 #ifndef _IOTimer_cpp_h
18 #define _IOTimer_cpp_h
19
20 #include <iostream>
21 #include <string>
22 #include <sys/time.h>
23
24 struct IOTimerDescriptor;
25
26 class CIOTimer {
27 public:
28         CIOTimer();
29         ~CIOTimer();
30         
31         void setTimeout(timeval timeout);
32         timeval getTimeout();
33         void setRelativeTimeout(timeval timeout);
34         void setRelativeTimeout(timeval timeout, int auto_reload);
35         timeval getRelativeTimeout();
36         void setRelativeTimeoutSeconds(double seconds);
37         void setRelativeTimeoutSeconds(double seconds, int auto_reload);
38         double getRelativeTimeoutSeconds();
39         
40         void setAutoReload(timeval timeout);
41         void clearAutoReload();
42         int getAutoReloadState();
43         timeval getAutoReloadTime();
44         
45         void setActive(int active);
46         int getActive();
47         
48         
49         void timer_callback();
50 protected:
51         virtual void timeout() {};
52         
53 private:
54         IOTimerDescriptor *iotimer;
55 };
56
57 #endif