diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2009-09-16 14:03:53 +0100 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2009-09-21 14:41:46 +0100 |
commit | a9ea906035bcf5cbe95db64f51ed2ff7cec2b503 (patch) | |
tree | 0f55b2a22a6e4b44ec5c41b267839f82757090af /libvirt-override-virConnect.py | |
parent | a5bab7085e42d87561c817f91c26def384611f2e (diff) | |
download | libvirt-python-v6-a9ea906035bcf5cbe95db64f51ed2ff7cec2b503.tar.gz libvirt-python-v6-a9ea906035bcf5cbe95db64f51ed2ff7cec2b503.tar.xz libvirt-python-v6-a9ea906035bcf5cbe95db64f51ed2ff7cec2b503.zip |
Re-arrange python generator to make it clear what's auto-generated
* README: New file describing what each file is used for
* livvirt-override.c, libvirt-override.py, libvirt-override-api.xml,
libvirt-override-virConnect.py: Manually written code overriding
the generator
* typewrappers.c, typewrappers.h: Data type wrappers
* generator.py: Automatically pre-prend contents of libvirt-override.py
to generated libvirt.py. Output into libvirt.py directly instead of
libvirtclass.py. Don't generate libvirtclass.txt at all. Write C
files into libvirt.c/.h directly
* Makefile.am: Remove rule for creating libvirt.py from libvirt-override.py
and libvirtclass.py, since generator.py does it directly
Diffstat (limited to 'libvirt-override-virConnect.py')
-rw-r--r-- | libvirt-override-virConnect.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libvirt-override-virConnect.py b/libvirt-override-virConnect.py new file mode 100644 index 0000000..1fdf548 --- /dev/null +++ b/libvirt-override-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, detail): + """Dispatches events to python user domain event callbacks + """ + try: + for cb,opaque in self.domainEventCallbacks.items(): + cb(self,dom,event,detail,opaque) + return 0 + except AttributeError: + pass |