28. Example
Contrived event loop example
See t wisted event loop for real example
t wisted/interent/selectreactor.py
29. Example
rlist = []
wlist = []
callbacks = {}
pending = defaultdict(str)
def want_to_read(sock, cb):
callbacks[sock.fileno] = cb
global rlist
rlist = list(set(rlist + [sock.fileno]))
def want_to_write(sock, data):
pending[sock.fileno] += data
global wlist
wlist = list(set(wlist + [sock.fileno])))
30. Example
def event_loop():
while True:
reads, writes, _ = select(rlist, wlist, [])
for readfd in reads:
data = _do_actual_read(readfd)
callbacks[readfd](data)
for writefd in writes:
_do_actual_write(pending[writefd])