mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
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.
This commit is contained in:
parent
67d91cb2bd
commit
abb65994b7
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user