]> git.llucax.com Git - software/eventxx.git/blob - test/prio-test.cpp
cd6f73a6808bc4827b908a89b91a91439aec868d
[software/eventxx.git] / test / prio-test.cpp
1 #include <eventxx>
2 #include <iostream>
3 #include <csignal>
4
5 using eventxx::dispatcher;
6
7 #define OSASSERT(func, ...) if (func(__VA_ARGS__) == -1) { perror(#func "()"); exit(1); }
8
9 struct handler
10 {
11         dispatcher& d;
12         int fds[4];
13         handler(dispatcher& d): d(d)
14         {
15                 OSASSERT(pipe, fds);
16                 OSASSERT(pipe, fds+2);
17         }
18         void operator() (int fd, short event)
19         {
20                 char buf[7];
21                 OSASSERT(read, fd, buf, 7);
22                 std::cout << "Read from fd " << fd << ": " << buf << "\n";
23                 d.exit();
24         }
25 };
26
27 int main()
28 {
29         dispatcher d(2);
30         handler h(d);
31         OSASSERT(write, h.fds[1], "hola 1", 7);
32         OSASSERT(write, h.fds[3], "hola 2", 7);
33         eventxx::event< handler > e1(h.fds[0], EV_READ, h);
34         eventxx::event< handler > e2(h.fds[2], EV_READ, h);
35         d.add(e1, 1);
36         d.add(e2, 0);
37         d.dispatch();
38         return 0;
39 }
40