blob: 65d0b94de761e52e776ae3c663237e0a9f8941c8 [file] [log] [blame]
Jonathan Hart472062d2014-04-03 10:56:48 -07001package net.onrc.onos.core.topology;
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08002
Yuta HIGUCHIb5107282014-02-14 17:18:24 -08003import java.nio.ByteBuffer;
4
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08005/**
Yuta HIGUCHIdac4caa2014-02-11 18:51:35 -08006 * Self-contained Port event Object
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08007 *
8 * TODO: We probably want common base class/interface for Self-Contained Event Object
9 *
10 */
11public class PortEvent {
12 public static class SwitchPort {
Toshio Koide0c9106d2014-02-19 15:26:38 -080013 public final Long dpid;
14 public final Long number;
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080015
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080016 /**
Yuta HIGUCHI9cc421b2014-02-24 15:34:44 -080017 * Default constructor for Serializer to use.
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080018 */
Yuta HIGUCHI9cc421b2014-02-24 15:34:44 -080019 @Deprecated
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080020 public SwitchPort() {
21 dpid = null;
22 number = null;
23 }
24
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080025 public SwitchPort(Long dpid, Long number) {
26 this.dpid = dpid;
27 this.number = number;
28 }
29
30 public Long getDpid() {
31 return dpid;
32 }
33
34 public Long getNumber() {
35 return number;
36 }
37
38 @Override
39 public String toString() {
40 return "(" + Long.toHexString(dpid) + "@" + number + ")";
41 }
42
Toshio Koide0c9106d2014-02-19 15:26:38 -080043 @Override
44 public int hashCode() {
45 final int prime = 31;
46 int result = 1;
47 result = prime * result + ((dpid == null) ? 0 : dpid.hashCode());
48 result = prime * result
49 + ((number == null) ? 0 : number.hashCode());
50 return result;
51 }
52
53 @Override
54 public boolean equals(Object obj) {
55 if (this == obj)
56 return true;
57 if (obj == null)
58 return false;
59 if (getClass() != obj.getClass())
60 return false;
61 SwitchPort other = (SwitchPort) obj;
62 if (dpid == null) {
63 if (other.dpid != null)
64 return false;
65 } else if (!dpid.equals(other.dpid))
66 return false;
67 if (number == null) {
68 if (other.number != null)
69 return false;
70 } else if (!number.equals(other.number))
71 return false;
72 return true;
73 }
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080074 }
75
Pavlin Radoslavov26d83402014-02-20 15:24:30 -080076 protected final SwitchPort id;
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080077 // TODO Add Hardware Address
78 // TODO Add Description
79
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080080 /**
Yuta HIGUCHI9cc421b2014-02-24 15:34:44 -080081 * Default constructor for Serializer to use.
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080082 */
Yuta HIGUCHI9cc421b2014-02-24 15:34:44 -080083 @Deprecated
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080084 public PortEvent() {
85 id = null;
86 }
87
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080088 public PortEvent(Long dpid, Long number) {
89 this.id = new SwitchPort(dpid, number);
90 }
91
92 public Long getDpid() {
93 return id.dpid;
94 }
95
96 public Long getNumber() {
97 return id.number;
98 }
99
100 @Override
101 public String toString() {
102 return "[PortEvent 0x" + Long.toHexString(id.dpid) + "@" + id.number + "]";
103 }
104
Yuta HIGUCHIb5107282014-02-14 17:18:24 -0800105 public static final int PORTID_BYTES = SwitchEvent.SWITCHID_BYTES + 2 + 8;
106
Yuta HIGUCHIa341b112014-02-23 15:42:00 -0800107 public static ByteBuffer getPortID(Long dpid, Long number) {
Yuta HIGUCHIb5107282014-02-14 17:18:24 -0800108 if (dpid == null) {
109 throw new IllegalArgumentException("dpid cannot be null");
110 }
111 if (number == null) {
112 throw new IllegalArgumentException("number cannot be null");
113 }
Yuta HIGUCHI9e873bd2014-02-24 13:29:13 -0800114 return (ByteBuffer) ByteBuffer.allocate(PortEvent.PORTID_BYTES).putChar('S').putLong(dpid)
115 .putChar('P').putLong(number).flip();
Yuta HIGUCHIb5107282014-02-14 17:18:24 -0800116 }
117
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -0800118 public byte[] getID() {
Yuta HIGUCHIa341b112014-02-23 15:42:00 -0800119 return getPortID(getDpid(), getNumber()).array();
120 }
121
122 public ByteBuffer getIDasByteBuffer() {
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -0800123 return getPortID(getDpid(), getNumber());
124 }
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -0800125}