blob: e9cafef416f29590f28785f228cf204847a514a3 [file] [log] [blame]
/*
* Copyright 2016 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.pcep.controller;
import java.util.Objects;
import com.google.common.base.MoreObjects;
/**
* Representation of capabilities supported by client.
*/
public class ClientCapability {
private boolean pceccCapability;
private boolean statefulPceCapability;
private boolean pcInstantiationCapability;
private boolean labelStackCapability;
private boolean srCapability;
/**
* Creates new instance of client capability.
*
* @param pceccCapability represents PCECC capability
* @param statefulPceCapability represents stateful PCE capability
* @param pcInstantiationCapability represents PC initiation capability
* @param labelStackCapability represents S bit is set in PCECC capability
* @param srCapability represents SR capability
*/
public ClientCapability(boolean pceccCapability, boolean statefulPceCapability, boolean pcInstantiationCapability,
boolean labelStackCapability, boolean srCapability) {
this.pceccCapability = pceccCapability;
this.statefulPceCapability = statefulPceCapability;
this.pcInstantiationCapability = pcInstantiationCapability;
this.labelStackCapability = labelStackCapability;
this.srCapability = srCapability;
}
/**
* Obtains label stack capability.
*
* @return true if client supports PCECC capability with S bit set otherwise false
*/
public boolean labelStackCapability() {
return labelStackCapability;
}
/**
* Obtains segment routing capability.
*
* @return true if client supports SR capability otherwise false
*/
public boolean srCapability() {
return srCapability;
}
/**
* Obtains PCECC capability.
*
* @return true if client supports PCECC capability otherwise false
*/
public boolean pceccCapability() {
return pceccCapability;
}
/**
* Obtains stateful PCE capability.
*
* @return true if client supports stateful PCE capability otherwise false
*/
public boolean statefulPceCapability() {
return statefulPceCapability;
}
/**
* Obtains PC initiation capability.
*
* @return true if client supports PC initiation capability otherwise false
*/
public boolean pcInstantiationCapability() {
return pcInstantiationCapability;
}
@Override
public int hashCode() {
return Objects.hash(pceccCapability, statefulPceCapability, pcInstantiationCapability, labelStackCapability,
srCapability);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof ClientCapability) {
ClientCapability other = (ClientCapability) obj;
return Objects.equals(pceccCapability, other.pceccCapability)
&& Objects.equals(statefulPceCapability, other.statefulPceCapability)
&& Objects.equals(pcInstantiationCapability, other.pcInstantiationCapability)
&& Objects.equals(labelStackCapability, other.labelStackCapability)
&& Objects.equals(srCapability, other.srCapability);
}
return false;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("pceccCapability", pceccCapability)
.add("statefulPceCapability", statefulPceCapability)
.add("pcInstantiationCapability", pcInstantiationCapability)
.add("labelStackCapability", labelStackCapability)
.add("srCapability", srCapability)
.toString();
}
}