Create virDomainEventBalloonChange to get rid of the huge union

This commit is contained in:
Cédric Bosdonnat 2013-11-22 11:08:20 +01:00 committed by Daniel P. Berrange
parent 8d53d6ab74
commit d9c6ba31a5

View File

@ -93,6 +93,7 @@ static virClassPtr virDomainEventGraphicsClass;
static virClassPtr virDomainEventBlockJobClass;
static virClassPtr virDomainEventDiskChangeClass;
static virClassPtr virDomainEventTrayChangeClass;
static virClassPtr virDomainEventBalloonChangeClass;
static void virObjectEventDispose(void *obj);
static void virDomainEventDispose(void *obj);
@ -104,6 +105,7 @@ static void virDomainEventGraphicsDispose(void *obj);
static void virDomainEventBlockJobDispose(void *obj);
static void virDomainEventDiskChangeDispose(void *obj);
static void virDomainEventTrayChangeDispose(void *obj);
static void virDomainEventBalloonChangeDispose(void *obj);
struct _virObjectEvent {
virObject parent;
@ -116,10 +118,6 @@ struct _virDomainEvent {
virObjectMeta meta;
union {
struct {
/* In unit of 1024 bytes */
unsigned long long actual;
} balloonChange;
struct {
char *devAlias;
} deviceRemoved;
@ -204,6 +202,15 @@ struct _virDomainEventTrayChange {
typedef struct _virDomainEventTrayChange virDomainEventTrayChange;
typedef virDomainEventTrayChange *virDomainEventTrayChangePtr;
struct _virDomainEventBalloonChange {
virDomainEvent parent;
/* In unit of 1024 bytes */
unsigned long long actual;
};
typedef struct _virDomainEventBalloonChange virDomainEventBalloonChange;
typedef virDomainEventBalloonChange *virDomainEventBalloonChangePtr;
static int virObjectEventOnceInit(void)
{
@ -267,6 +274,12 @@ static int virObjectEventOnceInit(void)
sizeof(virDomainEventTrayChange),
virDomainEventTrayChangeDispose)))
return -1;
if (!(virDomainEventBalloonChangeClass =
virClassNew(virDomainEventClass,
"virDomainEventBalloonChange",
sizeof(virDomainEventBalloonChange),
virDomainEventBalloonChangeDispose)))
return -1;
return 0;
}
@ -387,6 +400,12 @@ static void virDomainEventTrayChangeDispose(void *obj)
VIR_FREE(event->devAlias);
}
static void virDomainEventBalloonChangeDispose(void *obj)
{
virDomainEventBalloonChangePtr event = obj;
VIR_DEBUG("obj=%p", event);
}
/**
* virObjectEventCallbackListFree:
* @list: event callback list head
@ -1486,36 +1505,36 @@ virDomainEventPMSuspendDiskNewFromDom(virDomainPtr dom)
virDomainEventPtr virDomainEventBalloonChangeNewFromDom(virDomainPtr dom,
unsigned long long actual)
{
virDomainEventPtr ev;
virDomainEventBalloonChangePtr ev;
if (virObjectEventInitialize() < 0)
return NULL;
if (!(ev = virDomainEventNew(virDomainEventClass,
if (!(ev = virDomainEventNew(virDomainEventBalloonChangeClass,
VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE,
dom->id, dom->name, dom->uuid)))
return NULL;
ev->data.balloonChange.actual = actual;
ev->actual = actual;
return ev;
return (virDomainEventPtr)ev;
}
virDomainEventPtr virDomainEventBalloonChangeNewFromObj(virDomainObjPtr obj,
unsigned long long actual)
{
virDomainEventPtr ev;
virDomainEventBalloonChangePtr ev;
if (virObjectEventInitialize() < 0)
return NULL;
if (!(ev = virDomainEventNew(virDomainEventClass,
if (!(ev = virDomainEventNew(virDomainEventBalloonChangeClass,
VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE,
obj->def->id, obj->def->name, obj->def->uuid)))
return NULL;
ev->data.balloonChange.actual = actual;
ev->actual = actual;
return ev;
return (virDomainEventPtr)ev;
}
static virDomainEventPtr
@ -1743,10 +1762,15 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn,
goto cleanup;
case VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE:
((virConnectDomainEventBalloonChangeCallback)cb)(conn, dom,
event->data.balloonChange.actual,
cbopaque);
goto cleanup;
{
virDomainEventBalloonChangePtr balloonChangeEvent;
balloonChangeEvent = (virDomainEventBalloonChangePtr)event;
((virConnectDomainEventBalloonChangeCallback)cb)(conn, dom,
balloonChangeEvent->actual,
cbopaque);
goto cleanup;
}
case VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK:
((virConnectDomainEventPMSuspendDiskCallback)cb)(conn, dom, 0, cbopaque);