summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@redhat.com>2008-10-31 13:56:47 +0000
committerDaniel Veillard <veillard@redhat.com>2008-10-31 13:56:47 +0000
commit034d6b3bba3696968d9e68421d9b896df646786e (patch)
treeca877a459cf1acf64dcc5f8a0f34c88bc8099786
parent000818421b5007e1ee65c3fa8fef12bcf08feea2 (diff)
downloadlibvirt-python-split-034d6b3bba3696968d9e68421d9b896df646786e.tar.gz
libvirt-python-split-034d6b3bba3696968d9e68421d9b896df646786e.tar.xz
libvirt-python-split-034d6b3bba3696968d9e68421d9b896df646786e.zip
* python/virConnect.py: needed for events from the python bindings
by Ben Guthro daniel
-rw-r--r--virConnect.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/virConnect.py b/virConnect.py
new file mode 100644
index 0000000..ec29b33
--- /dev/null
+++ b/virConnect.py
@@ -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