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)
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)
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
def __init__ (self, socketmap): self._callbacks = [] self._callback_lock = Lock() Trigger.__init__(self, socketmap)