2 * Copyright 2015 Open Networking Laboratory
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.onosproject.pcepio.protocol;
19 import org.jboss.netty.buffer.ChannelBuffer;
20 import org.onosproject.pcepio.exceptions.PcepParseException;
21 import org.onosproject.pcepio.types.PcepObjectHeader;
24 * Abstraction of an entity providing PCEP LabelRange Object.
26 public interface PcepLabelRangeObject {
29 * Sets LabelRange Object header.
31 * @param obj LabelRange Object header
33 void setLabelRangeObjHeader(PcepObjectHeader obj);
36 * Sets LabelType in LabelRange Object.
38 * @param labelType label type value
40 void setLabelType(byte labelType);
43 * Sets RangeSize in LabelRange Object.
45 * @param rangeSize range size value
47 void setRangeSize(int rangeSize);
50 * Sets LabelBase in LabelRange Object.
52 * @param labelBase label base value
54 void setLabelBase(int labelBase);
57 * Returns LabelRange object header.
59 * @return LabelRange object header
61 PcepObjectHeader getLabelRangeObjHeader();
64 * Returns LabelType field in LabelRange object.
66 * @return LabelType field in LabelRange object
71 * Returns RangeSize field in LabelRange object.
73 * @return RangeSize field in LabelRange object
78 * Returns LabelBase field in LabelRange object.
80 * @return LabelBase field in LabelRange object
85 * Writes the LabelRange Object into channel buffer.
87 * @param bb channel buffer
88 * @return Returns the writerIndex of this buffer
89 * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
91 int write(ChannelBuffer bb) throws PcepParseException;
94 * Builder interface with get and set functions to build LabelRange object.
99 * Builds LabelRange Object.
101 * @return LabelRange Object
102 * @throws PcepParseException while building LABEL RANGE object.
104 PcepLabelRangeObject build() throws PcepParseException;
107 * Returns LabelRange object header.
109 * @return LabelRange object header
111 PcepObjectHeader getLabelRangeObjHeader();
114 * Sets LabelRange object header and returns its builder.
116 * @param obj LabelRange object header
117 * @return Builder by setting LabelRange object header
119 Builder setLabelRangeObjHeader(PcepObjectHeader obj);
122 * Returns LabelType field in LabelRange object.
124 * @return LabelType field in LabelRange object
129 * Sets LabelType field and returns its builder.
131 * @param labelType LabelType field
132 * @return Builder by setting LabelType field
134 Builder setLabelType(byte labelType);
137 * Returns RangeSize field in LabelRange object.
139 * @return RangeSize field in LabelRange object
144 * Sets RangeSize field and returns its builder.
146 * @param rangeSize RangeSize field
147 * @return Builder by setting RangeSize field
149 Builder setRangeSize(int rangeSize);
152 * Returns LabelBase field in LabelRange object.
154 * @return LabelBase field in LabelRange object
159 * Sets LabelBase field and returns its builder.
161 * @param labelBase LabelBase field
162 * @return Builder by setting LabelBase field
164 Builder setLabelBase(int labelBase);
167 * Sets P flag in TE object header and returns its builder.
169 * @param value boolean value to set P flag
170 * @return Builder by setting P flag
172 Builder setPFlag(boolean value);
175 * Sets I flag in TE object header and returns its builder.
177 * @param value boolean value to set I flag
178 * @return Builder by setting I flag
180 Builder setIFlag(boolean value);