diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index f27098cea9..1b669583c6 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -1697,21 +1697,33 @@ prlsdkHandlePerfEvent(vzConnPtr privconn, return PRL_ERR_SUCCESS; } -static void -prlsdkHandleVmEvent(vzConnPtr privconn, PRL_HANDLE prlEvent) +static PRL_RESULT +prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque) { + vzConnPtr privconn = opaque; PRL_RESULT pret = PRL_ERR_FAILURE; + PRL_HANDLE_TYPE handleType; char uuidstr[VIR_UUID_STRING_BUFLEN + 2]; unsigned char uuid[VIR_UUID_BUFLEN]; PRL_UINT32 bufsize = ARRAY_CARDINALITY(uuidstr); PRL_EVENT_TYPE prlEventType; - pret = PrlEvent_GetType(prlEvent, &prlEventType); + pret = PrlHandle_GetType(prlEvent, &handleType); prlsdkCheckRetGoto(pret, cleanup); + /* Currently, there is no need to handle anything but events */ + if (handleType != PHT_EVENT) + goto cleanup; + + if (privconn == NULL) + goto cleanup; + pret = PrlEvent_GetIssuerId(prlEvent, uuidstr, &bufsize); prlsdkCheckRetGoto(pret, cleanup); + pret = PrlEvent_GetType(prlEvent, &prlEventType); + prlsdkCheckRetGoto(pret, cleanup); + if (prlsdkUUIDParse(uuidstr, uuid) < 0) goto cleanup; @@ -1736,44 +1748,7 @@ prlsdkHandleVmEvent(vzConnPtr privconn, PRL_HANDLE prlEvent) prlEvent = PRL_INVALID_HANDLE; break; default: - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Can't handle event of type %d"), prlEventType); - } - - cleanup: - PrlHandle_Free(prlEvent); - return; -} - -static PRL_RESULT -prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque) -{ - vzConnPtr privconn = opaque; - PRL_RESULT pret = PRL_ERR_FAILURE; - PRL_HANDLE_TYPE handleType; - PRL_EVENT_ISSUER_TYPE prlIssuerType = PIE_UNKNOWN; - - pret = PrlHandle_GetType(prlEvent, &handleType); - prlsdkCheckRetGoto(pret, cleanup); - - /* Currently, there is no need to handle anything but events */ - if (handleType != PHT_EVENT) - goto cleanup; - - if (privconn == NULL) - goto cleanup; - - PrlEvent_GetIssuerType(prlEvent, &prlIssuerType); - prlsdkCheckRetGoto(pret, cleanup); - - switch (prlIssuerType) { - case PIE_VIRTUAL_MACHINE: - prlsdkHandleVmEvent(privconn, prlEvent); - /* above function takes own of event */ - prlEvent = PRL_INVALID_HANDLE; - break; - default: - VIR_DEBUG("Skipping event of issuer type %d", prlIssuerType); + VIR_DEBUG("Skipping event of type %d", prlEventType); } cleanup: @@ -1781,7 +1756,6 @@ prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque) return PRL_ERR_SUCCESS; } - int prlsdkSubscribeToPCSEvents(vzConnPtr privconn) { PRL_RESULT pret = PRL_ERR_UNINITIALIZED;