|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #include <poll.h>
10: #include <unistd.h>
11: #include "Poller.h"
12: #include "Platform/SystemException.h"
13:
14: namespace TrueCrypt
15: {
16: Poller::Poller (int fileDescriptor1, int fileDescriptor2, int fileDescriptor3, int fileDescriptor4)
17: {
18: FileDescriptors.push_back (fileDescriptor1);
19:
20: if (fileDescriptor2 != -1)
21: FileDescriptors.push_back (fileDescriptor2);
22:
23: if (fileDescriptor3 != -1)
24: FileDescriptors.push_back (fileDescriptor3);
25:
26: if (fileDescriptor4 != -1)
27: FileDescriptors.push_back (fileDescriptor4);
28: }
29:
30: list <int> Poller::WaitForData (int timeOut) const
31: {
32: vector <pollfd> pfd (FileDescriptors.size());
33: for (int i = 0; i < FileDescriptors.size(); i++)
34: {
35: pfd[i].fd = FileDescriptors[i];
36: pfd[i].events = POLLIN;
37: }
38:
39: list <int> descList;
40:
41: int pollRes = poll (&pfd[0], pfd.size(), timeOut);
42:
43: if (pollRes == 0 && timeOut != -1)
44: throw TimeOut (SRC_POS);
45:
46: if (pollRes > 0)
47: {
48: for (int i = 0; i < pfd.size(); i++)
49: {
50: if (pfd[i].revents & POLLIN)
51: descList.push_back (pfd[i].fd);
52: }
53: }
54:
55: return descList;
56: }
57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.