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