blob: 573532fdd98b65a08733c6a0a46731792927217e [file] [log] [blame]
tom29df6f42014-09-05 08:14:14 -07001package org.onlab.onos.net;
2
Jonathan Hartb79d6412014-09-19 11:24:06 -07003import java.util.Objects;
Yuta HIGUCHI9827a352014-09-21 17:01:29 -07004
tomf5d85d42014-10-02 05:27:56 -07005import static com.google.common.base.MoreObjects.toStringHelper;
6
tom29df6f42014-09-05 08:14:14 -07007/**
8 * Default port implementation.
9 */
tom3ea11252014-10-02 04:32:26 -070010public class DefaultPort extends AbstractAnnotated implements Port {
tom29df6f42014-09-05 08:14:14 -070011
12 private final Element element;
13 private final PortNumber number;
14 private final boolean isEnabled;
15
Jonathan Hartb79d6412014-09-19 11:24:06 -070016 /**
17 * Creates a network element attributed to the specified provider.
18 *
19 * @param element parent network element
20 * @param number port number
21 * @param isEnabled indicator whether the port is up and active
tom3ea11252014-10-02 04:32:26 -070022 * @param annotations optional key/value annotations
Jonathan Hartb79d6412014-09-19 11:24:06 -070023 */
24 public DefaultPort(Element element, PortNumber number,
tomf5d85d42014-10-02 05:27:56 -070025 boolean isEnabled, Annotations... annotations) {
tom3ea11252014-10-02 04:32:26 -070026 super(annotations);
tom29df6f42014-09-05 08:14:14 -070027 this.element = element;
28 this.number = number;
29 this.isEnabled = isEnabled;
30 }
31
32 @Override
33 public int hashCode() {
34 return Objects.hash(number, isEnabled);
35 }
36
37 @Override
38 public boolean equals(Object obj) {
tomfc9a4ff2014-09-22 18:22:47 -070039 if (this == obj) {
40 return true;
41 }
tom29df6f42014-09-05 08:14:14 -070042 if (obj instanceof DefaultPort) {
43 final DefaultPort other = (DefaultPort) obj;
44 return Objects.equals(this.element.id(), other.element.id()) &&
45 Objects.equals(this.number, other.number) &&
46 Objects.equals(this.isEnabled, other.isEnabled);
47 }
48 return false;
49 }
50
51 @Override
52 public String toString() {
53 return toStringHelper(this)
54 .add("element", element.id())
55 .add("number", number)
56 .add("isEnabled", isEnabled)
57 .toString();
58 }
59
60 @Override
61 public PortNumber number() {
62 return number;
63 }
64
65 @Override
66 public boolean isEnabled() {
67 return isEnabled;
68 }
69
70 @Override
71 public Element element() {
72 return element;
73 }
74
tom29df6f42014-09-05 08:14:14 -070075}