blob: 5aa70085a48bd5ea47c2aa43e042791e68e033a8 [file] [log] [blame]
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08001package net.onrc.onos.ofcontroller.networkgraph;
2
Yuta HIGUCHIb5107282014-02-14 17:18:24 -08003import java.nio.ByteBuffer;
Yuta HIGUCHIdac4caa2014-02-11 18:51:35 -08004
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -08005/**
Pavlin Radoslavov018d5332014-02-19 23:08:35 -08006 * Self-contained Switch 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 SwitchEvent {
Yuta HIGUCHIf65bcd52014-02-23 15:09:57 -080012 protected final Long dpid;
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080013
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080014 /**
15 * Default constructor.
16 */
17 public SwitchEvent() {
18 dpid = null;
19 }
20
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080021 public SwitchEvent(Long dpid) {
22 this.dpid = dpid;
23 }
24
25 public Long getDpid() {
26 return dpid;
27 }
28
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080029 @Override
30 public String toString() {
31 return "[SwitchEvent 0x" + Long.toHexString(dpid) + "]";
32 }
33
Yuta HIGUCHIb5107282014-02-14 17:18:24 -080034 public static final int SWITCHID_BYTES = 2 + 8;
35
Yuta HIGUCHIa341b112014-02-23 15:42:00 -080036 public static ByteBuffer getSwitchID(Long dpid) {
Yuta HIGUCHIb5107282014-02-14 17:18:24 -080037 if (dpid == null) {
38 throw new IllegalArgumentException("dpid cannot be null");
39 }
Yuta HIGUCHIa341b112014-02-23 15:42:00 -080040 return ByteBuffer.allocate(SwitchEvent.SWITCHID_BYTES).putChar('S').putLong(dpid);
Yuta HIGUCHIb5107282014-02-14 17:18:24 -080041 }
42
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080043 public byte[] getID() {
Yuta HIGUCHIa341b112014-02-23 15:42:00 -080044 return getSwitchID(dpid).array();
45 }
46
47 public ByteBuffer getIDasByteBuffer() {
Pavlin Radoslavov45ec04b2014-02-14 23:29:33 -080048 return getSwitchID(dpid);
49 }
Yuta HIGUCHI54ab8cd2014-02-11 09:43:34 -080050}