blob: dfd8c1227e16b4f8104604bbb249f6aa634da7f7 [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 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 /**
85 * Prints attributes of LabelRange object.
86 */
87 void print();
88
89 /**
90 * Writes the LabelRange Object into channel buffer.
91 *
92 * @param bb channel buffer
93 * @return Returns the writerIndex of this buffer
94 * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
95 */
96 int write(ChannelBuffer bb) throws PcepParseException;
97
98 /**
99 * Builder interface with get and set functions to build LabelRange object.
100 */
101 public interface Builder {
102
103 /**
104 * Builds LabelRange Object.
105 *
106 * @return LabelRange Object
107 * @throws PcepParseException while building LABEL RANGE object.
108 */
109 PcepLabelRangeObject build() throws PcepParseException;
110
111 /**
112 * Returns LabelRange object header.
113 *
114 * @return LabelRange object header
115 */
116 PcepObjectHeader getLabelRangeObjHeader();
117
118 /**
119 * Sets LabelRange object header and returns its builder.
120 *
121 * @param obj LabelRange object header
122 * @return Builder by setting LabelRange object header
123 */
124 Builder setLabelRangeObjHeader(PcepObjectHeader obj);
125
126 /**
127 * Returns LabelType field in LabelRange object.
128 *
129 * @return LabelType field in LabelRange object
130 */
131 byte getLabelType();
132
133 /**
134 * Sets LabelType field and returns its builder.
135 *
136 * @param labelType LabelType field
137 * @return Builder by setting LabelType field
138 */
139 Builder setLabelType(byte labelType);
140
141 /**
142 * Returns RangeSize field in LabelRange object.
143 *
144 * @return RangeSize field in LabelRange object
145 */
146 int getRangeSize();
147
148 /**
149 * Sets RangeSize field and returns its builder.
150 *
151 * @param rangeSize RangeSize field
152 * @return Builder by setting RangeSize field
153 */
154 Builder setRangeSize(int rangeSize);
155
156 /**
157 * Returns LabelBase field in LabelRange object.
158 *
159 * @return LabelBase field in LabelRange object
160 */
161 int getLabelBase();
162
163 /**
164 * Sets LabelBase field and returns its builder.
165 *
166 * @param labelBase LabelBase field
167 * @return Builder by setting LabelBase field
168 */
169 Builder setLabelBase(int labelBase);
170
171 /**
172 * Sets P flag in TE object header and returns its builder.
173 *
174 * @param value boolean value to set P flag
175 * @return Builder by setting P flag
176 */
177 Builder setPFlag(boolean value);
178
179 /**
180 * Sets I flag in TE object header and returns its builder.
181 *
182 * @param value boolean value to set I flag
183 * @return Builder by setting I flag
184 */
185 Builder setIFlag(boolean value);
186 }
187}