-
Notifications
You must be signed in to change notification settings - Fork 0
/
ioevent.py
40 lines (36 loc) · 1.03 KB
/
ioevent.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# ioevent.py
from select import select
class IOHandler:
# Method to return a file descriptor
def fileno(self):
pass
# Reading
def readable(self):
return False
def handle_read(self):
pass
# Writing
def writable(self):
return False
def handle_write(self):
pass
class EventDispatcher:
def __init__(self):
self.handlers = set()
def register(self,handler):
self.handlers.add(handler)
print("Registering", handler)
def unregister(self,handler):
self.handlers.remove(handler)
print("Unregistering", handler)
def run(self,timeout=None):
while self.handlers:
readers = [h for h in self.handlers
if h.readable()]
writers = [h for h in self.handlers
if h.writable()]
rset,wset,e = select(readers,writers,[],timeout)
for r in rset:
r.handle_read()
for w in wset:
w.handle_write()