[Python-checkins] python/dist/src/Lib asyncore.py,1.32,1.33

jhylton@users.sourceforge.net jhylton@users.sourceforge.net
Sat, 07 Sep 2002 17:14:57 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv3103

Modified Files:
	asyncore.py 
Log Message:
A little refactoring.

Add read(), write(), and readwrite() helper functions to shorten poll
functions.  Use get() instead of try/except KeyError for lookup.  
XXX How could the lookup ever fail?

Remove module-level DEBUG flag.

Use iteritems() instead of items() when walking the socket map.

Reformat the functions I touched so that are consistently Pythonic.



Index: asyncore.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/asyncore.py,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -d -r1.32 -r1.33
*** asyncore.py	4 Apr 2002 22:55:58 -0000	1.32
--- asyncore.py	8 Sep 2002 00:14:54 -0000	1.33
***************
*** 61,68 ****
      socket_map = {}
  
! class ExitNow (exceptions.Exception):
      pass
  
! DEBUG = 0
  
  def poll (timeout=0.0, map=None):
--- 61,93 ----
      socket_map = {}
  
! class ExitNow(exceptions.Exception):
      pass
  
! def read(obj):
!     try:
!         obj.handle_read_event()
!     except ExitNow:
!         raise
!     except:
!         obj.handle_error()
! 
! def write(obj):
!     try:
!         obj.handle_write_event()
!     except ExitNow:
!         raise
!     except:
!         obj.handle_error()
! 
! def readwrite(obj, flags):
!     try:
!         if flags & select.POLLIN:
!             obj.handle_read_event()
!         if flags & select.POLLOUT:
!             obj.handle_write_event()
!     except ExitNow:
!         raise
!     except:
!         obj.handle_error()
  
  def poll (timeout=0.0, map=None):
***************
*** 71,114 ****
      if map:
          r = []; w = []; e = []
!         for fd, obj in map.items():
              if obj.readable():
!                 r.append (fd)
              if obj.writable():
!                 w.append (fd)
          try:
!             r,w,e = select.select (r,w,e, timeout)
          except select.error, err:
              if err[0] != EINTR:
                  raise
-             r = []; w = []; e = []
- 
-         if DEBUG:
-             print r,w,e
  
          for fd in r:
!             try:
!                 obj = map[fd]
!             except KeyError:
                  continue
! 
!             try:
!                 obj.handle_read_event()
!             except ExitNow:
!                 raise ExitNow
!             except:
!                 obj.handle_error()
  
          for fd in w:
!             try:
!                 obj = map[fd]
!             except KeyError:
                  continue
! 
!             try:
!                 obj.handle_write_event()
!             except ExitNow:
!                 raise ExitNow
!             except:
!                 obj.handle_error()
  
  def poll2 (timeout=0.0, map=None):
--- 96,121 ----
      if map:
          r = []; w = []; e = []
!         for fd, obj in map.iteritems():
              if obj.readable():
!                 r.append(fd)
              if obj.writable():
!                 w.append(fd)
          try:
!             r, w, e = select.select(r, w, e, timeout)
          except select.error, err:
              if err[0] != EINTR:
                  raise
  
          for fd in r:
!             obj = map.get(fd)
!             if obj is None:
                  continue
!             read(obj)
  
          for fd in w:
!             obj = map.get(fd)
!             if obj is None:
                  continue
!             write(obj)
  
  def poll2 (timeout=0.0, map=None):
***************
*** 121,125 ****
      if map:
          l = []
!         for fd, obj in map.items():
              flags = 0
              if obj.readable():
--- 128,132 ----
      if map:
          l = []
!         for fd, obj in map.iteritems():
              flags = 0
              if obj.readable():
***************
*** 131,148 ****
          r = poll.poll (l, timeout)
          for fd, flags in r:
!             try:
!                 obj = map[fd]
!             except KeyError:
                  continue
! 
!             try:
!                 if (flags  & poll.POLLIN):
!                     obj.handle_read_event()
!                 if (flags & poll.POLLOUT):
!                     obj.handle_write_event()
!             except ExitNow:
!                 raise ExitNow
!             except:
!                 obj.handle_error()
  
  def poll3 (timeout=0.0, map=None):
--- 138,145 ----
          r = poll.poll (l, timeout)
          for fd, flags in r:
!             obj = map.get(fd)
!             if obj is None:
                  continue
!             readwrite(obj, flags)
  
  def poll3 (timeout=0.0, map=None):
***************
*** 155,159 ****
      pollster = select.poll()
      if map:
!         for fd, obj in map.items():
              flags = 0
              if obj.readable():
--- 152,156 ----
      pollster = select.poll()
      if map:
!         for fd, obj in map.iteritems():
              flags = 0
              if obj.readable():
***************
*** 170,192 ****
              r = []
          for fd, flags in r:
!             try:
!                 obj = map[fd]
!             except KeyError:
                  continue
! 
!             try:
!                 if (flags  & select.POLLIN):
!                     obj.handle_read_event()
!                 if (flags & select.POLLOUT):
!                     obj.handle_write_event()
!             except ExitNow:
!                 raise ExitNow
!             except:
!                 obj.handle_error()
  
  def loop (timeout=30.0, use_poll=0, map=None):
- 
      if map is None:
!         map=socket_map
  
      if use_poll:
--- 167,178 ----
              r = []
          for fd, flags in r:
!             obj = map.get(fd)
!             if obj is None:
                  continue
!             readwrite(obj, flags)
  
  def loop (timeout=30.0, use_poll=0, map=None):
      if map is None:
!         map = socket_map
  
      if use_poll: