Async 1.8.0
AsyncCppApplication.h
Go to the documentation of this file.
1
31#ifndef ASYNC_CPP_APPLICATION_INCLUDED
32#define ASYNC_CPP_APPLICATION_INCLUDED
33
34
35/****************************************************************************
36 *
37 * System Includes
38 *
39 ****************************************************************************/
40
41#include <sys/types.h>
42#include <sys/select.h>
43#include <sys/time.h>
44#include <signal.h>
45#include <sigc++/sigc++.h>
46
47#include <map>
48#include <utility>
49
50
51/****************************************************************************
52 *
53 * Project Includes
54 *
55 ****************************************************************************/
56
57#include <AsyncApplication.h>
58
59
60/****************************************************************************
61 *
62 * Local Includes
63 *
64 ****************************************************************************/
65
66
67
68/****************************************************************************
69 *
70 * Forward declarations
71 *
72 ****************************************************************************/
73
74
75
76/****************************************************************************
77 *
78 * Namespace
79 *
80 ****************************************************************************/
81
82namespace Async
83{
84
85/****************************************************************************
86 *
87 * Defines & typedefs
88 *
89 ****************************************************************************/
90
91/*
92 *----------------------------------------------------------------------------
93 * Macro:
94 * Purpose:
95 * Input:
96 * Output:
97 * Author:
98 * Created:
99 * Remarks:
100 * Bugs:
101 *----------------------------------------------------------------------------
102 */
103
104
105/*
106 *----------------------------------------------------------------------------
107 * Type:
108 * Purpose:
109 * Members:
110 * Input:
111 * Output:
112 * Author:
113 * Created:
114 * Remarks:
115 *----------------------------------------------------------------------------
116 */
117
118
119/****************************************************************************
120 *
121 * Exported Global Variables
122 *
123 ****************************************************************************/
124
125
126
127/****************************************************************************
128 *
129 * Class definitions
130 *
131 ****************************************************************************/
132
137{
138 public:
143
148
153 void catchUnixSignal(int signum);
154
159 void uncatchUnixSignal(int signum);
160
168 void exec(void);
169
175 void quit(void);
176
185 sigc::signal<void, int> unixSignalCaught;
186
187 protected:
188
189 private:
190 struct lttimespec
191 {
192 bool operator()(const struct timespec& t1, const struct timespec& t2) const
193 {
194 return ((t1.tv_sec == t2.tv_sec)
195 ? (t1.tv_nsec < t2.tv_nsec)
196 : (t1.tv_sec < t2.tv_sec));
197 }
198 };
199 typedef std::map<int, FdWatch*> WatchMap;
200 typedef std::multimap<struct timespec, Timer *, lttimespec> TimerMap;
201 typedef std::map<int, struct sigaction> UnixSignalMap;
202
203 static int sighandler_pipe[2];
204
205 bool do_quit;
206 int max_desc;
207 fd_set rd_set;
208 fd_set wr_set;
209 WatchMap rd_watch_map;
210 WatchMap wr_watch_map;
211 TimerMap timer_map;
212 UnixSignalMap unix_signals;
213 int unix_signal_recv;
214 size_t unix_signal_recv_cnt;
215
216 static void unixSignalHandler(int signum);
217
218 void addFdWatch(FdWatch *fd_watch);
219 void delFdWatch(FdWatch *fd_watch);
220 void addTimer(Timer *timer);
221 void addTimerP(Timer *timer, const struct timespec& current);
222 void delTimer(Timer *timer);
223 DnsLookupWorker *newDnsLookupWorker(const DnsLookup& lookup);
224 void handleUnixSignal(void);
225
226}; /* class CppApplication */
227
228
229} /* namespace */
230
231#endif /* ASYNC_CPP_APPLICATION_INCLUDED */
232
233
234
235/*
236 * This file has not been truncated
237 */
238
The core class for writing asyncronous applications.
The base class for asynchronous applications.
An application class for writing non GUI applications.
void quit(void)
Exit the application main loop.
void uncatchUnixSignal(int signum)
Uncatch the specified UNIX signal.
void catchUnixSignal(int signum)
Catch the specified UNIX signal.
void exec(void)
Execute the application main loop.
~CppApplication(void)
Destructor.
CppApplication(void)
Constructor.
sigc::signal< void, int > unixSignalCaught
A signal that is emitted when a monitored UNIX signal is caught.
A class for performing asynchronous DNS lookups.
A class for watching file descriptors.
A class that produces timer events.
Definition AsyncTimer.h:117
Namespace for the asynchronous programming classes.