aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java
blob: 9155434edd8b928d23c2bfe3126db93dc3d0af61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.onosproject.pcepio.protocol;

import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;

/**
 * Abstraction of an entity providing PCEP LabelRange Object.
 */
public interface PcepLabelRangeObject {

    /**
     * Sets LabelRange Object header.
     *
     * @param obj LabelRange Object header
     */
    void setLabelRangeObjHeader(PcepObjectHeader obj);

    /**
     * Sets LabelType in LabelRange Object.
     *
     * @param labelType label type value
     */
    void setLabelType(byte labelType);

    /**
     * Sets RangeSize in LabelRange Object.
     *
     * @param rangeSize range size value
     */
    void setRangeSize(int rangeSize);

    /**
     * Sets LabelBase in LabelRange Object.
     *
     * @param labelBase label base value
     */
    void setLabelBase(int labelBase);

    /**
     * Returns LabelRange object header.
     *
     * @return LabelRange object header
     */
    PcepObjectHeader getLabelRangeObjHeader();

    /**
     * Returns LabelType field in LabelRange object.
     *
     * @return LabelType field in LabelRange object
     */
    byte getLabelType();

    /**
     * Returns RangeSize field in LabelRange object.
     *
     * @return RangeSize field in LabelRange object
     */
    int getRangeSize();

    /**
     * Returns LabelBase field in LabelRange object.
     *
     * @return LabelBase field in LabelRange object
     */
    int getLabelBase();

    /**
     * Writes the LabelRange Object into channel buffer.
     *
     * @param bb channel buffer
     * @return Returns the writerIndex of this buffer
     * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer.
     */
    int write(ChannelBuffer bb) throws PcepParseException;

    /**
     * Builder interface with get and set functions to build LabelRange object.
     */
    interface Builder {

        /**
         * Builds LabelRange Object.
         *
         * @return LabelRange Object
         * @throws PcepParseException while building LABEL RANGE object.
         */
        PcepLabelRangeObject build() throws PcepParseException;

        /**
         * Returns LabelRange object header.
         *
         * @return LabelRange object header
         */
        PcepObjectHeader getLabelRangeObjHeader();

        /**
         * Sets LabelRange object header and returns its builder.
         *
         * @param obj LabelRange object header
         * @return Builder by setting LabelRange object header
         */
        Builder setLabelRangeObjHeader(PcepObjectHeader obj);

        /**
         * Returns LabelType field in LabelRange object.
         *
         * @return LabelType field in LabelRange object
         */
        byte getLabelType();

        /**
         * Sets LabelType field and returns its builder.
         *
         * @param labelType LabelType field
         * @return Builder by setting LabelType field
         */
        Builder setLabelType(byte labelType);

        /**
         * Returns RangeSize field in LabelRange object.
         *
         * @return RangeSize field in LabelRange object
         */
        int getRangeSize();

        /**
         * Sets RangeSize field and returns its builder.
         *
         * @param rangeSize RangeSize field
         * @return Builder by setting RangeSize field
         */
        Builder setRangeSize(int rangeSize);

        /**
         * Returns LabelBase field in LabelRange object.
         *
         * @return LabelBase field in LabelRange object
         */
        int getLabelBase();

        /**
         * Sets LabelBase field and returns its builder.
         *
         * @param labelBase LabelBase field
         * @return Builder by setting LabelBase field
         */
        Builder setLabelBase(int labelBase);

        /**
         * Sets P flag in TE object header and returns its builder.
         *
         * @param value boolean value to set P flag
         * @return Builder by setting P flag
         */
        Builder setPFlag(boolean value);

        /**
         * Sets I flag in TE object header and returns its builder.
         *
         * @param value boolean value to set I flag
         * @return Builder by setting I flag
         */
        Builder setIFlag(boolean value);
    }
}