From abb65994b70d80dfd35d087a6d288b26072369bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= Date: Fri, 22 Nov 2013 15:55:12 +0100 Subject: [PATCH] Add object event namespaces for the event IDs 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 | 10 ++++++++-- src/conf/domain_event.h | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c index 0b1bb76cb3..988339e257 100644 --- a/src/conf/domain_event.c +++ b/src/conf/domain_event.c @@ -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); } diff --git a/src/conf/domain_event.h b/src/conf/domain_event.h index 647b7e4246..ec1b3d68b8 100644 --- a/src/conf/domain_event.h +++ b/src/conf/domain_event.h @@ -28,6 +28,14 @@ # 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;