9155434edd8b928d23c2bfe3126db93dc3d0af61
[onosfw.git] /
1 /*
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
17 package org.onosproject.pcepio.protocol;
18
19 import org.jboss.netty.buffer.ChannelBuffer;
20 import org.onosproject.pcepio.exceptions.PcepParseException;
21 import org.onosproject.pcepio.types.PcepObjectHeader;
22
23 /**
24  * Abstraction of an entity providing PCEP LabelRange Object.
25  */
26 public 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      * 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      */
96     interface Builder {
97
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 }