Changeset 333
- Timestamp:
- 08/28/06 15:01:03 (2 years ago)
- Files:
-
- z3wingdbg/trunk/debugger/twistedmainloop.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
z3wingdbg/trunk/debugger/twistedmainloop.py
r332 r333 29 29 def startReading(self): 30 30 """Start waiting for read availability.""" 31 if getattr(self, 'reactor', None): 32 self.reactor.addReader(self) 31 self.reactor.addReader(self) 33 32 34 33 def stopReading(self): 35 34 """Stop waiting for read availability""" 36 if getattr(self, 'reactor', None): 37 self.reactor.removeReader(self) 35 self.reactor.removeReader(self) 38 36 39 37 def logPrefix(self): … … 46 44 47 45 def close(self): 46 del self.socket 48 47 self.stopReading() 49 for attr in ('socket', 'reactor', 'callback'):50 try:51 delattr(self, attr)52 except AttributeError:53 pass54 48 55 49 def doRead(self): 56 if not self. fileno:50 if not self.socket: 57 51 return 58 52 # Stop polling until the debug thread has dealt with us … … 63 57 def debugThreadCallback(self): 64 58 # Called in debug thread. Call callback and resume polling 65 if not self. fileno:59 if not self.socket: 66 60 return 67 61 self.log.debug('In debug thread, dispatching callback') … … 69 63 self.startReading() 70 64 # Wake up the reactor now that we are reading again 71 if getattr(self, 'reactor', None): 72 self.reactor.wakeUp() 65 self.reactor.wakeUp() 73 66 74 67 class WingDebuggerClientSocketHook(object): … … 79 72 80 73 """ 81 descriptor = None74 descriptors = None 82 75 83 76 def __init__(self): 84 77 self.log = logging.getLogger('z3wingdbg.debugger.twistedmainloop') 78 self.descriptors = {} 85 79 86 80 def _Setup(self, ignored, socket, callback): … … 89 83 90 84 def _RegisterSocket(self, socket, callback): 91 self.log.debug('Registering client socket %s callback with twisted', 92 socket.getsockname()) 93 self.descriptor = WingDebuggerClientSocketDescriptor(socket, callback) 85 self.log.debug( 86 'Registering client socket %s, #%x callback with twisted', 87 socket.getsockname(), id(socket)) 88 descriptor = WingDebuggerClientSocketDescriptor(socket, callback) 89 self.descriptors[id(socket)] = descriptor 94 90 return socket 95 91 96 92 def _UnregisterSocket(self, socket): 97 self.log.debug('Removing wrapped socket from twisted') 98 if self.descriptor: 99 self.descriptor.close() 100 self.descriptor = None 93 self.log.debug('Removing wrapped socket #%x from twisted' % id(socket)) 94 descriptor = self.descriptors.get(id(socket)) 95 if descriptor: 96 del self.descriptors[id(socket)] 97 descriptor.close() 101 98 102 99 def handleDebugServerStart(event):
