blob: c6d6cb395433dbbea36a0c8250273665caaa6f18 [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
Jonathan Hartb79d6412014-09-19 11:24:06 -07005import java.util.Collections;
6import java.util.Objects;
7import java.util.Set;
8
9import org.onlab.packet.IpAddress;
10
tom29df6f42014-09-05 08:14:14 -070011/**
12 * Default port implementation.
13 */
14public class DefaultPort implements Port {
15
16 private final Element element;
17 private final PortNumber number;
18 private final boolean isEnabled;
19
Jonathan Hartb79d6412014-09-19 11:24:06 -070020 // Attributes
21 private final Set<IpAddress> ipAddresses;
22
tom29df6f42014-09-05 08:14:14 -070023 /**
24 * Creates a network element attributed to the specified provider.
25 *
26 * @param element parent network element
27 * @param number port number
28 * @param isEnabled indicator whether the port is up and active
29 */
30 public DefaultPort(Element element, PortNumber number,
31 boolean isEnabled) {
Jonathan Hartb79d6412014-09-19 11:24:06 -070032 this(element, number, isEnabled, null);
33 }
34
35 /**
36 * Creates a network element attributed to the specified provider.
37 *
38 * @param element parent network element
39 * @param number port number
40 * @param isEnabled indicator whether the port is up and active
41 * @param ipAddresses set of IP addresses assigned to the port
42 */
43 public DefaultPort(Element element, PortNumber number,
44 boolean isEnabled, Set<IpAddress> ipAddresses) {
tom29df6f42014-09-05 08:14:14 -070045 this.element = element;
46 this.number = number;
47 this.isEnabled = isEnabled;
Jonathan Hartb79d6412014-09-19 11:24:06 -070048 this.ipAddresses = (ipAddresses == null) ? null :
49 Collections.unmodifiableSet(ipAddresses);
tom29df6f42014-09-05 08:14:14 -070050 }
51
52 @Override
53 public int hashCode() {
54 return Objects.hash(number, isEnabled);
55 }
56
57 @Override
58 public boolean equals(Object obj) {
59 if (obj instanceof DefaultPort) {
60 final DefaultPort other = (DefaultPort) obj;
61 return Objects.equals(this.element.id(), other.element.id()) &&
62 Objects.equals(this.number, other.number) &&
63 Objects.equals(this.isEnabled, other.isEnabled);
64 }
65 return false;
66 }
67
68 @Override
69 public String toString() {
70 return toStringHelper(this)
71 .add("element", element.id())
72 .add("number", number)
73 .add("isEnabled", isEnabled)
74 .toString();
75 }
76
77 @Override
78 public PortNumber number() {
79 return number;
80 }
81
82 @Override
83 public boolean isEnabled() {
84 return isEnabled;
85 }
86
87 @Override
88 public Element element() {
89 return element;
90 }
91
Jonathan Hartb79d6412014-09-19 11:24:06 -070092 @Override
93 public Set<IpAddress> ipAddresses() {
94 return ipAddresses;
95 }
96
tom29df6f42014-09-05 08:14:14 -070097}