This wraps the virConnectSetKeepAlive libvirt function available since
version 0.9.8.
Signed-off-by: Claudio Bley <cbley(a)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