From 5fd63301429dfc0ff9dc5d1cfc73eee1d736eabd Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sun, 5 Jan 2020 11:12:24 +0100 Subject: [PATCH] Minimize linkstate use of ByteBufWriteUtils Most of the usage of ByteBufWriteUtils can be replaced by ByteBufUtils or direct interaction with ByteBuf. Change-Id: I6d381f30c99b4a6f5d6ff5723385df6aa7474cc2 Signed-off-by: Robert Varga --- .../linkstate/impl/tlvs/AreaIdTlvParser.java | 3 +- .../linkstate/impl/tlvs/AsNumTlvParser.java | 3 +- .../impl/tlvs/DomainIdTlvParser.java | 3 +- .../linkstate/impl/tlvs/LinkIdTlvParser.java | 55 +++++++++++-------- .../impl/tlvs/MemAsNumTlvParser.java | 3 +- .../impl/tlvs/MultiTopoIdTlvParser.java | 13 ++--- .../impl/tlvs/OspfRouteTlvParser.java | 8 +-- .../impl/tlvs/RouterIdTlvParser.java | 10 ++-- .../linkstate/spi/AbstractNlriTypeCodec.java | 15 +++-- .../linkstate/spi/AbstractTeLspNlriCodec.java | 18 +++--- 10 files changed, 65 insertions(+), 66 deletions(-) diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AreaIdTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AreaIdTlvParser.java index d42e3e2707..f1fd8b452e 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AreaIdTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AreaIdTlvParser.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.AreaIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.linkstate.object.type.node._case.NodeDescriptors; import org.opendaylight.yangtools.yang.common.QName; @@ -23,7 +22,7 @@ public final class AreaIdTlvParser implements LinkstateTlvParser @Override public void serializeTlvBody(final AreaIdentifier tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedInt(tlv.getValue(), body); + ByteBufUtils.write(body, tlv.getValue()); } @Override diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AsNumTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AsNumTlvParser.java index b323d2fd7f..a013e765af 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AsNumTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/AsNumTlvParser.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.linkstate.object.type.node._case.NodeDescriptors; import org.opendaylight.yangtools.yang.common.QName; @@ -23,7 +22,7 @@ public final class AsNumTlvParser implements LinkstateTlvParser, @Override public void serializeTlvBody(final AsNumber tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedInt(tlv.getValue(), body); + ByteBufUtils.write(body, tlv.getValue()); } @Override diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/DomainIdTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/DomainIdTlvParser.java index 8b22184ef0..248da4231e 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/DomainIdTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/DomainIdTlvParser.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.DomainIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.linkstate.object.type.node._case.NodeDescriptors; import org.opendaylight.yangtools.yang.common.QName; @@ -23,7 +22,7 @@ public final class DomainIdTlvParser implements LinkstateTlvParser, LinkstateTlvParser { - private static final int LINK_LR_IDENTIFIERS = 258; @Override public void serializeTlvBody(final LinkLrIdentifiers tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedInt(tlv.getLinkLocalIdentifier(), body); - ByteBufWriteUtil.writeUnsignedInt(tlv.getLinkRemoteIdentifier(), body); + ByteBufUtils.writeOrZero(body, tlv.getLinkLocalIdentifier()); + ByteBufUtils.writeOrZero(body, tlv.getLinkRemoteIdentifier()); } @Override public LinkLrIdentifiers parseTlvBody(final ByteBuf value) { - final Uint32 localId = Uint32.valueOf(value.readUnsignedInt()); - final Uint32 remoteId = Uint32.valueOf(value.readUnsignedInt()); - return new LinkLrIdentifiers() { - @Override - public Class implementedInterface() { - return LinkLrIdentifiers.class; - } - - @Override - public Uint32 getLinkRemoteIdentifier() { - return remoteId; - } - - @Override - public Uint32 getLinkLocalIdentifier() { - return localId; - } - }; + final Uint32 localId = ByteBufUtils.readUint32(value); + final Uint32 remoteId = ByteBufUtils.readUint32(value); + return new AnonymousLinkLrIdentifiers(localId, remoteId); } @Override @@ -56,4 +42,29 @@ public final class LinkIdTlvParser implements LinkstateTlvParser.LinkstateTlvSer public int getType() { return LINK_LR_IDENTIFIERS; } + + private static final class AnonymousLinkLrIdentifiers implements LinkLrIdentifiers { + private final Uint32 localId; + private final Uint32 remoteId; + + AnonymousLinkLrIdentifiers(final Uint32 localId, final Uint32 remoteId) { + this.localId = requireNonNull(localId); + this.remoteId = requireNonNull(remoteId); + } + + @Override + public Class implementedInterface() { + return LinkLrIdentifiers.class; + } + + @Override + public Uint32 getLinkRemoteIdentifier() { + return remoteId; + } + + @Override + public Uint32 getLinkLocalIdentifier() { + return localId; + } + } } diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MemAsNumTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MemAsNumTlvParser.java index 38437b142a..3c377b8851 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MemAsNumTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MemAsNumTlvParser.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.epe.rev150622.EpeNodeDescriptors; import org.opendaylight.yangtools.yang.common.QName; @@ -23,7 +22,7 @@ public final class MemAsNumTlvParser implements LinkstateTlvParser, @Override public void serializeTlvBody(final AsNumber tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedInt(tlv.getValue(), body); + ByteBufUtils.write(body, tlv.getValue()); } @Override diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MultiTopoIdTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MultiTopoIdTlvParser.java index 3e29dced8b..56b1e4899c 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MultiTopoIdTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/MultiTopoIdTlvParser.java @@ -10,22 +10,21 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.TopologyIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.linkstate.object.type.link._case.LinkDescriptors; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; public final class MultiTopoIdTlvParser implements LinkstateTlvParser, LinkstateTlvParser.LinkstateTlvSerializer { - public static final QName MULTI_TOPOLOGY_ID_QNAME = QName.create(LinkDescriptors.QNAME, "multi-topology-id") .intern(); @Override public void serializeTlvBody(final TopologyIdentifier tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedShort(tlv.getValue(), body); + ByteBufUtils.write(body, tlv.getValue()); } @Override @@ -44,10 +43,8 @@ public final class MultiTopoIdTlvParser implements LinkstateTlvParser new TopologyIdentifier((Uint16) child.getValue())) + .orElse(null); } } - diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/OspfRouteTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/OspfRouteTlvParser.java index 2feab94bf7..087aaa0de9 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/OspfRouteTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/OspfRouteTlvParser.java @@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.OspfRouteType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.linkstate.object.type.prefix._case.PrefixDescriptors; import org.opendaylight.yangtools.yang.common.QName; @@ -18,15 +17,14 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; public final class OspfRouteTlvParser implements LinkstateTlvParser, LinkstateTlvParser.LinkstateTlvSerializer { + public static final QName OSPF_ROUTE_TYPE_QNAME = QName.create(PrefixDescriptors.QNAME, "ospf-route-type").intern(); + public static final NodeIdentifier OSPF_ROUTE_NID = NodeIdentifier.create(OspfRouteTlvParser.OSPF_ROUTE_TYPE_QNAME); - public static final QName OSPF_ROUTE_TYPE_QNAME = - QName.create(PrefixDescriptors.QNAME.getModule(), "ospf-route-type"); - public static final NodeIdentifier OSPF_ROUTE_NID = new NodeIdentifier(OspfRouteTlvParser.OSPF_ROUTE_TYPE_QNAME); private static final int OSPF_ROUTE_TYPE = 264; @Override public void serializeTlvBody(final OspfRouteType tlv, final ByteBuf body) { - ByteBufWriteUtil.writeUnsignedByte((short) tlv.getIntValue(), body); + body.writeByte(tlv.getIntValue()); } @Override diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/RouterIdTlvParser.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/RouterIdTlvParser.java index 543443c7bc..2b854e4849 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/RouterIdTlvParser.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/tlvs/RouterIdTlvParser.java @@ -10,7 +10,6 @@ package org.opendaylight.protocol.bgp.linkstate.impl.tlvs; import io.netty.buffer.ByteBuf; import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser; import org.opendaylight.protocol.util.ByteArray; -import org.opendaylight.protocol.util.ByteBufWriteUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.OspfInterfaceIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.isis.lan.identifier.IsIsRouterIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.isis.lan.identifier.IsIsRouterIdentifierBuilder; @@ -36,7 +35,6 @@ import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils; public final class RouterIdTlvParser implements LinkstateTlvParser, LinkstateTlvParser.LinkstateTlvSerializer { - private static final int OSPF_PSEUDONODE_ROUTER_ID_LENGTH = 8; private static final int OSPF_ROUTER_ID_LENGTH = 4; private static final int ISO_SYSTEM_ID_LENGTH = 6; @@ -51,13 +49,13 @@ public final class RouterIdTlvParser implements LinkstateTlvParser