diff options
Diffstat (limited to 'java/jvpp-stats/io/fd/jvpp/stats/future')
3 files changed, 40 insertions, 0 deletions
diff --git a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStats.java b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStats.java index 288b556..9e0db46 100644 --- a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStats.java +++ b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStats.java @@ -16,6 +16,7 @@ package io.fd.jvpp.stats.future; +import io.fd.jvpp.stats.dto.InterfaceNamesDetailsReplyDump; import io.fd.jvpp.stats.dto.InterfaceStatisticsDetailsReplyDump; /** @@ -25,4 +26,7 @@ public interface FutureJVppStats extends io.fd.jvpp.stats.future.FutureJVppInvok java.util.concurrent.CompletionStage<InterfaceStatisticsDetailsReplyDump> interfaceStatisticsDump( io.fd.jvpp.stats.dto.InterfaceStatisticsDump request); + + java.util.concurrent.CompletionStage<InterfaceNamesDetailsReplyDump> interfaceNamesDump( + io.fd.jvpp.stats.dto.InterfaceNamesDump request); } diff --git a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacade.java b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacade.java index 470a2fd..8e5e118 100644 --- a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacade.java +++ b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacade.java @@ -17,7 +17,10 @@ package io.fd.jvpp.stats.future; import io.fd.jvpp.notification.EventRegistry; +import io.fd.jvpp.stats.dto.InterfaceNamesDetailsReplyDump; +import io.fd.jvpp.stats.dto.InterfaceNamesDump; import io.fd.jvpp.stats.dto.InterfaceStatisticsDetailsReplyDump; +import java.util.concurrent.CompletionStage; /** * <p>Implementation of FutureJVpp based on AbstractFutureJVppInvoker @@ -47,6 +50,11 @@ public class FutureJVppStatsFacade extends io.fd.jvpp.stats.future.AbstractFutur } @Override + public CompletionStage<InterfaceNamesDetailsReplyDump> interfaceNamesDump(final InterfaceNamesDump request) { + return send(request, new InterfaceNamesDetailsReplyDump()); + } + + @Override public EventRegistry getEventRegistry() { return null; } diff --git a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacadeCallback.java b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacadeCallback.java index a215b89..1c9dfb5 100644 --- a/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacadeCallback.java +++ b/java/jvpp-stats/io/fd/jvpp/stats/future/FutureJVppStatsFacadeCallback.java @@ -16,6 +16,7 @@ package io.fd.jvpp.stats.future; +import io.fd.jvpp.stats.dto.InterfaceNamesDetailsReplyDump; import io.fd.jvpp.stats.dto.InterfaceStatisticsDetailsReplyDump; /** @@ -78,4 +79,31 @@ public final class FutureJVppStatsFacadeCallback implements io.fd.jvpp.stats.cal completableFuture.getReplyDump().interfaceStatisticsDetails = reply; } } + + @Override + @SuppressWarnings("unchecked") + public void onInterfaceNamesDetails(final io.fd.jvpp.stats.dto.InterfaceNamesDetails reply) { + io.fd.jvpp.stats.future.AbstractFutureJVppInvoker.CompletableDumpFuture<InterfaceNamesDetailsReplyDump> + completableFuture; + final int replyId = reply.context; + if (LOG.isLoggable(java.util.logging.Level.FINE)) { + LOG.fine(String.format("Received InterfaceNamesDetails event message: %s", reply)); + } + synchronized (requests) { + completableFuture = + (io.fd.jvpp.stats.future.AbstractFutureJVppInvoker.CompletableDumpFuture<InterfaceNamesDetailsReplyDump>) requests + .get(replyId); + + if (completableFuture == null) { + // reply received before writer created future, + // create new future, and put into map to notify sender that reply is already received, + // following details replies will add information to this future + completableFuture = + new io.fd.jvpp.stats.future.AbstractFutureJVppInvoker.CompletableDumpFuture<>(replyId, + new InterfaceNamesDetailsReplyDump()); + requests.put(replyId, completableFuture); + } + completableFuture.getReplyDump().interfaceNamesDetails = reply; + } + } } |