diff options
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java')
-rw-r--r-- | v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java index 558e6ba41..62f69d646 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/ClassifySessionReader.java @@ -19,7 +19,6 @@ package io.fd.honeycomb.translate.v3po.vppclassifier; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; -import static io.fd.honeycomb.translate.v3po.interfacesstate.InterfaceUtils.printHexBinary; import com.google.common.base.Optional; import com.google.common.primitives.UnsignedInts; @@ -27,8 +26,9 @@ import io.fd.honeycomb.translate.MappingContext; import io.fd.honeycomb.translate.read.ReadContext; import io.fd.honeycomb.translate.read.ReadFailedException; import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer; +import io.fd.honeycomb.translate.v3po.interfacesstate.InterfaceDataTranslator; import io.fd.honeycomb.translate.v3po.util.FutureJVppCustomizer; -import io.fd.honeycomb.translate.v3po.util.TranslateUtils; +import io.fd.honeycomb.translate.v3po.util.JvppReplyConsumer; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -61,7 +61,8 @@ import org.slf4j.LoggerFactory; * class table verbose} command. */ public class ClassifySessionReader extends FutureJVppCustomizer - implements ListReaderCustomizer<ClassifySession, ClassifySessionKey, ClassifySessionBuilder>, VppNodeReader { + implements ListReaderCustomizer<ClassifySession, ClassifySessionKey, ClassifySessionBuilder>, + InterfaceDataTranslator, VppNodeReader, JvppReplyConsumer { private static final Logger LOG = LoggerFactory.getLogger(ClassifySessionReader.class); static final String CACHE_KEY = ClassifySessionReader.class.getName(); @@ -89,7 +90,7 @@ public class ClassifySessionReader extends FutureJVppCustomizer @Override public void readCurrentAttributes(@Nonnull final InstanceIdentifier<ClassifySession> id, @Nonnull final ClassifySessionBuilder builder, @Nonnull final ReadContext ctx) - throws ReadFailedException { + throws ReadFailedException { LOG.debug("Reading attributes for classify session: {}", id); final ClassifySessionKey key = id.firstKeyOf(ClassifySession.class); @@ -98,12 +99,13 @@ public class ClassifySessionReader extends FutureJVppCustomizer final ClassifySessionDetailsReplyDump classifySessionDump = dumpClassifySessions(id, ctx); final byte[] match = DatatypeConverter.parseHexBinary(key.getMatch().getValue().replace(":", "")); final Optional<ClassifySessionDetails> classifySession = - findClassifySessionDetailsByMatch(classifySessionDump, match); + findClassifySessionDetailsByMatch(classifySessionDump, match); if (classifySession.isPresent()) { final ClassifySessionDetails detail = classifySession.get(); builder.setHitNext( - readVppNode(detail.tableId, detail.hitNextIndex, classifyTableContext, ctx.getMappingContext(), LOG).get()); + readVppNode(detail.tableId, detail.hitNextIndex, classifyTableContext, ctx.getMappingContext(), LOG) + .get()); if (detail.opaqueIndex != ~0) { // value is specified: builder.setOpaqueIndex(readOpaqueIndex(detail.tableId, detail.opaqueIndex, ctx.getMappingContext())); @@ -133,14 +135,14 @@ public class ClassifySessionReader extends FutureJVppCustomizer @Nullable private ClassifySessionDetailsReplyDump dumpClassifySessions(@Nonnull final InstanceIdentifier<?> id, @Nonnull final ReadContext ctx) - throws ReadFailedException { + throws ReadFailedException { final ClassifyTableKey tableKey = id.firstKeyOf(ClassifyTable.class); checkArgument(tableKey != null, "could not find ClassifyTable key in {}", id); final String cacheKey = CACHE_KEY + tableKey; ClassifySessionDetailsReplyDump classifySessionDump = - (ClassifySessionDetailsReplyDump) ctx.getModificationCache().get(cacheKey); + (ClassifySessionDetailsReplyDump) ctx.getModificationCache().get(cacheKey); if (classifySessionDump != null) { LOG.debug("Classify sessions is present in cache: {}", cacheKey); return classifySessionDump; @@ -148,16 +150,16 @@ public class ClassifySessionReader extends FutureJVppCustomizer final String tableName = tableKey.getName(); checkState(classifyTableContext.containsTable(tableName, ctx.getMappingContext()), - "Reading classify sessions for table {}, but table index could not be found in the classify table context", - tableName); + "Reading classify sessions for table {}, but table index could not be found in the classify table context", + tableName); final int tableId = classifyTableContext.getTableIndex(tableName, ctx.getMappingContext()); LOG.debug("Dumping classify sessions for classify table id={}", tableId); try { final ClassifySessionDump dumpRequest = new ClassifySessionDump(); dumpRequest.tableId = tableId; - classifySessionDump = TranslateUtils - .getReplyForRead(getFutureJVpp().classifySessionDump(dumpRequest).toCompletableFuture(), id); + classifySessionDump = + getReplyForRead(getFutureJVpp().classifySessionDump(dumpRequest).toCompletableFuture(), id); if (classifySessionDump != null) { // update the cache: @@ -171,19 +173,19 @@ public class ClassifySessionReader extends FutureJVppCustomizer } private static Optional<ClassifySessionDetails> findClassifySessionDetailsByMatch( - @Nullable final ClassifySessionDetailsReplyDump classifySessionDump, @Nonnull final byte[] match) { + @Nullable final ClassifySessionDetailsReplyDump classifySessionDump, @Nonnull final byte[] match) { if (classifySessionDump != null && classifySessionDump.classifySessionDetails != null) { final List<ClassifySessionDetails> details = classifySessionDump.classifySessionDetails; final List<ClassifySessionDetails> filteredSessions = details.stream() - .filter(singleDetail -> Arrays.equals(singleDetail.match, match)).collect(Collectors.toList()); + .filter(singleDetail -> Arrays.equals(singleDetail.match, match)).collect(Collectors.toList()); if (filteredSessions.isEmpty()) { return Optional.absent(); } else if (filteredSessions.size() == 1) { return Optional.of(filteredSessions.get(0)); } else { throw new IllegalStateException(String.format( - "Found %d classify sessions witch given match. Single session expected.", - filteredSessions.size())); + "Found %d classify sessions witch given match. Single session expected.", + filteredSessions.size())); } } return Optional.absent(); @@ -198,8 +200,8 @@ public class ClassifySessionReader extends FutureJVppCustomizer final ClassifySessionDetailsReplyDump classifySessionDump = dumpClassifySessions(id, ctx); if (classifySessionDump != null && classifySessionDump.classifySessionDetails != null) { return classifySessionDump.classifySessionDetails.stream() - .map(detail -> new ClassifySessionKey(new HexString(printHexBinary(detail.match)))) - .collect(Collectors.toList()); + .map(detail -> new ClassifySessionKey(new HexString(printHexBinary(detail.match)))) + .collect(Collectors.toList()); } else { return Collections.emptyList(); } |