blob: 2a717989d5e89f1f47b35fc0dcfb533503672258 [file] [log] [blame]
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Phaneendra Manda1c0061d2015-08-06 12:29:38 +05303 *
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 java.util.LinkedList;
20
21import org.jboss.netty.buffer.ChannelBuffer;
bharat saraswalf7364db2015-08-11 13:39:31 +053022import org.onosproject.pcepio.exceptions.PcepParseException;
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053023import org.onosproject.pcepio.types.PcepObjectHeader;
24import org.onosproject.pcepio.types.PcepValueType;
25
26/**
27 * Abstraction of an entity providing PCEP Close Message.
28 */
29public interface PcepCloseMsg extends PcepObject, PcepMessage {
30
31 @Override
32 PcepVersion getVersion();
33
34 @Override
35 PcepType getType();
36
37 /**
38 * Returns reason field in Close message.
39 *
40 * @return reason field
41 */
42 byte getReason();
43
44 /**
45 * Sets reason field in Close message with specified value.
46 *
47 * @param value of Reason field
48 */
49 void setReason(byte value);
50
51 /**
52 * Returns LinkedList of Optional Tlv in Close Message.
53 *
54 * @return list of optional tlv
55 */
56 LinkedList<PcepValueType> getOptionalTlv();
57
58 /**
59 * Sets LinkedList of Optional Tlvs in Close Message.
60 *
61 * @param llOptionalTlv LinkedList of type PcepValueType
62 */
63 void setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
64
65 @Override
bharat saraswalf7364db2015-08-11 13:39:31 +053066 void writeTo(ChannelBuffer channelBuffer) throws PcepParseException;
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053067
68 /**
69 * Builder interface with get and set functions to build Close message.
70 */
Sho SHIMIZU260f6ef2015-08-11 13:53:31 -070071 interface Builder extends PcepMessage.Builder {
Phaneendra Manda1c0061d2015-08-06 12:29:38 +053072
73 @Override
74 PcepCloseMsg build();
75
76 @Override
77 PcepVersion getVersion();
78
79 @Override
80 PcepType getType();
81
82 /**
83 * Returns Close Object header.
84 *
85 * @return Close Object header
86 */
87 PcepObjectHeader getCloseObjHeader();
88
89 /**
90 * Sets close object header and returns its builder.
91 *
92 * @param obj close object header
93 * @return Builder by setting Close object header
94 */
95 Builder setCloseObjHeader(PcepObjectHeader obj);
96
97 /**
98 * Returns reason field in Close message.
99 *
100 * @return reason field in Close message
101 */
102 byte getReason();
103
104 /**
105 * Sets reason field and return its builder.
106 *
107 * @param value of Reason field
108 * @return builder by setting reason field
109 */
110 Builder setReason(byte value);
111
112 /**
113 * Returns LinkedList of Optional Tlvs.
114 *
115 * @return list of optional tlv
116 */
117 LinkedList<PcepValueType> getOptionalTlv();
118
119 /**
120 * Sets LinkedList of Optional Tlvs in Close Message.
121 *
122 * @param llOptionalTlv list of optional tlv
123 * @return Builder by setting Optional Tlvs
124 */
125 Builder setOptionalTlv(LinkedList<PcepValueType> llOptionalTlv);
126
127 /**
128 * Sets P flag in Close object header and returns its builder.
129 *
130 * @param value boolean value to set P flag
131 * @return Builder by setting P flag
132 */
133 Builder setPFlag(boolean value);
134
135 /**
136 * Sets I flag in Close object header and returns its builder.
137 *
138 * @param value boolean value to set I flag
139 * @return Builder by setting I flag
140 */
141 Builder setIFlag(boolean value);
142 }
143}