From fd32c70dc39fb304d1be7ea155410386414d677d Mon Sep 17 00:00:00 2001 From: Tibor Král Date: Mon, 15 Apr 2019 13:23:34 +0200 Subject: Refactoring of DUMP function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia131939a448e28360e8ba9970e8be8003b55f851 Signed-off-by: Tibor Král Signed-off-by: Michal Cmarada --- .../io/fd/jvpp/stats/JVppClientStatsImpl.java | 60 ++++++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) (limited to 'java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java') diff --git a/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java b/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java index 821373a..32d2345 100644 --- a/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java +++ b/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java @@ -19,20 +19,17 @@ package io.fd.jvpp.stats; import static io.fd.jvpp.NativeLibraryLoader.loadLibrary; import static java.lang.String.format; +import io.fd.jvpp.stats.dto.InterfaceStatistics; import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.nio.file.attribute.PosixFilePermission; -import java.nio.file.attribute.PosixFilePermissions; -import java.util.Set; +import java.util.Arrays; +import java.util.List; +import java.util.LinkedList; import java.util.logging.Level; import java.util.logging.Logger; -import io.fd.jvpp.stats.dto.InterfaceStatistics; +public class JVppClientStatsImpl implements AutoCloseable { -public class JVppClientStatsImpl { + private boolean connected; private static final Logger LOG = Logger.getLogger(JVppClientStatsImpl.class.getName()); @@ -46,5 +43,48 @@ public class JVppClientStatsImpl { } } - public static native InterfaceStatistics[] interfaceStatisticsDump(); + private static native InterfaceStatistics[] interfaceStatisticsDump(); + private static native int statSegmentConnect(); + private static native void statSegmentDisconnect(); + + public synchronized List getInterfaceStatistics() { + if (!this.connected) { + LOG.severe("Unable to dump statistics. Client isn't connected. Try reconnecting."); + return null; + } + InterfaceStatistics[] statDump = interfaceStatisticsDump(); + List statistics = new LinkedList(); + if (statDump != null) { + statistics = Arrays.asList(statDump); + } + return statistics; + } + + public JVppClientStatsImpl() { + connectClient(); + } + + public boolean reconnect() { + connectClient(); + return this.connected; + } + + private void connectClient() { + if (!this.connected) { + if (statSegmentConnect() == 0) { + this.connected = true; + } + } + } + + public boolean isConnected() { + return connected; + } + + public void close() { + if (this.connected) { + statSegmentDisconnect(); + this.connected = false; + } + } } -- cgit 1.2.3-korg