[libvirt] [PATCH 04/12] Prepare to define proper domain event callback support.

Claudio Bley cbley at av-test.de
Thu Jan 17 15:19:02 UTC 2013


The old wrapping was of no use since the only thing you could
register was a "generic" callback.

At runtime,you would have to provide a real callback function matching
the prototype of the native callback type.

Trying to use a generic callback instead quickly leads to failure or
JVM crashes.

Thus, it's safe to remove those methods now.

Signed-off-by: Claudio Bley <cbley at av-test.de>
---
 src/main/java/org/libvirt/Connect.java     |   24 ------------------------
 src/main/java/org/libvirt/jna/Libvirt.java |   22 +++++++++++++++++-----
 2 files changed, 17 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java
index eecad06..b26fca4 100644
--- a/src/main/java/org/libvirt/Connect.java
+++ b/src/main/java/org/libvirt/Connect.java
@@ -318,30 +318,6 @@ public class Connect {
     }
 
     /**
-     * Adds a callback to receive notifications of arbitrary domain events
-     * occurring on a domain.
-     *
-     * @see <a
-     *      href="http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny">Libvirt
-     *      Documentation</a>
-     * @param domain
-     *            option domain to limit the events monitored
-     * @param eventId
-     *            the events to monitor
-     * @param cb
-     *            the callback function to use.
-     * @return The return value from this method is a positive integer
-     *         identifier for the callback.
-     * @throws LibvirtException on failure
-     */
-    public int domainEventRegisterAny(Domain domain, int eventId, Libvirt.VirConnectDomainEventGenericCallback cb)
-            throws LibvirtException {
-        DomainPointer ptr = domain == null ? null : domain.VDP;
-        int returnValue = libvirt.virConnectDomainEventRegisterAny(VCP, ptr, eventId, cb, null, null);
-        return processError(returnValue);
-    }
-
-    /**
      * Registers a default event implementation based on the poll()
      * system call.
      * <p>
diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java
index 69ec221..29db556 100644
--- a/src/main/java/org/libvirt/jna/Libvirt.java
+++ b/src/main/java/org/libvirt/jna/Libvirt.java
@@ -65,6 +65,19 @@ public interface Libvirt extends Library {
     }
 
     /**
+     * Domain Event Callbacks
+     */
+
+    /**
+     * Common Event Callback super interface.
+     *
+     * All domain event callbacks extend this interface.
+     *
+     * @see #virConnectDomainEventRegisterAny
+     */
+    interface VirDomainEventCallback extends Callback {}
+
+    /**
      * Error callback
      */
     interface VirErrorCallback extends Callback {
@@ -93,10 +106,6 @@ public interface Libvirt extends Library {
         void freeCallback(Pointer opaque) ;
     }
 
-    interface VirConnectDomainEventGenericCallback extends Callback {
-        void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, Pointer opaque) ;
-    }
-
     Libvirt INSTANCE = (Libvirt) Native.loadLibrary("virt", Libvirt.class);
 
     // Constants we need
@@ -117,7 +126,10 @@ public interface Libvirt extends Library {
     int virConnCopyLastError(ConnectionPointer virConnectPtr, virError to);
     int virConnectClose(ConnectionPointer virConnectPtr);
     int virConnectCompareCPU(ConnectionPointer virConnectPtr, String xmlDesc, int flags);
-    int virConnectDomainEventRegisterAny(ConnectionPointer virConnectPtr, DomainPointer virDomainPtr, int eventID, Libvirt.VirConnectDomainEventGenericCallback cb, Pointer opaque, Libvirt.VirFreeCallback freecb);
+
+    // Register Domain Event Callbacks
+    int virConnectDomainEventRegisterAny(ConnectionPointer virConnectPtr, DomainPointer virDomainPtr, int eventID, VirDomainEventCallback cb, Pointer opaque, Libvirt.VirFreeCallback freecb);
+
     int virConnectDomainEventDeregisterAny(ConnectionPointer virConnectPtr, int callbackID) ;
     void virConnSetErrorFunc(ConnectionPointer virConnectPtr, Pointer userData, VirErrorCallback callback);
     int virConnectIsAlive(ConnectionPointer virConnectPtr);
-- 
1.7.9.5




More information about the libvir-list mailing list