blob: 5d55250aada867b9baa513c3902d4eb8ad1e2b37 [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 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530130 * Writes the LSP Object into channel buffer.
131 *
132 * @param bb channel buffer
133 * @return Returns the writerIndex of this buffer
134 * @throws PcepParseException while writing LSP object into Channel Buffer.
135 */
136 int write(ChannelBuffer bb) throws PcepParseException;
137
138 /**
139 * Builder interface with get and set functions to build LSP object.
140 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -0700141 interface Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530142
143 /**
144 * Builds LSP Object.
145 *
146 * @return LSP Object
147 */
148 PcepLspObject build();
149
150 /**
151 * Returns LSP object header.
152 *
153 * @return LSP object header
154 */
155 PcepObjectHeader getLspObjHeader();
156
157 /**
158 * Sets LSP object header and returns its builder.
159 *
160 * @param obj LSP object header
161 * @return Builder by setting LSP object header
162 */
163 Builder setLspObjHeader(PcepObjectHeader obj);
164
165 /**
166 * Returns PlspId of LSP Object.
167 *
168 * @return PlspId of LSP Object
169 */
170 int getPlspId();
171
172 /**
173 * Sets PlspId with specific value and return its builder.
174 *
175 * @param value PlspId
176 * @return Builder by setting PlspId
177 */
178 Builder setPlspId(int value);
179
180 /**
181 * Returns O flag in LSP Object.
182 *
183 * @return O flag in LSP Object
184 */
185 byte getOFlag();
186
187 /**
188 * Sets O flag with specific value and return its builder.
189 *
190 * @param value O flag
191 * @return Builder by setting O flag
192 */
193 Builder setOFlag(byte value);
194
195 /**
196 * Returns A flag in LSP Object.
197 *
198 * @return A flag in LSP Object
199 */
200 boolean getAFlag();
201
202 /**
203 * Sets A flag with specific value and return its builder.
204 *
205 * @param value A flag
206 * @return Builder by setting A flag
207 */
208 Builder setAFlag(boolean value);
209
210 /**
211 * Returns A flag in LSP Object.
212 *
213 * @return A flag in LSP Object
214 */
215 boolean getRFlag();
216
217 /**
218 * Sets R flag with specific value and return its builder.
219 *
220 * @param value r flag
221 * @return Builder by setting r flag
222 */
223 Builder setRFlag(boolean value);
224
225 /**
226 * Returns S flag in LSP Object.
227 *
228 * @return S flag in LSP Object
229 */
230 boolean getSFlag();
231
232 /**
233 * Sets S flag with specific value and return its builder.
234 *
235 * @param value s flag
236 * @return Builder by setting S flag
237 */
238 Builder setSFlag(boolean value);
239
240 /**
241 * Returns D flag in LSP Object.
242 *
243 * @return D flag in LSP Object
244 */
245 boolean getDFlag();
246
247 /**
248 * Sets D flag with specific value and return its builder.
249 *
250 * @param value D flag
251 * @return Builder by setting D flag
252 */
253 Builder setDFlag(boolean value);
254
255 /**
256 * Returns list of Optional Tlvs in LSP Object.
257 *
258 * @return list of Optional Tlvs in LSP Object
259 */
260 LinkedList<PcepValueType> getOptionalTlv();
261
262 /**
263 * Sets list of Optional Tlvs and return its builder.
264 *
265 * @param llOptionalTlv list of Optional Tlvs
266 * @return Builder by setting list of Optional Tlvs
267 */
268 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
269
270 /**
271 * Sets P flag in LSP object header and returns its builder.
272 *
273 * @param value boolean value to set P flag
274 * @return Builder by setting P flag
275 */
276 Builder setPFlag(boolean value);
277
278 /**
279 * Sets I flag in LSP object header and returns its builder.
280 *
281 * @param value boolean value to set I flag
282 * @return Builder by setting I flag
283 */
284 Builder setIFlag(boolean value);
285 }
286}