blob: 8a03833bb9426302cdd169a7d91f6a22741a9ad9 [file] [log] [blame]
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05301/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.pcepio.protocol;
18
19import java.util.LinkedList;
20
21import org.jboss.netty.buffer.ChannelBuffer;
22import org.onosproject.pcepio.exceptions.PcepParseException;
23import org.onosproject.pcepio.types.PcepObjectHeader;
24import org.onosproject.pcepio.types.PcepValueType;
25
26/**
27 * Abstraction of an entity providing PCEP LSP Object.
28 */
29public interface PcepLspObject {
30
31 /**
32 * Returns PlspId of LSP Object.
33 *
34 * @return PlspId of LSP Object
35 */
36 int getPlspId();
37
38 /**
39 * Sets PlspId with specified value.
40 *
41 * @param value PlspId
42 */
43 void setPlspId(int value);
44
45 /**
46 * Returns O flag in LSP Object.
47 *
48 * @return O flag in LSP Object
49 */
50 byte getOFlag();
51
52 /**
53 * Sets O flag with specified value.
54 *
55 * @param value O flag
56 */
57 void setOFlag(byte value);
58
59 /**
60 * Returns A flag in LSP Object.
61 *
62 * @return A flag in LSP Object
63 */
64 boolean getAFlag();
65
66 /**
67 * Sets A flag with specified value.
68 *
69 * @param value A flag
70 */
71 void setAFlag(boolean value);
72
73 /**
74 * Returns R flag in LSP Object.
75 *
76 * @return R flag in LSP Object
77 */
78 boolean getRFlag();
79
80 /**
81 * Sets R flag with specified value.
82 *
83 * @param value R flag
84 */
85 void setRFlag(boolean value);
86
87 /**
88 * Returns S flag in LSP Object.
89 *
90 * @return S flag in LSP Object
91 */
92 boolean getSFlag();
93
94 /**
95 * Sets S flag with specified value.
96 *
97 * @param value S flag
98 */
99 void setSFlag(boolean value);
100
101 /**
102 * Returns D flag in LSP Object.
103 *
104 * @return D flag in LSP Object
105 */
106 boolean getDFlag();
107
108 /**
109 * Sets D flag with specified value.
110 *
111 * @param value D flag
112 */
113 void setDFlag(boolean value);
114
115 /**
116 * Returns list of Optional Tlvs in LSP Object.
117 *
118 * @return list of Optional Tlvs
119 */
120 LinkedList<PcepValueType> getOptionalTlv();
121
122 /**
123 * Sets list of Optional Tlvs in LSP Object.
124 *
125 * @param llOptionalTlv list of Optional Tlvs
126 */
127 void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
128
129 /**
130 * Prints attributes of LSP object.
131 */
132 void print();
133
134 /**
135 * Writes the LSP Object into channel buffer.
136 *
137 * @param bb channel buffer
138 * @return Returns the writerIndex of this buffer
139 * @throws PcepParseException while writing LSP object into Channel Buffer.
140 */
141 int write(ChannelBuffer bb) throws PcepParseException;
142
143 /**
144 * Builder interface with get and set functions to build LSP object.
145 */
146 public interface Builder {
147
148 /**
149 * Builds LSP Object.
150 *
151 * @return LSP Object
152 */
153 PcepLspObject build();
154
155 /**
156 * Returns LSP object header.
157 *
158 * @return LSP object header
159 */
160 PcepObjectHeader getLspObjHeader();
161
162 /**
163 * Sets LSP object header and returns its builder.
164 *
165 * @param obj LSP object header
166 * @return Builder by setting LSP object header
167 */
168 Builder setLspObjHeader(PcepObjectHeader obj);
169
170 /**
171 * Returns PlspId of LSP Object.
172 *
173 * @return PlspId of LSP Object
174 */
175 int getPlspId();
176
177 /**
178 * Sets PlspId with specific value and return its builder.
179 *
180 * @param value PlspId
181 * @return Builder by setting PlspId
182 */
183 Builder setPlspId(int value);
184
185 /**
186 * Returns O flag in LSP Object.
187 *
188 * @return O flag in LSP Object
189 */
190 byte getOFlag();
191
192 /**
193 * Sets O flag with specific value and return its builder.
194 *
195 * @param value O flag
196 * @return Builder by setting O flag
197 */
198 Builder setOFlag(byte value);
199
200 /**
201 * Returns A flag in LSP Object.
202 *
203 * @return A flag in LSP Object
204 */
205 boolean getAFlag();
206
207 /**
208 * Sets A flag with specific value and return its builder.
209 *
210 * @param value A flag
211 * @return Builder by setting A flag
212 */
213 Builder setAFlag(boolean value);
214
215 /**
216 * Returns A flag in LSP Object.
217 *
218 * @return A flag in LSP Object
219 */
220 boolean getRFlag();
221
222 /**
223 * Sets R flag with specific value and return its builder.
224 *
225 * @param value r flag
226 * @return Builder by setting r flag
227 */
228 Builder setRFlag(boolean value);
229
230 /**
231 * Returns S flag in LSP Object.
232 *
233 * @return S flag in LSP Object
234 */
235 boolean getSFlag();
236
237 /**
238 * Sets S flag with specific value and return its builder.
239 *
240 * @param value s flag
241 * @return Builder by setting S flag
242 */
243 Builder setSFlag(boolean value);
244
245 /**
246 * Returns D flag in LSP Object.
247 *
248 * @return D flag in LSP Object
249 */
250 boolean getDFlag();
251
252 /**
253 * Sets D flag with specific value and return its builder.
254 *
255 * @param value D flag
256 * @return Builder by setting D flag
257 */
258 Builder setDFlag(boolean value);
259
260 /**
261 * Returns list of Optional Tlvs in LSP Object.
262 *
263 * @return list of Optional Tlvs in LSP Object
264 */
265 LinkedList<PcepValueType> getOptionalTlv();
266
267 /**
268 * Sets list of Optional Tlvs and return its builder.
269 *
270 * @param llOptionalTlv list of Optional Tlvs
271 * @return Builder by setting list of Optional Tlvs
272 */
273 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
274
275 /**
276 * Sets P flag in LSP object header and returns its builder.
277 *
278 * @param value boolean value to set P flag
279 * @return Builder by setting P flag
280 */
281 Builder setPFlag(boolean value);
282
283 /**
284 * Sets I flag in LSP object header and returns its builder.
285 *
286 * @param value boolean value to set I flag
287 * @return Builder by setting I flag
288 */
289 Builder setIFlag(boolean value);
290 }
291}