[Twisted-Python] Re: [Twisted-commits] CVS: Twisted/twisted/internet main.py,1.51,1.52 poll.py,1.4,1.5

Tommi Virtanen tv at twistedmatrix.com
Sun Jan 6 12:22:13 EST 2002


Itamar Shtull-Trauring <itamarst at twistedmatrix.com> writes:

> 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);}




More information about the Twisted-Python mailing list