blob: 4e80826d1a2474f66cdcabb7b0f05c540cc36f10 [file] [log] [blame]
Yuta HIGUCHIa16a8232014-07-03 19:45:40 -07001package net.onrc.onos.core.util;
2
3import java.util.Objects;
4
5import org.apache.commons.lang.Validate;
6
7
8/**
9 * Immutable class to identify a Link between 2 ports.
10 */
11public final class LinkTuple {
12
13 private final SwitchPort src;
14 private final SwitchPort dst;
15
16 /**
17 * Default constructor for Serializer.
18 */
19 protected LinkTuple() {
20 src = null;
21 dst = null;
22 }
23
24 /**
25 * Constructor.
26 *
27 * @param src source port
28 * @param dst destination port
29 */
30 public LinkTuple(SwitchPort src, SwitchPort dst) {
31 Validate.notNull(src);
32 Validate.notNull(dst);
33
34 this.src = src;
35 this.dst = dst;
36 }
37
38 /**
39 * Creates the Link object.
40 *
41 * @param srcDpid source switch DPID
42 * @param srcPortNo source port number
43 * @param dstDpid destination switch DPID
44 * @param dstPortNo destination port number
45 */
46 public LinkTuple(Dpid srcDpid, PortNumber srcPortNo,
47 Dpid dstDpid, PortNumber dstPortNo) {
48 this(new SwitchPort(srcDpid, srcPortNo),
49 new SwitchPort(dstDpid, dstPortNo));
50 }
51
52 /**
53 * Gets the source port.
54 *
55 * @return source port
56 */
57 public SwitchPort getSrc() {
58 return src;
59 }
60
61 /**
62 * Gets the destination port.
63 *
64 * @return destination port
65 */
66 public SwitchPort getDst() {
67 return dst;
68 }
69
70 @Override
71 public int hashCode() {
72 final int prime = 31;
73 int result = 1;
74 result = prime * result + ((src == null) ? 0 : src.hashCode());
75 result = prime * result + ((dst == null) ? 0 : dst.hashCode());
76 return result;
77 }
78
79 @Override
80 public boolean equals(Object obj) {
81 if (this == obj) {
82 return true;
83 }
84 if (obj == null) {
85 return false;
86 }
87 if (getClass() != obj.getClass()) {
88 return false;
89 }
90 LinkTuple other = (LinkTuple) obj;
91 return Objects.equals(src, other.src) &&
92 Objects.equals(dst, other.dst);
93 }
94
95 @Override
96 public String toString() {
97 return "(" + src + "=>" + dst + ")";
98 }
99}