1 |
Author: zmedico |
2 |
Date: 2008-07-04 21:27:10 +0000 (Fri, 04 Jul 2008) |
3 |
New Revision: 10930 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Add a PollConstants class to serve as a layer of indirection for accessing |
9 |
select.POLL* attributes which do not exist on interix. Thanks to grobian |
10 |
for reporting. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/_emerge/__init__.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-04 20:57:24 UTC (rev 10929) |
16 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-04 21:27:10 UTC (rev 10930) |
17 |
@@ -1575,7 +1575,7 @@ |
18 |
os.close(slave_fd) |
19 |
files.process = os.fdopen(master_fd, 'r') |
20 |
self.reg_id = self.scheduler.register(files.process.fileno(), |
21 |
- select.POLLIN, self._output_handler) |
22 |
+ PollConstants.POLLIN, self._output_handler) |
23 |
self.registered = True |
24 |
|
25 |
def _output_handler(self, fd, event): |
26 |
@@ -1974,7 +1974,7 @@ |
27 |
os.close(slave_fd) |
28 |
files.ebuild = os.fdopen(master_fd, 'r') |
29 |
self.reg_id = self.scheduler.register(files.ebuild.fileno(), |
30 |
- select.POLLIN, output_handler) |
31 |
+ PollConstants.POLLIN, output_handler) |
32 |
self.registered = True |
33 |
|
34 |
def _output_handler(self, fd, event): |
35 |
@@ -7019,9 +7019,23 @@ |
36 |
(self.blocks - self.blocks_satisfied)) |
37 |
return "".join(myoutput) |
38 |
|
39 |
-class PollSelectAdapter(object): |
40 |
+class PollConstants(object): |
41 |
|
42 |
""" |
43 |
+ Provides POLL* constants that are equivalent to those from the |
44 |
+ select module, for use by PollSelectAdapter. |
45 |
+ """ |
46 |
+ |
47 |
+ names = ("POLLIN", "POLLPRI", "POLLOUT", "POLLERR", "POLLHUP", "POLLNVAL") |
48 |
+ v = 1 |
49 |
+ for k in names: |
50 |
+ locals()[k] = getattr(select, k, v) |
51 |
+ v *= 2 |
52 |
+ del k, v |
53 |
+ |
54 |
+class PollSelectAdapter(PollConstants): |
55 |
+ |
56 |
+ """ |
57 |
Use select to emulate a poll object, for |
58 |
systems that don't support poll(). |
59 |
""" |
60 |
@@ -7032,14 +7046,15 @@ |
61 |
|
62 |
def register(self, fd, *args): |
63 |
""" |
64 |
- Only select.POLLIN is currently supported! |
65 |
+ Only POLLIN is currently supported! |
66 |
""" |
67 |
if len(args) > 1: |
68 |
raise TypeError( |
69 |
"register expected at most 2 arguments, got " + \ |
70 |
repr(1 + len(args))) |
71 |
|
72 |
- eventmask = select.POLLIN | select.POLLPRI | select.POLLOUT |
73 |
+ eventmask = PollConstants.POLLIN | \ |
74 |
+ PollConstants.POLLPRI | PollConstants.POLLOUT |
75 |
if args: |
76 |
eventmask = args[0] |
77 |
|
78 |
@@ -7071,7 +7086,7 @@ |
79 |
select_events = select.select(*select_args) |
80 |
poll_events = [] |
81 |
for fd in select_events[0]: |
82 |
- poll_events.append((fd, select.POLLIN)) |
83 |
+ poll_events.append((fd, PollConstants.POLLIN)) |
84 |
return poll_events |
85 |
|
86 |
class SequentialTaskQueue(SlotObject): |
87 |
|
88 |
-- |
89 |
gentoo-commits@l.g.o mailing list |