[libvirt] [[PATCH libvirt-java]] Implement Connect.listAllDomains
Claudio Bley
claudio.bley at gmail.com
Fri Oct 31 22:40:26 UTC 2014
Hi.
At Sat, 25 Oct 2014 16:25:48 -0700,
Cédric Bosdonnat wrote:
>
> From: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
>
> ---
> src/main/java/org/libvirt/Connect.java | 46 +++++++++++++++++++++++++
> src/main/java/org/libvirt/jna/Libvirt.java | 2 ++
> src/test/java/org/libvirt/TestJavaBindings.java | 1 +
> 3 files changed, 49 insertions(+)
>
> diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java
> index fedc60e..390ed89 100644
> --- a/src/main/java/org/libvirt/Connect.java
> +++ b/src/main/java/org/libvirt/Connect.java
> @@ -24,6 +24,7 @@ import com.sun.jna.Memory;
> import com.sun.jna.NativeLong;
> import com.sun.jna.Pointer;
> import com.sun.jna.ptr.LongByReference;
> +import com.sun.jna.ptr.PointerByReference;
>
> /**
> * The Connect object represents a connection to a local or remote
> @@ -33,6 +34,28 @@ import com.sun.jna.ptr.LongByReference;
> */
> public class Connect {
>
> + static final class ListAllDomainsFlags {
> + static final int VIR_CONNECT_LIST_DOMAINS_ACTIVE = (1 << 0);
> + static final int VIR_CONNECT_LIST_DOMAINS_INACTIVE = (1 << 1);
> +
> + static final int VIR_CONNECT_LIST_DOMAINS_PERSISTENT = (1 << 2);
> + static final int VIR_CONNECT_LIST_DOMAINS_TRANSIENT = (1 << 3);
> +
> + static final int VIR_CONNECT_LIST_DOMAINS_RUNNING = (1 << 4);
> + static final int VIR_CONNECT_LIST_DOMAINS_PAUSED = (1 << 5);
> + static final int VIR_CONNECT_LIST_DOMAINS_SHUTOFF = (1 << 6);
> + static final int VIR_CONNECT_LIST_DOMAINS_OTHER = (1 << 7);
> +
> + static final int VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE = (1 << 8);
> + static final int VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE = (1 << 9);
> +
> + static final int VIR_CONNECT_LIST_DOMAINS_AUTOSTART = (1 << 10);
> + static final int VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART = (1 << 11);
> +
> + static final int VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT = (1 << 12);
> + static final int VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT = (1 << 13);
> + }
I'd prefer an enum instead of these (ugly) constants.
As a side node, these constants are useless since the
ListAllDomainsFlags is not public.
> /**
> * Get the version of a connection.
> *
> @@ -758,6 +781,29 @@ public class Connect {
> }
>
> /**
> + * Lists a possibly filtered list of all the domains.
> + *
> + * @param flags bitwise-OR of ListAllDomainsFlags
> + *
> + * @return and array of the IDs of the active domains
> + * @throws LibvirtException
> + */
> + public Domain[] listAllDomains(int flags) throws LibvirtException {
> + PointerByReference domainsRef = new PointerByReference();
> + int ret = libvirt.virConnectListAllDomains(VCP, domainsRef, flags);
> + processError(ret);
> +
> + Pointer[] pointers = domainsRef.getValue().getPointerArray(0);
> + Domain[] domains = new Domain[ret];
> + for (int i = 0; i < ret; i++) {
> + DomainPointer domainPtr = new DomainPointer();
> + domainPtr.setPointer(pointers[i]);
> + domains[i] = new Domain(this, domainPtr);
> + }
> + return domains;
> + }
You leak the memory of the array here.
--
Claudio
--
More information about the libvir-list
mailing list