[onos-2603] - Implements BgpLinkAttrUnRsrvdLinkBandwidth
Change-Id: I335c593c88fb63317079204ab10f8fe808901431
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
index 3e7833c..dfef8e7 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
@@ -15,7 +15,8 @@
*/
package org.onosproject.bgpio.types.attr;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Objects;
import org.jboss.netty.buffer.ChannelBuffer;
@@ -43,7 +44,7 @@
public short sType;
/* ISIS administrative group */
- private float[] maxUnResBandwidth;
+ private List<Float> maxUnResBandwidth = new ArrayList<Float>();
/**
* Constructor to initialize the values.
@@ -51,13 +52,24 @@
* @param maxUnResBandwidth Maximum Unreserved bandwidth
* @param sType returns the tag value
*/
- BgpLinkAttrUnRsrvdLinkBandwidth(float[] maxUnResBandwidth, short sType) {
- this.maxUnResBandwidth = Arrays.copyOf(maxUnResBandwidth,
- maxUnResBandwidth.length);
+ public BgpLinkAttrUnRsrvdLinkBandwidth(List<Float> maxUnResBandwidth,
+ short sType) {
+ this.maxUnResBandwidth = maxUnResBandwidth;
this.sType = sType;
}
/**
+ * Returns object of this class with specified values.
+ *
+ * @param linkPfxMetric Prefix Metric
+ * @param sType returns the tag value
+ * @return object of BgpLinkAttrUnRsrvdLinkBandwidth
+ */
+ public static BgpLinkAttrUnRsrvdLinkBandwidth of(List<Float> linkPfxMetric, short sType) {
+ return new BgpLinkAttrUnRsrvdLinkBandwidth(linkPfxMetric, sType);
+ }
+
+ /**
* Reads the BGP link attributes of Maximum link bandwidth.
*
* @param cb Channel buffer
@@ -67,7 +79,8 @@
public static BgpLinkAttrUnRsrvdLinkBandwidth read(ChannelBuffer cb,
short sType)
throws BGPParseException {
- float[] maxUnResBandwidth;
+ ArrayList<Float> maxUnResBandwidth = new ArrayList<Float>();
+ float tmp;
short lsAttrLength = cb.readShort();
if ((lsAttrLength != MAX_BANDWIDTH_LEN * NO_OF_PRIORITY)
@@ -77,12 +90,12 @@
lsAttrLength);
}
- maxUnResBandwidth = new float[NO_OF_PRIORITY];
for (int i = 0; i < NO_OF_PRIORITY; i++) {
- maxUnResBandwidth[i] = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS;
+ tmp = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS;
+ maxUnResBandwidth.add(new Float(tmp));
}
- return new BgpLinkAttrUnRsrvdLinkBandwidth(maxUnResBandwidth, sType);
+ return BgpLinkAttrUnRsrvdLinkBandwidth.of(maxUnResBandwidth, sType);
}
/**
@@ -90,7 +103,7 @@
*
* @return unreserved bandwidth.
*/
- float[] getLinkAttrUnRsrvdLinkBandwidth() {
+ public List<Float> getLinkAttrUnRsrvdLinkBandwidth() {
return maxUnResBandwidth;
}