675e0557b8d0ece386494b1b90f96acf8f478bf7
[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 package org.onosproject.pcepio.protocol;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19 import org.onosproject.pcepio.exceptions.PcepParseException;
20 import org.onosproject.pcepio.types.PcepObjectHeader;
21
22 /**
23  * Abstraction of an entity providing PCEP INTER Layer Object.
24  */
25 public interface PcepInterLayerObject {
26
27     /**
28      * Returns N Flag in INTER Layer Object.
29      *
30      * @return N Flag in INTER Layer Object
31      */
32     boolean getbNFlag();
33
34     /**
35      * Sets N Flag in INTER Layer Object with specified value.
36      *
37      * @param value N Flag
38      */
39     void setbNFlag(boolean value);
40
41     /**
42      * Returns I Flag in INTER Layer Object.
43      *
44      * @return I Flag in INTER Layer Object
45      */
46     boolean getbIFlag();
47
48     /**
49      * Sets I Flag in INTER Layer Object with specified value.
50      *
51      * @param value I Flag
52      */
53     void setbIFlag(boolean value);
54
55     /**
56      * Writes the INTER Layer Object into channel buffer.
57      *
58      * @param bb channel buffer
59      * @return Returns the writerIndex of this buffer
60      * @throws PcepParseException while writing Inter Layer Object.
61      */
62     int write(ChannelBuffer bb) throws PcepParseException;
63
64     /**
65      * Builder interface with get and set functions to build INTER Layer object.
66      */
67     interface Builder {
68
69         /**
70          * Builds INTER Layer object.
71          *
72          * @return INTER Layer object
73          */
74         PcepInterLayerObject build();
75
76         /**
77          * Returns INTER Layer object header.
78          *
79          * @return INTER Layer object header
80          */
81         PcepObjectHeader getInterLayerObjHeader();
82
83         /**
84          * Sets INTER Layer object header and returns its builder.
85          *
86          * @param obj INTER Layer object header
87          * @return Builder by setting INTER Layer object header
88          */
89         Builder setInterLayerObjHeader(PcepObjectHeader obj);
90
91         /**
92          * Returns N Flag in INTER Layer Object.
93          *
94          * @return N Flag in INTER Layer Object
95          */
96         boolean getbNFlag();
97
98         /**
99          * Sets N flag and return its builder.
100          *
101          * @param value N flag
102          * @return Builder by setting N flag
103          */
104         Builder setbNFlag(boolean value);
105
106         /**
107          * Returns I Flag in INTER Layer Object.
108          *
109          * @return I Flag in INTER Layer Object
110          */
111         boolean getbIFlag();
112
113         /**
114          * Sets I flag and return its builder.
115          *
116          * @param value I flag
117          * @return Builder by setting N flag
118          */
119         Builder setbIFlag(boolean value);
120
121         /**
122          * Sets P flag in INTER Layer object header and returns its builder.
123          *
124          * @param value boolean value to set P flag
125          * @return Builder by setting P flag
126          */
127         Builder setPFlag(boolean value);
128
129         /**
130          * Sets I flag in INTER Layer object header and returns its builder.
131          *
132          * @param value boolean value to set I flag
133          * @return Builder by setting I flag
134          */
135         Builder setIFlag(boolean value);
136     }
137 }