예제 #1
0
 def trigger_event(self, callback = None, *args):
     if callback:
         self._callback_lock.acquire()
         try:
             self._callbacks.append((callback, args))
         finally:
             self._callback_lock.release()
     return Trigger.trigger_event(self)
예제 #2
0
 def close(self):
     self._callback_lock.acquire()
     try:
         for callback, args in self._callbacks:
             print 'Callback discarded because close: %s' % callback
         self._callbacks = []
     finally:
         self._callback_lock.release()
     return Trigger.close(self)
예제 #3
0
 def handle_read (self):
     result = Trigger.handle_read(self)
     self._callback_lock.acquire()
     try:
         for callback, args in self._callbacks:
             try: 
                 callback(*args)
             except: 
                 msglog.exception()
         self._callbacks = []
     finally:
         self._callback_lock.release()
     return result
예제 #4
0
 def __init__ (self, socketmap):
     self._callbacks = []
     self._callback_lock = Lock()
     Trigger.__init__(self, socketmap)