blob: 3f1e54067f4188008c3d92d8cd253a4f765ba8b2 [file] [log] [blame]
Sho SHIMIZU74361c12015-08-11 12:31:48 -07001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Sho SHIMIZU74361c12015-08-11 12:31:48 -07003 *
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 */
16package org.onosproject.pcepio.protocol;
17
18import org.jboss.netty.buffer.ChannelBuffer;
19import org.onosproject.pcepio.exceptions.PcepParseException;
20import org.onosproject.pcepio.types.PcepObjectHeader;
21
22/**
23 * Abstraction of an entity providing PCEP INTER Layer Object.
24 */
25public 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 /**
Sho SHIMIZU74361c12015-08-11 12:31:48 -070056 * 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 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -070067 interface Builder {
Sho SHIMIZU74361c12015-08-11 12:31:48 -070068
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}