]> xenbits.xensource.com Git - people/dariof/libvirt.git/commitdiff
Add object event namespaces for the event IDs
authorCédric Bosdonnat <cbosdonnat@suse.com>
Fri, 22 Nov 2013 14:55:12 +0000 (15:55 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 10 Dec 2013 13:04:25 +0000 (13:04 +0000)
Each unique event ID will thus be composed by 1 byte for the namespace
and 1 byte for a namespace-specific ID. The namespace for domain event
needs to be 0 for compatibility reasons.

src/conf/domain_event.c
src/conf/domain_event.h

index 0b1bb76cb3eb89a36e591ab1095db6d272eac0e6..988339e2578341001fdb1dfd3713e3b1d80419cd 100644 (file)
@@ -1912,11 +1912,17 @@ virObjectEventStateDispatchFunc(virConnectPtr conn,
                                 void *opaque)
 {
     virObjectEventStatePtr state = opaque;
+    virEventNamespaceID namespace = (event->eventID & 0xFF00) >> 8;
 
     /* Drop the lock whle dispatching, for sake of re-entrancy */
     virObjectEventStateUnlock(state);
-    virDomainEventDispatchDefaultFunc(conn, event,
-            VIR_DOMAIN_EVENT_CALLBACK(cb), cbopaque, NULL);
+    switch (namespace)
+    {
+        case VIR_EVENT_NAMESPACE_DOMAIN:
+            virDomainEventDispatchDefaultFunc(conn, event,
+                    VIR_DOMAIN_EVENT_CALLBACK(cb), cbopaque, NULL);
+            break;
+    }
     virObjectEventStateLock(state);
 }
 
index 647b7e4246f5d7848a0ef9962511b620e44ca7f2..ec1b3d68b86b710a4d9e82a394d6bc0ee9921904 100644 (file)
 
 # include "domain_conf.h"
 
+
+/** Event IDs are computed in the following way:
+    virEventNamespaceID << 8 + vir*EventId
+  */
+typedef enum {
+    VIR_EVENT_NAMESPACE_DOMAIN = 0, /* 0 to keep value of virDomainEventId unchanged */
+} virEventNamespaceID;
+
 typedef struct _virObjectEventCallback virObjectEventCallback;
 typedef virObjectEventCallback *virObjectEventCallbackPtr;