#include <iostream>
#include <csignal>
-using eventxx::dispatcher;
-
struct handler
{
- dispatcher& d;
+ eventxx::dispatcher& d;
int i;
- handler(dispatcher& d): d(d), i(0) {}
- void operator() (int signum, short event)
+ handler(eventxx::dispatcher& d): d(d), i(0) {}
+ void operator() (int signum, eventxx::type event)
{
+ std::cout << ++i << " interrupts, ";
if (i < 5) std::cout << "keep going...\n";
else
{
}
};
-void sighandler(int signum, short event, void* data)
+void timer_handler(int, short, void*)
{
- int& i = *static_cast< int* >(data);
- std::cout << ++i << " interrupts, ";
+ std::cout << "Press Ctrl-C 5 times to quit.\n";
}
int main()
{
- dispatcher d;
+ eventxx::dispatcher d;
handler h(d);
- eventxx::csignal sigev(SIGINT, sighandler, &h.i);
+ eventxx::ctimer t(timer_handler);
eventxx::signal< handler > e(SIGINT, h);
- d.add(sigev);
+ d.add(t, eventxx::time(1)); // 1 second
d.add(e);
d.dispatch();
return 0;