blob: 375becd6ab691cb547679dd6aa23f100afed7318 [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
Jonathan Hartfca736c2014-09-19 17:26:59 -07009import org.onlab.packet.IpPrefix;
Jonathan Hartb79d6412014-09-19 11:24:06 -070010
Yuta HIGUCHI9827a352014-09-21 17:01:29 -070011import com.google.common.collect.ImmutableSet;
12
tom29df6f42014-09-05 08:14:14 -070013/**
14 * Default port implementation.
15 */
16public class DefaultPort implements Port {
17
18 private final Element element;
19 private final PortNumber number;
20 private final boolean isEnabled;
21
Jonathan Hartb79d6412014-09-19 11:24:06 -070022 // Attributes
Jonathan Hartfca736c2014-09-19 17:26:59 -070023 private final Set<IpPrefix> ipAddresses;
Jonathan Hartb79d6412014-09-19 11:24:06 -070024
tom29df6f42014-09-05 08:14:14 -070025 /**
26 * Creates a network element attributed to the specified provider.
27 *
28 * @param element parent network element
29 * @param number port number
30 * @param isEnabled indicator whether the port is up and active
31 */
32 public DefaultPort(Element element, PortNumber number,
33 boolean isEnabled) {
Jonathan Hartb79d6412014-09-19 11:24:06 -070034 this(element, number, isEnabled, null);
35 }
36
37 /**
38 * Creates a network element attributed to the specified provider.
39 *
40 * @param element parent network element
41 * @param number port number
42 * @param isEnabled indicator whether the port is up and active
43 * @param ipAddresses set of IP addresses assigned to the port
44 */
45 public DefaultPort(Element element, PortNumber number,
Jonathan Hartfca736c2014-09-19 17:26:59 -070046 boolean isEnabled, Set<IpPrefix> ipAddresses) {
tom29df6f42014-09-05 08:14:14 -070047 this.element = element;
48 this.number = number;
49 this.isEnabled = isEnabled;
Yuta HIGUCHI9827a352014-09-21 17:01:29 -070050 this.ipAddresses = (ipAddresses == null) ? Collections.<IpPrefix>emptySet() :
51 ImmutableSet.copyOf(ipAddresses);
tom29df6f42014-09-05 08:14:14 -070052 }
53
54 @Override
55 public int hashCode() {
56 return Objects.hash(number, isEnabled);
57 }
58
59 @Override
60 public boolean equals(Object obj) {
61 if (obj instanceof DefaultPort) {
62 final DefaultPort other = (DefaultPort) obj;
63 return Objects.equals(this.element.id(), other.element.id()) &&
64 Objects.equals(this.number, other.number) &&
65 Objects.equals(this.isEnabled, other.isEnabled);
66 }
67 return false;
68 }
69
70 @Override
71 public String toString() {
72 return toStringHelper(this)
73 .add("element", element.id())
74 .add("number", number)
75 .add("isEnabled", isEnabled)
76 .toString();
77 }
78
79 @Override
80 public PortNumber number() {
81 return number;
82 }
83
84 @Override
85 public boolean isEnabled() {
86 return isEnabled;
87 }
88
89 @Override
90 public Element element() {
91 return element;
92 }
93
Jonathan Hartb79d6412014-09-19 11:24:06 -070094 @Override
Jonathan Hartfca736c2014-09-19 17:26:59 -070095 public Set<IpPrefix> ipAddresses() {
Jonathan Hartb79d6412014-09-19 11:24:06 -070096 return ipAddresses;
97 }
98
tom29df6f42014-09-05 08:14:14 -070099}