---
src/conf/domain_event.c | 65 ++++++++++++++++++++++++++++++++++---------------
src/conf/domain_event.h | 8 +++---
2 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
index ff4f69a..a69ce11 100644
--- a/src/conf/domain_event.c
+++ b/src/conf/domain_event.c
@@ -76,10 +76,14 @@ struct _virObjectEventCallback {
int deleted;
};
+
+
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;
@@ -93,10 +97,6 @@ struct _virDomainEvent {
union {
struct {
- int type;
- int detail;
- } lifecycle;
- struct {
long long offset;
} rtcChange;
struct {
@@ -140,6 +140,16 @@ struct _virDomainEvent {
} data;
};
+struct _virDomainEventLifecycle {
+ virDomainEvent parent;
+
+ int type;
+ int detail;
+};
+typedef struct _virDomainEventLifecycle virDomainEventLifecycle;
+typedef virDomainEventLifecycle *virDomainEventLifecyclePtr;
+
+
static int virObjectEventOnceInit(void)
{
if (!(virObjectEventClass = virClassNew(virClassForObject(),
@@ -152,6 +162,12 @@ static int virObjectEventOnceInit(void)
sizeof(virDomainEvent),
virDomainEventDispose)))
return -1;
+ if (!(virDomainEventLifecycleClass = virClassNew(
+ virDomainEventClass,
+ "virDomainEventLifecycle",
+ sizeof(virDomainEventLifecycle),
+ virDomainEventLifecycleDispose)))
+ return -1;
return 0;
}
@@ -235,6 +251,12 @@ static void virDomainEventDispose(void *obj)
VIR_FREE(event->meta.name);
}
+static void virDomainEventLifecycleDispose(void *obj)
+{
+ virDomainEventLifecyclePtr event = obj;
+ VIR_DEBUG("obj=%p", event);
+}
+
/**
* virObjectEventCallbackListFree:
* @list: event callback list head
@@ -764,37 +786,37 @@ static void *virDomainEventNewInternal(virClassPtr klass,
return event;
}
-virDomainEventPtr virDomainEventNew(int id, const char *name,
+void *virDomainEventNew(int id, const char *name,
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;
}
-virDomainEventPtr virDomainEventNewFromDom(virDomainPtr dom, int type, int detail)
+void *virDomainEventNewFromDom(virDomainPtr dom, int type, int detail)
{
return virDomainEventNew(dom->id, dom->name, dom->uuid, type, detail);
}
-virDomainEventPtr virDomainEventNewFromObj(virDomainObjPtr obj, int type, int detail)
+void *virDomainEventNewFromObj(virDomainObjPtr obj, int type, int detail)
{
return virDomainEventNewFromDef(obj->def, type, detail);
}
-virDomainEventPtr virDomainEventNewFromDef(virDomainDefPtr def, int type, int detail)
+void *virDomainEventNewFromDef(virDomainDefPtr def, int type, int detail)
{
return virDomainEventNew(def->id, def->name, def->uuid, type, detail);
}
@@ -1454,11 +1476,16 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn,
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,
diff --git a/src/conf/domain_event.h b/src/conf/domain_event.h
index 8b9409a..04b846e 100644
--- a/src/conf/domain_event.h
+++ b/src/conf/domain_event.h
@@ -50,10 +50,10 @@ typedef virObjectEventQueue *virObjectEventQueuePtr;
typedef struct _virObjectEventState virObjectEventState;
typedef virObjectEventState *virObjectEventStatePtr;
-virDomainEventPtr virDomainEventNew(int id, const char *name, const unsigned char *uuid,
int type, int detail);
-virDomainEventPtr virDomainEventNewFromDom(virDomainPtr dom, int type, int detail);
-virDomainEventPtr virDomainEventNewFromObj(virDomainObjPtr obj, int type, int detail);
-virDomainEventPtr virDomainEventNewFromDef(virDomainDefPtr def, int type, int detail);
+void *virDomainEventNew(int id, const char *name, const unsigned char *uuid, int type,
int detail);
+void *virDomainEventNewFromDom(virDomainPtr dom, int type, int detail);
+void *virDomainEventNewFromObj(virDomainObjPtr obj, int type, int detail);
+void *virDomainEventNewFromDef(virDomainDefPtr def, int type, int detail);
virDomainEventPtr virDomainEventRebootNew(int id, const char *name, const unsigned char
*uuid);
virDomainEventPtr virDomainEventRebootNewFromDom(virDomainPtr dom);
--
1.8.4.2