implemented base class for...
Stefan Schuermans authored 13 years ago
|
1) /* Blinker
2) Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3) Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4) a blinkenarea.org project */
5)
6) #include <set>
7) #include <sys/select.h>
8)
9) #include "Io.h"
10) #include "Time.h"
11)
12) namespace Blinker {
13)
14) /**
15) * @brief wait for I/O events
16) * @param[in] read I/O objects to check for readability
17) * @param[out] read I/O objects that are readable
18) * @param[in] write I/O objects to check for writability
19) * @param[out] write I/O objects that are writable
20) * @param[in] timeout maximum time to wait
21) */
22) void Io::wait(Set &read, Set &write, const Time &timeout)
23) {
24) // get maximum file descriptor, read set and write set
25) int max = 0;
26) fd_set fd_rd;
27) FD_ZERO(&fd_rd);
28) for (Set::const_iterator it = read.begin(); it != read.end(); ++it) {
29) if ((*it)->m_fd > max)
30) max = (*it)->m_fd;
31) FD_SET((*it)->m_fd, &fd_rd);
32) }
33) fd_set fd_wr;
34) FD_ZERO(&fd_wr);
35) for (Set::const_iterator it = write.begin(); it != write.end(); ++it) {
36) if ((*it)->m_fd > max)
37) max = (*it)->m_fd;
38) FD_SET((*it)->m_fd, &fd_wr);
39) }
40)
41) // get timeout
42) struct timeval to;
|