blob: 9d324e77050f7cae1d5bda73218fea9cbef1499f [file] [log] [blame]
/*
* Copyright 2014 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.api;
import java.net.URI;
import java.net.URISyntaxException;
import org.onosproject.pcep.tools.PcepTools;
/**
* The class representing a network switch PCEPDid. This class is immutable.
*/
public final class PcepDpid {
private static final String SCHEME = "pcep";
private static final long UNKNOWN = 0;
private long nodeId;
/**
* Default constructor.
*/
public PcepDpid() {
this.nodeId = PcepDpid.UNKNOWN;
}
/**
* Constructor from a long value.
*
* @param value long value for construct
*/
public PcepDpid(long value) {
this.nodeId = value;
}
/**
* Constructor from a String.
*
* @param value string value for construct
*/
public PcepDpid(String value) {
this.nodeId = Long.parseLong(value, 16);
}
/**
* Produces device URI from the given DPID.
*
* @param dpid device dpid
* @return device URI
*/
public static URI uri(PcepDpid dpid) {
return uri(dpid.nodeId);
}
/**
* Produces device long from the given string which comes from the uri
* method.
*
* @param value string value which produced by uri method.
* @return a long value.
*/
public static long toLong(String value) {
return PcepTools.ipToLong(value.replace(SCHEME, ""));
}
/**
* Produces device URI from the given DPID long.
*
* @param value device dpid as long
* @return device URI
*/
public static URI uri(long value) {
try {
return new URI(SCHEME, PcepTools.longToIp(value), null);
} catch (URISyntaxException e) {
return null;
}
}
/**
* Return a device id with the form of long.
*
* @return long value
*/
public long value() {
return this.nodeId;
}
}