提交 abb65994 编写于 作者: C Cédric Bosdonnat 提交者: Daniel P. Berrange

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.
上级 67d91cb2
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册