diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2016-12-01 18:15:52 +0100 |
---|---|---|
committer | Jan Srnicek <jsrnicek@cisco.com> | 2016-12-01 18:16:47 +0100 |
commit | 32aa07e5517fba7f78ae79d2ba83b56f72a53293 (patch) | |
tree | 26256f30f2dc5c3521403ef3fcd2e038b2f9bca6 /vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java | |
parent | 9c9935c83ce9869ca36cbde7865423ef02f19db8 (diff) |
HONEYCOMB-58 - Routing Plugin Structure
Read/Write support for ipv4/6 static routes.
Restriction due to vpp implementation described
in readme.
Change-Id: I328f406a9b7cb8781f8becf98eca293cebe66859
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java')
-rw-r--r-- | vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java index 393df0898..5e0eea71b 100644 --- a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java +++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/NamingContext.java @@ -128,6 +128,17 @@ public final class NamingContext implements AutoCloseable { mappingContext.put(mappingIid, new MappingBuilder().setIndex(index).setName(name).build()); } + /** + * Add mapping to current context with next available index. + * Suitable for learned data mappings + * + * @param name name of a mapped item + * @param mappingContext mapping context providing context data for current transaction + */ + public synchronized void addName(final String name, final MappingContext mappingContext) { + addName(getNextAvailableIndex(mappingContext), name, mappingContext); + } + private KeyedInstanceIdentifier<Mapping, MappingKey> getMappingIid(final String name) { return namingContextIid.child(Mappings.class).child(Mapping.class, new MappingKey(name)); } @@ -172,6 +183,25 @@ public final class NamingContext implements AutoCloseable { return artificialNamePrefix + index; } + /** + * Returns next available index for mapping + */ + private int getNextAvailableIndex(final MappingContext mappingContext) { + final Optional<Mappings> read = mappingContext.read(namingContextIid.child(Mappings.class)); + + if (!read.isPresent()) { + return 0; + } + + return read.get().getMapping() + .stream() + .mapToInt(Mapping::getIndex) + // do not use i++(need increase before, not after + .map(i -> ++i) + .max() + .orElse(0); + } + @Override public void close() throws Exception { /// Not removing the mapping from backing storage |