Hi. At Sat, 25 Oct 2014 16:25:48 -0700, Cédric Bosdonnat wrote: > > From: Cédric Bosdonnat <cedric.bosdonnat@xxxxxxx> > > --- > 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 -- -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list