59db3318c336a6a13261444c19fd5ca4f55a7ec5
[onosfw.git] /
1 /*\r
2  * Copyright 2015 Open Networking Laboratory\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 package org.onosproject.bgpio.types;\r
17 \r
18 import java.util.Objects;\r
19 \r
20 import org.jboss.netty.buffer.ChannelBuffer;\r
21 import org.slf4j.Logger;\r
22 import org.slf4j.LoggerFactory;\r
23 \r
24 import com.google.common.base.MoreObjects;\r
25 \r
26 /**\r
27  * Provides FourOctetAsNumCapabilityTlv Capability Tlv.\r
28  */\r
29 public class FourOctetAsNumCapabilityTlv implements BgpValueType {\r
30 \r
31     /**\r
32      * support to indicate its support for four-octet AS numbers -CAPABILITY TLV format.\r
33      */\r
34     protected static final Logger log = LoggerFactory\r
35             .getLogger(FourOctetAsNumCapabilityTlv.class);\r
36 \r
37     public static final byte TYPE = 65;\r
38     public static final byte LENGTH = 4;\r
39 \r
40     private final int rawValue;\r
41 \r
42     /**\r
43      * constructor to initialize rawValue.\r
44      * @param rawValue FourOctetAsNumCapabilityTlv\r
45      */\r
46     public FourOctetAsNumCapabilityTlv(int rawValue) {\r
47         this.rawValue = rawValue;\r
48     }\r
49 \r
50     /**\r
51      * constructor to initialize raw.\r
52      * @param raw AS number\r
53      * @return object of FourOctetAsNumCapabilityTlv\r
54      */\r
55     public static FourOctetAsNumCapabilityTlv of(final int raw) {\r
56         return new FourOctetAsNumCapabilityTlv(raw);\r
57     }\r
58 \r
59     /**\r
60      * Returns value of TLV.\r
61      * @return int value of rawValue\r
62      */\r
63     public int getInt() {\r
64         return rawValue;\r
65     }\r
66 \r
67     @Override\r
68     public short getType() {\r
69         return TYPE;\r
70     }\r
71 \r
72     @Override\r
73     public int hashCode() {\r
74         return Objects.hash(rawValue);\r
75     }\r
76 \r
77     @Override\r
78     public boolean equals(Object obj) {\r
79         if (this == obj) {\r
80             return true;\r
81         }\r
82         if (obj instanceof FourOctetAsNumCapabilityTlv) {\r
83             FourOctetAsNumCapabilityTlv other = (FourOctetAsNumCapabilityTlv) obj;\r
84             return Objects.equals(rawValue, other.rawValue);\r
85         }\r
86         return false;\r
87     }\r
88 \r
89     @Override\r
90     public int write(ChannelBuffer cb) {\r
91         int iLenStartIndex = cb.writerIndex();\r
92         cb.writeByte(TYPE);\r
93         cb.writeByte(LENGTH);\r
94         cb.writeInt(rawValue);\r
95         return cb.writerIndex() - iLenStartIndex;\r
96     }\r
97 \r
98     /**\r
99      * Reads the channel buffer and returns object of FourOctetAsNumCapabilityTlv.\r
100      * @param cb type of channel buffer\r
101      * @return object of FourOctetAsNumCapabilityTlv\r
102      */\r
103     public static FourOctetAsNumCapabilityTlv read(ChannelBuffer cb) {\r
104         return FourOctetAsNumCapabilityTlv.of(cb.readInt());\r
105     }\r
106 \r
107     @Override\r
108     public String toString() {\r
109         return MoreObjects.toStringHelper(getClass())\r
110                 .add("Type", TYPE)\r
111                 .add("Length", LENGTH)\r
112                 .add("Value", rawValue).toString();\r
113     }\r
114 \r
115     @Override\r
116     public int compareTo(Object o) {\r
117         // TODO Auto-generated method stub\r
118         return 0;\r
119     }\r
120 }\r