static virClassPtr virObjectEventClass;
static virClassPtr virDomainEventClass;
+static virClassPtr virDomainEventLifecycleClass;
static void virObjectEventDispose(void *obj);
static void virDomainEventDispose(void *obj);
+static void virDomainEventLifecycleDispose(void *obj);
struct _virObjectEvent {
virObject parent;
virObjectMeta meta;
union {
- struct {
- int type;
- int detail;
- } lifecycle;
struct {
long long offset;
} rtcChange;
} data;
};
+struct _virDomainEventLifecycle {
+ virDomainEvent parent;
+
+ int type;
+ int detail;
+};
+typedef struct _virDomainEventLifecycle virDomainEventLifecycle;
+typedef virDomainEventLifecycle *virDomainEventLifecyclePtr;
+
+
static int virObjectEventOnceInit(void)
{
if (!(virObjectEventClass =
sizeof(virDomainEvent),
virDomainEventDispose)))
return -1;
+ if (!(virDomainEventLifecycleClass =
+ virClassNew(virDomainEventClass,
+ "virDomainEventLifecycle",
+ sizeof(virDomainEventLifecycle),
+ virDomainEventLifecycleDispose)))
+ return -1;
return 0;
}
VIR_FREE(event->meta.name);
}
+static void virDomainEventLifecycleDispose(void *obj)
+{
+ virDomainEventLifecyclePtr event = obj;
+ VIR_DEBUG("obj=%p", event);
+}
+
/**
* virObjectEventCallbackListFree:
* @list: event callback list head
const unsigned char *uuid,
int type, int detail)
{
- virDomainEventPtr event;
+ virDomainEventLifecyclePtr event;
if (virObjectEventInitialize() < 0)
return NULL;
- if (!(event = virDomainEventNewInternal(virDomainEventClass,
- VIR_DOMAIN_EVENT_ID_LIFECYCLE,
- id, name, uuid)))
+ if (!(event = virDomainEventNewInternal(virDomainEventLifecycleClass,
+ VIR_DOMAIN_EVENT_ID_LIFECYCLE,
+ id, name, uuid)))
return NULL;
- event->data.lifecycle.type = type;
- event->data.lifecycle.detail = detail;
+ event->type = type;
+ event->detail = detail;
- return event;
+ return (virDomainEventPtr)event;
}
virDomainEventPtr virDomainEventNewFromDom(virDomainPtr dom, int type, int detail)
switch ((virDomainEventID) eventID) {
case VIR_DOMAIN_EVENT_ID_LIFECYCLE:
- ((virConnectDomainEventCallback)cb)(conn, dom,
- event->data.lifecycle.type,
- event->data.lifecycle.detail,
- cbopaque);
- goto cleanup;
+ {
+ virDomainEventLifecyclePtr lifecycleEvent;
+
+ lifecycleEvent = (virDomainEventLifecyclePtr)event;
+ ((virConnectDomainEventCallback)cb)(conn, dom,
+ lifecycleEvent->type,
+ lifecycleEvent->detail,
+ cbopaque);
+ goto cleanup;
+ }
case VIR_DOMAIN_EVENT_ID_REBOOT:
(cb)(conn, dom,