def update(self, flags): if not self.ev: self.ev = LibeventEvent(flags, self.fd, self._ready_pre) if self._last_events != self.ev.events: self.ev.cancel() # DANGER: this relies on the implementation details of the # cython-level class. LibeventEvent.__init__(self.ev, flags, self.fd, self._ready_pre) self.ev.add()
class GeventIOEvent(IOEvent): def __init__(self): super(GeventIOEvent, self).__init__() self.ev = None self._last_events = -1 def _ready_pre(self, unused, flags): self.update(self.flags) lcbflags = REVERSERMAP[flags] self.ready(lcbflags) def update(self, flags): if not self.ev: self.ev = LibeventEvent(flags, self.fd, self._ready_pre) if self._last_events != self.ev.events: self.ev.cancel() # DANGER: this relies on the implementation details of the # cython-level class. LibeventEvent.__init__(self.ev, flags, self.fd, self._ready_pre) self.ev.add() def cancel(self): if not self.ev: return self.ev.cancel()