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