blob: 52ff95fd53e2b8832e7aa424eb340e6800abbd58 [file] [log] [blame]
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05303 *
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 /**
Avantika-Huaweid925da82016-05-10 12:47:28 +053060 * Returns C flag in LSP Object.
61 *
62 * @return C flag in LSP Object
63 */
64 boolean getCFlag();
65
66 /**
67 * Sets C flag with specified value.
68 *
69 * @param value C flag
70 */
71 void setCFlag(boolean value);
72
73 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053074 * Returns A flag in LSP Object.
75 *
76 * @return A flag in LSP Object
77 */
78 boolean getAFlag();
79
80 /**
81 * Sets A flag with specified value.
82 *
83 * @param value A flag
84 */
85 void setAFlag(boolean value);
86
87 /**
88 * Returns R flag in LSP Object.
89 *
90 * @return R flag in LSP Object
91 */
92 boolean getRFlag();
93
94 /**
95 * Sets R flag with specified value.
96 *
97 * @param value R flag
98 */
99 void setRFlag(boolean value);
100
101 /**
102 * Returns S flag in LSP Object.
103 *
104 * @return S flag in LSP Object
105 */
106 boolean getSFlag();
107
108 /**
109 * Sets S flag with specified value.
110 *
111 * @param value S flag
112 */
113 void setSFlag(boolean value);
114
115 /**
116 * Returns D flag in LSP Object.
117 *
118 * @return D flag in LSP Object
119 */
120 boolean getDFlag();
121
122 /**
123 * Sets D flag with specified value.
124 *
125 * @param value D flag
126 */
127 void setDFlag(boolean value);
128
129 /**
130 * Returns list of Optional Tlvs in LSP Object.
131 *
132 * @return list of Optional Tlvs
133 */
134 LinkedList<PcepValueType> getOptionalTlv();
135
136 /**
137 * Sets list of Optional Tlvs in LSP Object.
138 *
139 * @param llOptionalTlv list of Optional Tlvs
140 */
141 void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
142
143 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530144 * Writes the LSP Object into channel buffer.
145 *
146 * @param bb channel buffer
147 * @return Returns the writerIndex of this buffer
148 * @throws PcepParseException while writing LSP object into Channel Buffer.
149 */
150 int write(ChannelBuffer bb) throws PcepParseException;
151
152 /**
153 * Builder interface with get and set functions to build LSP object.
154 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -0700155 interface Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530156
157 /**
158 * Builds LSP Object.
159 *
160 * @return LSP Object
161 */
162 PcepLspObject build();
163
164 /**
165 * Returns LSP object header.
166 *
167 * @return LSP object header
168 */
169 PcepObjectHeader getLspObjHeader();
170
171 /**
172 * Sets LSP object header and returns its builder.
173 *
174 * @param obj LSP object header
175 * @return Builder by setting LSP object header
176 */
177 Builder setLspObjHeader(PcepObjectHeader obj);
178
179 /**
180 * Returns PlspId of LSP Object.
181 *
182 * @return PlspId of LSP Object
183 */
184 int getPlspId();
185
186 /**
187 * Sets PlspId with specific value and return its builder.
188 *
189 * @param value PlspId
190 * @return Builder by setting PlspId
191 */
192 Builder setPlspId(int value);
193
194 /**
Avantika-Huaweid925da82016-05-10 12:47:28 +0530195 * Returns C flag in LSP Object.
196 *
197 * @return C flag in LSP Object
198 */
199 boolean getCFlag();
200
201 /**
202 * Sets C flag with specific value and return its builder.
203 *
204 * @param value C flag
205 * @return Builder by setting C flag
206 */
207 Builder setCFlag(boolean value);
208
209 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530210 * Returns O flag in LSP Object.
211 *
212 * @return O flag in LSP Object
213 */
214 byte getOFlag();
215
216 /**
217 * Sets O flag with specific value and return its builder.
218 *
219 * @param value O flag
220 * @return Builder by setting O flag
221 */
222 Builder setOFlag(byte value);
223
224 /**
225 * Returns A flag in LSP Object.
226 *
227 * @return A flag in LSP Object
228 */
229 boolean getAFlag();
230
231 /**
232 * Sets A flag with specific value and return its builder.
233 *
234 * @param value A flag
235 * @return Builder by setting A flag
236 */
237 Builder setAFlag(boolean value);
238
239 /**
240 * Returns A flag in LSP Object.
241 *
242 * @return A flag in LSP Object
243 */
244 boolean getRFlag();
245
246 /**
247 * Sets R flag with specific value and return its builder.
248 *
249 * @param value r flag
250 * @return Builder by setting r flag
251 */
252 Builder setRFlag(boolean value);
253
254 /**
255 * Returns S flag in LSP Object.
256 *
257 * @return S flag in LSP Object
258 */
259 boolean getSFlag();
260
261 /**
262 * Sets S flag with specific value and return its builder.
263 *
264 * @param value s flag
265 * @return Builder by setting S flag
266 */
267 Builder setSFlag(boolean value);
268
269 /**
270 * Returns D flag in LSP Object.
271 *
272 * @return D flag in LSP Object
273 */
274 boolean getDFlag();
275
276 /**
277 * Sets D flag with specific value and return its builder.
278 *
279 * @param value D flag
280 * @return Builder by setting D flag
281 */
282 Builder setDFlag(boolean value);
283
284 /**
285 * Returns list of Optional Tlvs in LSP Object.
286 *
287 * @return list of Optional Tlvs in LSP Object
288 */
289 LinkedList<PcepValueType> getOptionalTlv();
290
291 /**
292 * Sets list of Optional Tlvs and return its builder.
293 *
294 * @param llOptionalTlv list of Optional Tlvs
295 * @return Builder by setting list of Optional Tlvs
296 */
297 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
298
299 /**
300 * Sets P flag in LSP object header and returns its builder.
301 *
302 * @param value boolean value to set P flag
303 * @return Builder by setting P flag
304 */
305 Builder setPFlag(boolean value);
306
307 /**
308 * Sets I flag in LSP object header and returns its builder.
309 *
310 * @param value boolean value to set I flag
311 * @return Builder by setting I flag
312 */
313 Builder setIFlag(boolean value);
314 }
315}