[Twisted-Python] Re: [Twisted-commits] CVS: Twisted/twisted/internet main.py,1.51,1.52 poll.py,1.4,1.5
Itamar Shtull-Trauring
Update of /cvs/Twisted/twisted/internet In directory zaibach:/tmp/cvs-serv23038
Modified Files: main.py poll.py Log Message: made removing selectables at shutdown more generic so that poll-based event loop shutdown will work
diff -b -u -d -r1.51 -r1.52 --- main.py 25 Dec 2001 13:22:13 -0000 1.51 +++ main.py 6 Jan 2002 12:22:10 -0000 1.52 @@ -242,11 +242,8 @@ log.msg('Select loop terminated.')
finally: - for reader in reads.keys(): - if reads.has_key(reader): - del reads[reader] - if writes.has_key(reader): - del writes[reader] + selectables = removeAll() + for reader in selectables: log.logOwner.own(reader) try: reader.connectionLost() @@ -297,6 +294,17 @@ if writes.has_key(writer): del writes[writer]
+def removeAll(): + """Remove all readers and writers, and return list of Selectables.""" + readers = reads.keys() + for reader in readers: + if reads.has_key(reader): + del reads[reader] + if writes.has_key(reader): + del writes[reader] + return readers + + class _Win32Waker(styles.Ephemeral): """I am a workaround for the lack of pipes on win32.
What if you have fd 42 that is only a writer, not a reader? That removeAll() won't process it. readers = uniq(reads.keys(), writes.keys()) ? This does not affect the poll as readers and writers are "united" there. -- tv@{{hq.yok.utu,havoc,gaeshido}.fi,{debian,wanderer}.org,stonesoft.com} double a,b=4,c;main(){for(;++a<2e6;c-=(b=-b)/a++);printf("%f\n",c);}
participants (1)
-
Tommi Virtanen