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 ++++++++++++++++++---- .../io/fd/jvpp/stats/test/JvppStatsApiTest.java | 13 ++--- 2 files changed, 57 insertions(+), 16 deletions(-) (limited to 'java/jvpp-stats/io') 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; + } + } } diff --git a/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java b/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java index 5077509..2f9cf9f 100644 --- a/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java +++ b/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java @@ -18,26 +18,27 @@ package io.fd.jvpp.stats.test; import io.fd.jvpp.stats.JVppClientStatsImpl; import io.fd.jvpp.stats.dto.InterfaceStatistics; +import java.util.List; class JvppStatsApiTest { public static void main(String[] args) { JVppClientStatsImpl myImpl = new JVppClientStatsImpl(); - InterfaceStatistics[] statistics = myImpl.interfaceStatisticsDump(); + List statistics = myImpl.getInterfaceStatistics(); if (statistics == null) { System.out.println("in java - dump was null"); - return; + System.exit(1); } - if (statistics.length == 0) { + if (statistics.size() == 0) { System.out.println("in java - dump was empty"); - return; + System.exit(2); } - for (int i = 0; i < statistics.length; i++) { - System.out.println(statistics[i].toString()); + for (InterfaceStatistics stat: statistics) { + System.out.println(stat.toString()); } } } -- cgit 1.2.3-korg