--- src/vbox/vbox_common.c | 66 ++++++++++++++++++++++++++++++++++++++++ src/vbox/vbox_tmpl.c | 67 ----------------------------------------- src/vbox/vbox_uniformed_api.h | 1 + 3 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index fbb90ac..89095f5 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -2258,3 +2258,69 @@ virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, return dom; } + +int vboxDomainIsActive(virDomainPtr dom) +{ + VBOX_OBJECT_CHECK(dom->conn, int, -1); + vboxArray machines = VBOX_ARRAY_INITIALIZER; + vboxIIDUnion iid; + char *machineNameUtf8 = NULL; + PRUnichar *machineNameUtf16 = NULL; + unsigned char uuid[VIR_UUID_BUFLEN]; + size_t i; + int matched = 0; + nsresult rc; + + VBOX_IID_INITIALIZE(&iid); + rc = gVBoxAPI.UArray.vboxArrayGet(&machines, data->vboxObj, ARRAY_GET_MACHINES); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get list of machines, rc=%08x"), (unsigned)rc); + return ret; + } + + for (i = 0; i < machines.count; ++i) { + IMachine *machine = machines.items[i]; + PRBool isAccessible = PR_FALSE; + + if (!machine) + continue; + + gVBoxAPI.UIMachine.GetAccessible(machine, &isAccessible); + if (!isAccessible) + continue; + + gVBoxAPI.UIMachine.GetId(machine, &iid); + if (NS_FAILED(rc)) + continue; + vboxIIDToUUID(&iid, uuid); + vboxIIDUnalloc(&iid); + + if (memcmp(dom->uuid, uuid, VIR_UUID_BUFLEN) == 0) { + + PRUint32 state; + + matched = 1; + + gVBoxAPI.UIMachine.GetName(machine, &machineNameUtf16); + VBOX_UTF16_TO_UTF8(machineNameUtf16, &machineNameUtf8); + + gVBoxAPI.UIMachine.GetState(machine, &state); + + if (gVBoxAPI.machineStateChecker.Online(state)) + ret = 1; + else + ret = 0; + } + + if (matched == 1) + break; + } + + /* Do the cleanup and take care you dont leak any memory */ + VBOX_UTF8_FREE(machineNameUtf8); + VBOX_COM_UNALLOC_MEM(machineNameUtf16); + gVBoxAPI.UArray.vboxArrayRelease(&machines); + + return ret; +} diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index 7bb6896..2971af2 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -932,73 +932,6 @@ vboxSocketParseAddrUtf16(vboxGlobalData *data, const PRUnichar *utf16, return result; } -static int vboxDomainIsActive(virDomainPtr dom) -{ - VBOX_OBJECT_CHECK(dom->conn, int, -1); - vboxArray machines = VBOX_ARRAY_INITIALIZER; - vboxIID iid = VBOX_IID_INITIALIZER; - char *machineNameUtf8 = NULL; - PRUnichar *machineNameUtf16 = NULL; - unsigned char uuid[VIR_UUID_BUFLEN]; - size_t i; - int matched = 0; - nsresult rc; - - rc = vboxArrayGet(&machines, data->vboxObj, data->vboxObj->vtbl->GetMachines); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not get list of machines, rc=%08x"), (unsigned)rc); - return ret; - } - - for (i = 0; i < machines.count; ++i) { - IMachine *machine = machines.items[i]; - PRBool isAccessible = PR_FALSE; - - if (!machine) - continue; - - machine->vtbl->GetAccessible(machine, &isAccessible); - if (isAccessible) { - - rc = machine->vtbl->GetId(machine, &iid.value); - if (NS_FAILED(rc)) - continue; - vboxIIDToUUID(&iid, uuid); - vboxIIDUnalloc(&iid); - - if (memcmp(dom->uuid, uuid, VIR_UUID_BUFLEN) == 0) { - - PRUint32 state; - - matched = 1; - - machine->vtbl->GetName(machine, &machineNameUtf16); - VBOX_UTF16_TO_UTF8(machineNameUtf16, &machineNameUtf8); - - machine->vtbl->GetState(machine, &state); - - if ((state >= MachineState_FirstOnline) && - (state <= MachineState_LastOnline)) - ret = 1; - else - ret = 0; - } - - if (matched == 1) - break; - } - } - - /* Do the cleanup and take care you dont leak any memory */ - VBOX_UTF8_FREE(machineNameUtf8); - VBOX_COM_UNALLOC_MEM(machineNameUtf16); - vboxArrayRelease(&machines); - - return ret; -} - - static int vboxDomainIsPersistent(virDomainPtr dom ATTRIBUTE_UNUSED) { /* All domains are persistent. However, we do want to check for diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h index 41b2d90..6fc97ed 100644 --- a/src/vbox/vbox_uniformed_api.h +++ b/src/vbox/vbox_uniformed_api.h @@ -411,6 +411,7 @@ int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags); int vboxDomainCreate(virDomainPtr dom); virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, unsigned int flags); +int vboxDomainIsActive(virDomainPtr dom); /* Version specified functions for installing uniformed API */ void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI); -- 1.7.9.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list