mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
test: Use virDomainEventState helpers
v3: Adjust for new virDomainEventStateNew argument
This commit is contained in:
parent
1ded8942c7
commit
4d7297f87e
@ -90,12 +90,7 @@ struct _testConn {
|
|||||||
int numCells;
|
int numCells;
|
||||||
testCell cells[MAX_CELLS];
|
testCell cells[MAX_CELLS];
|
||||||
|
|
||||||
|
virDomainEventStatePtr domainEventState;
|
||||||
/* An array of callbacks */
|
|
||||||
virDomainEventCallbackListPtr domainEventCallbacks;
|
|
||||||
virDomainEventQueuePtr domainEventQueue;
|
|
||||||
int domainEventTimer;
|
|
||||||
int domainEventDispatching;
|
|
||||||
};
|
};
|
||||||
typedef struct _testConn testConn;
|
typedef struct _testConn testConn;
|
||||||
typedef struct _testConn *testConnPtr;
|
typedef struct _testConn *testConnPtr;
|
||||||
@ -1104,6 +1099,7 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
|
|||||||
int flags ATTRIBUTE_UNUSED)
|
int flags ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
testConnPtr privconn;
|
||||||
|
|
||||||
if (!conn->uri)
|
if (!conn->uri)
|
||||||
return VIR_DRV_OPEN_DECLINED;
|
return VIR_DRV_OPEN_DECLINED;
|
||||||
@ -1130,26 +1126,25 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
|
|||||||
ret = testOpenFromFile(conn,
|
ret = testOpenFromFile(conn,
|
||||||
conn->uri->path);
|
conn->uri->path);
|
||||||
|
|
||||||
if (ret == VIR_DRV_OPEN_SUCCESS) {
|
if (ret != VIR_DRV_OPEN_SUCCESS)
|
||||||
testConnPtr privconn = conn->privateData;
|
return ret;
|
||||||
testDriverLock(privconn);
|
|
||||||
/* Init callback list */
|
|
||||||
if (VIR_ALLOC(privconn->domainEventCallbacks) < 0 ||
|
|
||||||
!(privconn->domainEventQueue = virDomainEventQueueNew())) {
|
|
||||||
virReportOOMError();
|
|
||||||
testDriverUnlock(privconn);
|
|
||||||
testClose(conn);
|
|
||||||
return VIR_DRV_OPEN_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((privconn->domainEventTimer =
|
privconn = conn->privateData;
|
||||||
virEventAddTimeout(-1, testDomainEventFlush, privconn, NULL)) < 0)
|
testDriverLock(privconn);
|
||||||
VIR_DEBUG("virEventAddTimeout failed: No addTimeoutImpl defined. "
|
|
||||||
"continuing without events.");
|
privconn->domainEventState = virDomainEventStateNew(testDomainEventFlush,
|
||||||
|
privconn,
|
||||||
|
NULL,
|
||||||
|
false);
|
||||||
|
if (!privconn->domainEventState) {
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
|
testClose(conn);
|
||||||
|
return VIR_DRV_OPEN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ret);
|
testDriverUnlock(privconn);
|
||||||
|
|
||||||
|
return VIR_DRV_OPEN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int testClose(virConnectPtr conn)
|
static int testClose(virConnectPtr conn)
|
||||||
@ -1162,12 +1157,7 @@ static int testClose(virConnectPtr conn)
|
|||||||
virNetworkObjListFree(&privconn->networks);
|
virNetworkObjListFree(&privconn->networks);
|
||||||
virInterfaceObjListFree(&privconn->ifaces);
|
virInterfaceObjListFree(&privconn->ifaces);
|
||||||
virStoragePoolObjListFree(&privconn->pools);
|
virStoragePoolObjListFree(&privconn->pools);
|
||||||
|
virDomainEventStateFree(privconn->domainEventState);
|
||||||
virDomainEventCallbackListFree(privconn->domainEventCallbacks);
|
|
||||||
virDomainEventQueueFree(privconn->domainEventQueue);
|
|
||||||
|
|
||||||
if (privconn->domainEventTimer != -1)
|
|
||||||
virEventRemoveTimeout(privconn->domainEventTimer);
|
|
||||||
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
virMutexDestroy(&privconn->lock);
|
virMutexDestroy(&privconn->lock);
|
||||||
@ -5157,7 +5147,8 @@ testDomainEventRegister(virConnectPtr conn,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
ret = virDomainEventCallbackListAdd(conn, driver->domainEventCallbacks,
|
ret = virDomainEventCallbackListAdd(conn,
|
||||||
|
driver->domainEventState->callbacks,
|
||||||
callback, opaque, freecb);
|
callback, opaque, freecb);
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
|
|
||||||
@ -5173,12 +5164,9 @@ testDomainEventDeregister(virConnectPtr conn,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
if (driver->domainEventDispatching)
|
ret = virDomainEventStateDeregister(conn,
|
||||||
ret = virDomainEventCallbackListMarkDelete(conn, driver->domainEventCallbacks,
|
driver->domainEventState,
|
||||||
callback);
|
callback);
|
||||||
else
|
|
||||||
ret = virDomainEventCallbackListRemove(conn, driver->domainEventCallbacks,
|
|
||||||
callback);
|
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -5197,7 +5185,8 @@ testDomainEventRegisterAny(virConnectPtr conn,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
ret = virDomainEventCallbackListAddID(conn, driver->domainEventCallbacks,
|
ret = virDomainEventCallbackListAddID(conn,
|
||||||
|
driver->domainEventState->callbacks,
|
||||||
dom, eventID,
|
dom, eventID,
|
||||||
callback, opaque, freecb);
|
callback, opaque, freecb);
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
@ -5213,12 +5202,9 @@ testDomainEventDeregisterAny(virConnectPtr conn,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
if (driver->domainEventDispatching)
|
ret = virDomainEventStateDeregisterAny(conn,
|
||||||
ret = virDomainEventCallbackListMarkDeleteID(conn, driver->domainEventCallbacks,
|
driver->domainEventState,
|
||||||
callbackID);
|
callbackID);
|
||||||
else
|
|
||||||
ret = virDomainEventCallbackListRemoveID(conn, driver->domainEventCallbacks,
|
|
||||||
callbackID);
|
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -5242,28 +5228,11 @@ static void testDomainEventDispatchFunc(virConnectPtr conn,
|
|||||||
static void testDomainEventFlush(int timer ATTRIBUTE_UNUSED, void *opaque)
|
static void testDomainEventFlush(int timer ATTRIBUTE_UNUSED, void *opaque)
|
||||||
{
|
{
|
||||||
testConnPtr driver = opaque;
|
testConnPtr driver = opaque;
|
||||||
virDomainEventQueue tempQueue;
|
|
||||||
|
|
||||||
testDriverLock(driver);
|
testDriverLock(driver);
|
||||||
|
virDomainEventStateFlush(driver->domainEventState,
|
||||||
driver->domainEventDispatching = 1;
|
testDomainEventDispatchFunc,
|
||||||
|
driver);
|
||||||
/* Copy the queue, so we're reentrant safe */
|
|
||||||
tempQueue.count = driver->domainEventQueue->count;
|
|
||||||
tempQueue.events = driver->domainEventQueue->events;
|
|
||||||
driver->domainEventQueue->count = 0;
|
|
||||||
driver->domainEventQueue->events = NULL;
|
|
||||||
|
|
||||||
virEventUpdateTimeout(driver->domainEventTimer, -1);
|
|
||||||
virDomainEventQueueDispatch(&tempQueue,
|
|
||||||
driver->domainEventCallbacks,
|
|
||||||
testDomainEventDispatchFunc,
|
|
||||||
driver);
|
|
||||||
|
|
||||||
/* Purge any deleted callbacks */
|
|
||||||
virDomainEventCallbackListPurgeMarked(driver->domainEventCallbacks);
|
|
||||||
|
|
||||||
driver->domainEventDispatching = 0;
|
|
||||||
testDriverUnlock(driver);
|
testDriverUnlock(driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5272,17 +5241,7 @@ static void testDomainEventFlush(int timer ATTRIBUTE_UNUSED, void *opaque)
|
|||||||
static void testDomainEventQueue(testConnPtr driver,
|
static void testDomainEventQueue(testConnPtr driver,
|
||||||
virDomainEventPtr event)
|
virDomainEventPtr event)
|
||||||
{
|
{
|
||||||
if (driver->domainEventTimer < 0) {
|
virDomainEventStateQueue(driver->domainEventState, event);
|
||||||
virDomainEventFree(event);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainEventQueuePush(driver->domainEventQueue,
|
|
||||||
event) < 0)
|
|
||||||
virDomainEventFree(event);
|
|
||||||
|
|
||||||
if (driver->domainEventQueue->count == 1)
|
|
||||||
virEventUpdateTimeout(driver->domainEventTimer, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static virDrvOpenStatus testSecretOpen(virConnectPtr conn,
|
static virDrvOpenStatus testSecretOpen(virConnectPtr conn,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user