mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
* python/virConnect.py: needed for events from the python bindings
by Ben Guthro daniel
This commit is contained in:
43
python/virConnect.py
Normal file
43
python/virConnect.py
Normal file
@@ -0,0 +1,43 @@
|
||||
def __del__(self):
|
||||
try:
|
||||
for cb,opaque in self.domainEventCallbacks.items():
|
||||
del self.domainEventCallbacks[cb]
|
||||
self.domainEventCallbacks = None
|
||||
libvirtmod.virConnectDomainEventDeregister(self._o, self)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
if self._o != None:
|
||||
libvirtmod.virConnectClose(self._o)
|
||||
self._o = None
|
||||
|
||||
def domainEventDeregister(self, cb):
|
||||
"""Removes a Domain Event Callback. De-registering for a
|
||||
domain callback will disable delivery of this event type """
|
||||
try:
|
||||
del self.domainEventCallbacks[cb]
|
||||
if len(self.domainEventCallbacks) == 0:
|
||||
ret = libvirtmod.virConnectDomainEventDeregister(self._o, self)
|
||||
if ret == -1: raise libvirtError ('virConnectDomainEventDeregister() failed', conn=self)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
def domainEventRegister(self, cb, opaque):
|
||||
"""Adds a Domain Event Callback. Registering for a domain
|
||||
callback will enable delivery of the events """
|
||||
try:
|
||||
self.domainEventCallbacks[cb] = opaque
|
||||
except AttributeError:
|
||||
self.domainEventCallbacks = {cb:opaque}
|
||||
ret = libvirtmod.virConnectDomainEventRegister(self._o, self)
|
||||
if ret == -1: raise libvirtError ('virConnectDomainEventRegister() failed', conn=self)
|
||||
|
||||
def dispatchDomainEventCallbacks(self, dom, event):
|
||||
"""Dispatches events to python user domain event callbacks
|
||||
"""
|
||||
try:
|
||||
for cb,opaque in self.domainEventCallbacks.items():
|
||||
cb(self,dom,event,opaque)
|
||||
return 0
|
||||
except AttributeError:
|
||||
pass
|
||||
Reference in New Issue
Block a user