blob: 73228f0722e90dcfd36da1773415d80d4080543e [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 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 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530109 * Writes the Open into channel buffer.
110 *
111 * @param bb channel buffer
112 * @return Returns the writerIndex of this buffer
113 * @throws PcepParseException while writing Open Object into Channel Buffer.
114 */
115 int write(ChannelBuffer bb) throws PcepParseException;
116
117 /**
118 * Builder interface with get and set functions to build Open object.
119 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -0700120 interface Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +0530121
122 /**
123 * Builds Open Object.
124 *
125 * @return Open Object
126 * @throws PcepParseException while building PCEP-Open object
127 */
128 PcepOpenObject build() throws PcepParseException;
129
130 /**
131 * Returns Open object header.
132 *
133 * @return Open object header
134 */
135 PcepObjectHeader getOpenObjHeader();
136
137 /**
138 * Sets Open object header and returns its builder.
139 *
140 * @param obj Open object header
141 * @return Builder by setting Open object header
142 */
143 Builder setOpenObjHeader(PcepObjectHeader obj);
144
145 /**
146 * Returns KeepAlive Time in Open Object.
147 *
148 * @return KeepAlive Time in Open Object
149 */
150 byte getKeepAliveTime();
151
152 /**
153 * Sets KeepAlive Time and returns its builder.
154 *
155 * @param value KeepAlive Time
156 * @return Builder by setting KeepAlive Time
157 */
158 Builder setKeepAliveTime(byte value);
159
160 /**
161 * Returns Dead Time in Open Object.
162 *
163 * @return Dead Time in Open Object
164 */
165 byte getDeadTime();
166
167 /**
168 * Sets Dead Time and returns its builder.
169 *
170 * @param value Dead Time
171 * @return Builder by setting Dead Time
172 */
173 Builder setDeadTime(byte value);
174
175 /**
176 * Returns SessionId in Open Object.
177 *
178 * @return SessionId in Open Object
179 */
180 byte getSessionId();
181
182 /**
183 * Sets SessionId and returns its builder.
184 *
185 * @param value SessionId
186 * @return Builder by setting SessionId
187 */
188 Builder setSessionId(byte value);
189
190 /**
191 * Returns list of Optional Tlvs in Open Object.
192 *
193 * @return list of Optional Tlvs in Open Object
194 */
195 LinkedList<PcepValueType> getOptionalTlv();
196
197 /**
198 * Sets list of Optional Tlvs and return its Builder.
199 *
200 * @param llOptionalTlv list of Optional Tlvs
201 * @return builder by setting list of Optional Tlvs
202 */
203 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
204
205 /**
206 * Sets P flag in Open object header and returns its builder.
207 *
208 * @param value boolean value to set P flag
209 * @return Builder by setting P flag
210 */
211 Builder setPFlag(boolean value);
212
213 /**
214 * Sets I flag in Open object header and returns its builder.
215 *
216 * @param value boolean value to set I flag
217 * @return Builder by setting I flag
218 */
219 Builder setIFlag(boolean value);
220 }
221}