blob: 9c3a25281ae45eb5293bc500ccad8f4d2158f8c8 [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 Open Object.
28 */
29public interface PcepOpenObject {
30
31 /**
32 * Returns Open object header.
33 *
34 * @return Open object header
35 */
36 PcepObjectHeader getOpenObjHeader();
37
38 /**
39 * Sets Open object header in Open Object.
40 *
41 * @param obj Open object header
42 */
43 void setOpenObjHeader(PcepObjectHeader obj);
44
45 /**
46 * Returns version of Open Object.
47 *
48 * @return Version of Open Object
49 */
50 PcepVersion getVersion();
51
52 /**
53 * Returns KeepAlive Time in Open Object.
54 *
55 * @return KeepAlive Time in Open Object
56 */
57 byte getKeepAliveTime();
58
59 /**
60 * Sets KeepAlive Time in Open Object with specified value.
61 *
62 * @param value KeepAlive Time
63 */
64 void setKeepAliveTime(byte value);
65
66 /**
67 * Returns Dead Time in Open Object.
68 *
69 * @return Dead Time in Open Object
70 */
71 byte getDeadTime();
72
73 /**
74 * Sets Dead Time in Open Object with specified value.
75 *
76 * @param value Dead Time
77 */
78 void setDeadTime(byte value);
79
80 /**
81 * Returns SessionId in Open Object.
82 *
83 * @return SessionId in Open Object
84 */
85 byte getSessionId();
86
87 /**
88 * Sets SessionId in Open Object with specified value.
89 *
90 * @param value SessionId
91 */
92 void setSessionId(byte value);
93
94 /**
95 * Returns list of Optional Tlvs in Open Object.
96 *
97 * @return list of Optional Tlvs
98 */
99 LinkedList<PcepValueType> getOptionalTlv();
100
101 /**
102 * Sets list of Optional Tlvs in Open Object.
103 *
104 * @param llOptionalTlv list of Optional Tlvs
105 */
106 void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
107
108 /**
109 * Prints attributes of Open object.
110 */
111 void print();
112
113 /**
114 * Writes the Open into channel buffer.
115 *
116 * @param bb channel buffer
117 * @return Returns the writerIndex of this buffer
118 * @throws PcepParseException while writing Open Object into Channel Buffer.
119 */
120 int write(ChannelBuffer bb) throws PcepParseException;
121
122 /**
123 * Builder interface with get and set functions to build Open object.
124 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -0700125 interface Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530126
127 /**
128 * Builds Open Object.
129 *
130 * @return Open Object
131 * @throws PcepParseException while building PCEP-Open object
132 */
133 PcepOpenObject build() throws PcepParseException;
134
135 /**
136 * Returns Open object header.
137 *
138 * @return Open object header
139 */
140 PcepObjectHeader getOpenObjHeader();
141
142 /**
143 * Sets Open object header and returns its builder.
144 *
145 * @param obj Open object header
146 * @return Builder by setting Open object header
147 */
148 Builder setOpenObjHeader(PcepObjectHeader obj);
149
150 /**
151 * Returns KeepAlive Time in Open Object.
152 *
153 * @return KeepAlive Time in Open Object
154 */
155 byte getKeepAliveTime();
156
157 /**
158 * Sets KeepAlive Time and returns its builder.
159 *
160 * @param value KeepAlive Time
161 * @return Builder by setting KeepAlive Time
162 */
163 Builder setKeepAliveTime(byte value);
164
165 /**
166 * Returns Dead Time in Open Object.
167 *
168 * @return Dead Time in Open Object
169 */
170 byte getDeadTime();
171
172 /**
173 * Sets Dead Time and returns its builder.
174 *
175 * @param value Dead Time
176 * @return Builder by setting Dead Time
177 */
178 Builder setDeadTime(byte value);
179
180 /**
181 * Returns SessionId in Open Object.
182 *
183 * @return SessionId in Open Object
184 */
185 byte getSessionId();
186
187 /**
188 * Sets SessionId and returns its builder.
189 *
190 * @param value SessionId
191 * @return Builder by setting SessionId
192 */
193 Builder setSessionId(byte value);
194
195 /**
196 * Returns list of Optional Tlvs in Open Object.
197 *
198 * @return list of Optional Tlvs in Open Object
199 */
200 LinkedList<PcepValueType> getOptionalTlv();
201
202 /**
203 * Sets list of Optional Tlvs and return its Builder.
204 *
205 * @param llOptionalTlv list of Optional Tlvs
206 * @return builder by setting list of Optional Tlvs
207 */
208 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
209
210 /**
211 * Sets P flag in Open object header and returns its builder.
212 *
213 * @param value boolean value to set P flag
214 * @return Builder by setting P flag
215 */
216 Builder setPFlag(boolean value);
217
218 /**
219 * Sets I flag in Open object header and returns its builder.
220 *
221 * @param value boolean value to set I flag
222 * @return Builder by setting I flag
223 */
224 Builder setIFlag(boolean value);
225 }
226}