blob: 554651ef4749ba59751f8e5191b4f64bb36733ed [file] [log] [blame]
Jonathan Hart472062d2014-04-03 10:56:48 -07001package net.onrc.onos.core.topology;
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08002
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -07003import net.onrc.onos.core.util.Dpid;
4
Yuta HIGUCHIb5107282014-02-14 17:18:24 -08005import java.nio.ByteBuffer;
Sho SHIMIZUf34f1502014-06-13 13:48:00 -07006import java.util.Objects;
Yuta HIGUCHIdac4caa2014-02-11 18:51:35 -08007
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08008/**
Ray Milkeyb41100a2014-04-10 10:42:15 -07009 * Self-contained Switch Object.
Ray Milkey269ffb92014-04-03 14:43:30 -070010 * <p/>
Ray Milkeyb41100a2014-04-10 10:42:15 -070011 * TODO: We probably want common base class/interface for Self-Contained Event Object.
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080012 */
13public class SwitchEvent {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070014 protected final Dpid dpid;
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 SwitchEvent() {
Ray Milkey269ffb92014-04-03 14:43:30 -070021 dpid = null;
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080022 }
23
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080024 public SwitchEvent(Long dpid) {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070025 this.dpid = new Dpid(dpid);
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080026 }
27
28 public Long getDpid() {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070029 return dpid.value();
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080030 }
31
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080032 @Override
Sho SHIMIZUf34f1502014-06-13 13:48:00 -070033 public boolean equals(Object o) {
34 if (this == o) {
35 return true;
36 }
37
38 if (!(o instanceof SwitchEvent)) {
39 return false;
40 }
41
42 SwitchEvent that = (SwitchEvent) o;
43 return Objects.equals(this.dpid, that.dpid);
44 }
45
46 @Override
47 public int hashCode() {
48 return Objects.hashCode(dpid);
49 }
50
51 @Override
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080052 public String toString() {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070053 return "[SwitchEvent 0x" + Long.toHexString(dpid.value()) + "]";
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080054 }
55
Yuta HIGUCHIb5107282014-02-14 17:18:24 -080056 public static final int SWITCHID_BYTES = 2 + 8;
57
Yuta HIGUCHIa341b112014-02-23 15:42:00 -080058 public static ByteBuffer getSwitchID(Long dpid) {
Ray Milkey269ffb92014-04-03 14:43:30 -070059 if (dpid == null) {
60 throw new IllegalArgumentException("dpid cannot be null");
61 }
62 return (ByteBuffer) ByteBuffer.allocate(SwitchEvent.SWITCHID_BYTES).putChar('S').putLong(dpid).flip();
Yuta HIGUCHIb5107282014-02-14 17:18:24 -080063 }
64
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080065 public byte[] getID() {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070066 return getSwitchID(dpid.value()).array();
Yuta HIGUCHIa341b112014-02-23 15:42:00 -080067 }
68
69 public ByteBuffer getIDasByteBuffer() {
Sho SHIMIZU83e3c1f2014-06-13 15:57:26 -070070 return getSwitchID(dpid.value());
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080071 }
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080072}