blob: d5fc5f2d10b6d742c7bcf0c539b533f2b2d3278f [file] [log] [blame]
tom0eb04ca2014-08-25 14:34:51 -07001package org.onlab.onos.net;
2
tomca20e0c2014-09-03 23:22:24 -07003import java.util.Objects;
4
alshabib4680bb62014-09-04 17:15:08 -07005import com.google.common.primitives.UnsignedLongs;
tomca20e0c2014-09-03 23:22:24 -07006
tom0eb04ca2014-08-25 14:34:51 -07007/**
8 * Representation of a port number.
9 */
tomca20e0c2014-09-03 23:22:24 -070010public final class PortNumber {
11
12 private static final long MAX_NUMBER = (2L * Integer.MAX_VALUE) + 1;
13
14 private final long number;
15
16 // Public creation is prohibited
17 private PortNumber(long number) {
tomca20e0c2014-09-03 23:22:24 -070018 this.number = number;
19 }
20
21 /**
22 * Returns the port number representing the specified long value.
23 *
24 * @param number port number as long value
25 * @return port number
26 */
27 public static PortNumber portNumber(long number) {
28 return new PortNumber(number);
29 }
30
31 /**
32 * Returns the port number representing the specified string value.
33 *
34 * @param string port number as string value
35 * @return port number
36 */
37 public static PortNumber portNumber(String string) {
38 return new PortNumber(UnsignedLongs.decode(string));
39 }
40
41 /**
42 * Returns the backing long value.
43 *
44 * @return port number as long
45 */
46 public long toLong() {
47 return number;
48 }
49
50 @Override
51 public String toString() {
52 return UnsignedLongs.toString(number);
53 }
54
55 @Override
56 public int hashCode() {
57 return Objects.hash(number);
58 }
59
60 @Override
61 public boolean equals(Object obj) {
62 if (obj instanceof PortNumber) {
63 final PortNumber other = (PortNumber) obj;
64 return this.number == other.number;
65 }
66 return false;
67 }
tom0eb04ca2014-08-25 14:34:51 -070068}