Loading ccnode/hypervisor/lib.py +28 −15 Original line number Diff line number Diff line Loading @@ -54,25 +54,38 @@ class LoopHandler(object): """ def __init__(self, loop, handle, fd, events, cb, opaque): # events conversion self.events_map = { pyev.EV_READ: libvirt.VIR_EVENT_HANDLE_READABLE, pyev.EV_WRITE: libvirt.VIR_EVENT_HANDLE_WRITABLE, } self.revents_map = { libvirt.VIR_EVENT_HANDLE_READABLE: pyev.EV_READ, libvirt.VIR_EVENT_HANDLE_WRITABLE: pyev.EV_WRITE, } self.handle = handle self.fd = fd self._events = self.revents_map[events] self._events = self.virt_to_ev(events) self._cb = cb self.opaque = opaque self.watcher = loop.io(self.fd, self._events, self.ev_cb) def ev_to_virt(self, events): """Convert libev events into libvirt one.""" result = 0 if events & pyev.EV_READ: result |= libvirt.VIR_EVENT_HANDLE_READABLE if events & pyev.EV_WRITE: result |= libvirt.VIR_EVENT_HANDLE_WRITABLE return result def virt_to_ev(self, events): """Convert libvirt event to libev one.""" result = 0 if events & (libvirt.VIR_EVENT_HANDLE_READABLE | libvirt.VIR_EVENT_HANDLE_ERROR | libvirt.VIR_EVENT_HANDLE_HANGUP): result |= pyev.EV_READ if events & libvirt.VIR_EVENT_HANDLE_WRITABLE: result |= pyev.EV_WRITE return result def _set(self): self.watcher.stop() if self._events != 0: self.watcher.set(self.fd, self._events) self.watcher.start() Loading @@ -82,7 +95,7 @@ class LoopHandler(object): @events.setter def events(self, events): self._events = self.revents_map[events] self._events = self.virt_to_ev(events) self._set() def start(self): Loading @@ -93,7 +106,7 @@ class LoopHandler(object): def ev_cb(self, watcher, revents): # convert events events = self.events_map[revents] events = self.ev_to_virt(revents) self._cb(self.handle, self.watcher.fd, events, self.opaque[0], self.opaque[1]) Loading Loading
ccnode/hypervisor/lib.py +28 −15 Original line number Diff line number Diff line Loading @@ -54,25 +54,38 @@ class LoopHandler(object): """ def __init__(self, loop, handle, fd, events, cb, opaque): # events conversion self.events_map = { pyev.EV_READ: libvirt.VIR_EVENT_HANDLE_READABLE, pyev.EV_WRITE: libvirt.VIR_EVENT_HANDLE_WRITABLE, } self.revents_map = { libvirt.VIR_EVENT_HANDLE_READABLE: pyev.EV_READ, libvirt.VIR_EVENT_HANDLE_WRITABLE: pyev.EV_WRITE, } self.handle = handle self.fd = fd self._events = self.revents_map[events] self._events = self.virt_to_ev(events) self._cb = cb self.opaque = opaque self.watcher = loop.io(self.fd, self._events, self.ev_cb) def ev_to_virt(self, events): """Convert libev events into libvirt one.""" result = 0 if events & pyev.EV_READ: result |= libvirt.VIR_EVENT_HANDLE_READABLE if events & pyev.EV_WRITE: result |= libvirt.VIR_EVENT_HANDLE_WRITABLE return result def virt_to_ev(self, events): """Convert libvirt event to libev one.""" result = 0 if events & (libvirt.VIR_EVENT_HANDLE_READABLE | libvirt.VIR_EVENT_HANDLE_ERROR | libvirt.VIR_EVENT_HANDLE_HANGUP): result |= pyev.EV_READ if events & libvirt.VIR_EVENT_HANDLE_WRITABLE: result |= pyev.EV_WRITE return result def _set(self): self.watcher.stop() if self._events != 0: self.watcher.set(self.fd, self._events) self.watcher.start() Loading @@ -82,7 +95,7 @@ class LoopHandler(object): @events.setter def events(self, events): self._events = self.revents_map[events] self._events = self.virt_to_ev(events) self._set() def start(self): Loading @@ -93,7 +106,7 @@ class LoopHandler(object): def ev_cb(self, watcher, revents): # convert events events = self.events_map[revents] events = self.ev_to_virt(revents) self._cb(self.handle, self.watcher.fd, events, self.opaque[0], self.opaque[1]) Loading