blob: 12df0cf41c3bf983765743e3ef60c05f33b77d22 [file] [log] [blame]
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
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 org.jboss.netty.buffer.ChannelBuffer;
20import org.onosproject.pcepio.exceptions.PcepParseException;
21import org.onosproject.pcepio.types.PcepObjectHeader;
22
23/**
24 * Abstraction of an entity providing PCEP LabelRange Object.
25 */
26public interface PcepLabelRangeObject {
27
28 /**
29 * Sets LabelRange Object header.
30 *
31 * @param obj LabelRange Object header
32 */
33 void setLabelRangeObjHeader(PcepObjectHeader obj);
34
35 /**
36 * Sets LabelType in LabelRange Object.
37 *
38 * @param labelType label type value
39 */
40 void setLabelType(byte labelType);
41
42 /**
43 * Sets RangeSize in LabelRange Object.
44 *
45 * @param rangeSize range size value
46 */
47 void setRangeSize(int rangeSize);
48
49 /**
50 * Sets LabelBase in LabelRange Object.
51 *
52 * @param labelBase label base value
53 */
54 void setLabelBase(int labelBase);
55
56 /**
57 * Returns LabelRange object header.
58 *
59 * @return LabelRange object header
60 */
61 PcepObjectHeader getLabelRangeObjHeader();
62
63 /**
64 * Returns LabelType field in LabelRange object.
65 *
66 * @return LabelType field in LabelRange object
67 */
68 byte getLabelType();
69
70 /**
71 * Returns RangeSize field in LabelRange object.
72 *
73 * @return RangeSize field in LabelRange object
74 */
75 int getRangeSize();
76
77 /**
78 * Returns LabelBase field in LabelRange object.
79 *
80 * @return LabelBase field in LabelRange object
81 */
82 int getLabelBase();
83
84 /**
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053085 * Writes the LabelRange Object into channel buffer.
86 *
87 * @param bb channel buffer
88 * @return Returns the writerIndex of this buffer
89 * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
90 */
91 int write(ChannelBuffer bb) throws PcepParseException;
92
93 /**
94 * Builder interface with get and set functions to build LabelRange object.
95 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -070096 interface Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053097
98 /**
99 * Builds LabelRange Object.
100 *
101 * @return LabelRange Object
102 * @throws PcepParseException while building LABEL RANGE object.
103 */
104 PcepLabelRangeObject build() throws PcepParseException;
105
106 /**
107 * Returns LabelRange object header.
108 *
109 * @return LabelRange object header
110 */
111 PcepObjectHeader getLabelRangeObjHeader();
112
113 /**
114 * Sets LabelRange object header and returns its builder.
115 *
116 * @param obj LabelRange object header
117 * @return Builder by setting LabelRange object header
118 */
119 Builder setLabelRangeObjHeader(PcepObjectHeader obj);
120
121 /**
122 * Returns LabelType field in LabelRange object.
123 *
124 * @return LabelType field in LabelRange object
125 */
126 byte getLabelType();
127
128 /**
129 * Sets LabelType field and returns its builder.
130 *
131 * @param labelType LabelType field
132 * @return Builder by setting LabelType field
133 */
134 Builder setLabelType(byte labelType);
135
136 /**
137 * Returns RangeSize field in LabelRange object.
138 *
139 * @return RangeSize field in LabelRange object
140 */
141 int getRangeSize();
142
143 /**
144 * Sets RangeSize field and returns its builder.
145 *
146 * @param rangeSize RangeSize field
147 * @return Builder by setting RangeSize field
148 */
149 Builder setRangeSize(int rangeSize);
150
151 /**
152 * Returns LabelBase field in LabelRange object.
153 *
154 * @return LabelBase field in LabelRange object
155 */
156 int getLabelBase();
157
158 /**
159 * Sets LabelBase field and returns its builder.
160 *
161 * @param labelBase LabelBase field
162 * @return Builder by setting LabelBase field
163 */
164 Builder setLabelBase(int labelBase);
165
166 /**
167 * Sets P flag in TE object header and returns its builder.
168 *
169 * @param value boolean value to set P flag
170 * @return Builder by setting P flag
171 */
172 Builder setPFlag(boolean value);
173
174 /**
175 * Sets I flag in TE object header and returns its builder.
176 *
177 * @param value boolean value to set I flag
178 * @return Builder by setting I flag
179 */
180 Builder setIFlag(boolean value);
181 }
182}