[libvirt] [libvirt-java] [PATCH 38/65] Implement Connect.setKeepAlive

Claudio Bley cbley at av-test.de
Thu Feb 13 15:22:46 UTC 2014


This wraps the virConnectSetKeepAlive libvirt function available since
version 0.9.8.

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

diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java
index d4868f0..0a45ac8 100644
--- a/src/main/java/org/libvirt/Connect.java
+++ b/src/main/java/org/libvirt/Connect.java
@@ -1395,4 +1395,38 @@ public class Connect {
     public boolean isAlive() throws LibvirtException {
         return (1 == processError(libvirt.virConnectIsAlive(VCP)));
     }
+
+    /**
+     * Start sending keepalive messages.
+     *
+     * After {@code interval} seconds of inactivity, consider the
+     * connection to be broken when no response is received after
+     * {@code count} keepalive messages sent in a row.
+     * <p>
+     * In other words, sending {@code count + 1} keepalive message
+     * results in closing the connection.
+     * <p>
+     * When interval is <= 0, no keepalive messages will be sent.
+     * <p>
+     * When count is 0, the connection will be automatically closed after
+     * interval seconds of inactivity without sending any keepalive
+     * messages.
+     * <p>
+     * <em>Note</em>: client has to implement and run event loop to be
+     * able to use keepalive messages. Failure to do so may result in
+     * connections being closed unexpectedly.
+     * <p>
+     * <em>Note</em>: This API function controls only keepalive messages sent by
+     * the client. If the server is configured to use keepalive you still
+     * need to run the event loop to respond to them, even if you disable
+     * keepalives by this function.
+     *
+     * @param interval  number of seconds of inactivity before a keepalive
+     *                  message is sent
+     * @param count     number of messages that can be sent in a row
+     * @return {@code true} when successful, {@code false} otherwise.
+     */
+    public boolean setKeepAlive(int interval, int count) throws LibvirtException {
+        return (0 == processError(libvirt.virConnectSetKeepAlive(VCP, interval, count)));
+    }
 }
diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java
index 69dabe2..2bc5b6b 100644
--- a/src/main/java/org/libvirt/jna/Libvirt.java
+++ b/src/main/java/org/libvirt/jna/Libvirt.java
@@ -162,6 +162,7 @@ public interface Libvirt extends Library {
     ConnectionPointer virConnectOpen(String name);
     ConnectionPointer virConnectOpenAuth(String name, virConnectAuth auth, int flags);
     ConnectionPointer virConnectOpenReadOnly(String name);
+    int virConnectSetKeepAlive(ConnectionPointer virConnectPtr, int interval, int count);
 
     /**
      * @deprecated as of libvirt 0.6.0, all errors reported in the
-- 
1.7.9.5




More information about the libvir-list mailing list