blob: 2a6c71a6f4d3b955834b642bd13fe0f97c2249d9 [file] [log] [blame]
Priyanka Bd2b28882016-04-04 16:57:04 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
Priyanka Bd2b28882016-04-04 16:57:04 +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 */
harikrushna-Huaweia2c7c202017-04-10 18:22:00 +053016package org.onosproject.pcep.server;
Priyanka Bd2b28882016-04-04 16:57:04 +053017
18import java.util.Objects;
19
20import com.google.common.base.MoreObjects;
21
22/**
23 * Representation of capabilities supported by client.
24 */
25public class ClientCapability {
26 private boolean pceccCapability;
27 private boolean statefulPceCapability;
28 private boolean pcInstantiationCapability;
Priyanka B94395bf2016-05-21 18:39:46 +053029 private boolean labelStackCapability;
30 private boolean srCapability;
Priyanka Bd2b28882016-04-04 16:57:04 +053031
32 /**
33 * Creates new instance of client capability.
34 *
35 * @param pceccCapability represents PCECC capability
36 * @param statefulPceCapability represents stateful PCE capability
37 * @param pcInstantiationCapability represents PC initiation capability
Priyanka B94395bf2016-05-21 18:39:46 +053038 * @param labelStackCapability represents S bit is set in PCECC capability
39 * @param srCapability represents SR capability
Priyanka Bd2b28882016-04-04 16:57:04 +053040 */
Priyanka B94395bf2016-05-21 18:39:46 +053041 public ClientCapability(boolean pceccCapability, boolean statefulPceCapability, boolean pcInstantiationCapability,
42 boolean labelStackCapability, boolean srCapability) {
Priyanka Bd2b28882016-04-04 16:57:04 +053043 this.pceccCapability = pceccCapability;
44 this.statefulPceCapability = statefulPceCapability;
45 this.pcInstantiationCapability = pcInstantiationCapability;
Priyanka B94395bf2016-05-21 18:39:46 +053046 this.labelStackCapability = labelStackCapability;
47 this.srCapability = srCapability;
48 }
49
50 /**
51 * Obtains label stack capability.
52 *
53 * @return true if client supports PCECC capability with S bit set otherwise false
54 */
55 public boolean labelStackCapability() {
56 return labelStackCapability;
57 }
58
59 /**
60 * Obtains segment routing capability.
61 *
62 * @return true if client supports SR capability otherwise false
63 */
64 public boolean srCapability() {
65 return srCapability;
Priyanka Bd2b28882016-04-04 16:57:04 +053066 }
67
68 /**
69 * Obtains PCECC capability.
70 *
71 * @return true if client supports PCECC capability otherwise false
72 */
73 public boolean pceccCapability() {
74 return pceccCapability;
75 }
76
77 /**
78 * Obtains stateful PCE capability.
79 *
80 * @return true if client supports stateful PCE capability otherwise false
81 */
82 public boolean statefulPceCapability() {
83 return statefulPceCapability;
84 }
85
86 /**
87 * Obtains PC initiation capability.
88 *
89 * @return true if client supports PC initiation capability otherwise false
90 */
91 public boolean pcInstantiationCapability() {
92 return pcInstantiationCapability;
93 }
94
95 @Override
96 public int hashCode() {
Priyanka B94395bf2016-05-21 18:39:46 +053097 return Objects.hash(pceccCapability, statefulPceCapability, pcInstantiationCapability, labelStackCapability,
98 srCapability);
Priyanka Bd2b28882016-04-04 16:57:04 +053099 }
100
101 @Override
102 public boolean equals(Object obj) {
103 if (this == obj) {
104 return true;
105 }
106 if (obj instanceof ClientCapability) {
107 ClientCapability other = (ClientCapability) obj;
108 return Objects.equals(pceccCapability, other.pceccCapability)
109 && Objects.equals(statefulPceCapability, other.statefulPceCapability)
Priyanka B94395bf2016-05-21 18:39:46 +0530110 && Objects.equals(pcInstantiationCapability, other.pcInstantiationCapability)
111 && Objects.equals(labelStackCapability, other.labelStackCapability)
112 && Objects.equals(srCapability, other.srCapability);
Priyanka Bd2b28882016-04-04 16:57:04 +0530113 }
114 return false;
115 }
116
117 @Override
118 public String toString() {
119 return MoreObjects.toStringHelper(getClass())
120 .add("pceccCapability", pceccCapability)
121 .add("statefulPceCapability", statefulPceCapability)
122 .add("pcInstantiationCapability", pcInstantiationCapability)
Priyanka B94395bf2016-05-21 18:39:46 +0530123 .add("labelStackCapability", labelStackCapability)
124 .add("srCapability", srCapability)
Priyanka Bd2b28882016-04-04 16:57:04 +0530125 .toString();
126 }
127}