blob: 1bf53d57b8934bd785c7f85996bd433e4c7b9e19 [file] [log] [blame]
tom613d8142014-09-11 15:09:37 -07001package org.onlab.onos.net.packet;
2
3import org.onlab.onos.net.ConnectPoint;
4import org.onlab.packet.Ethernet;
5
6import java.nio.ByteBuffer;
7import java.util.Objects;
8
9import static com.google.common.base.MoreObjects.toStringHelper;
10
11/**
12 * Default implementation of an immutable inbound packet.
13 */
14public class DefaultInboundPacket implements InboundPacket {
15
16 private final ConnectPoint receivedFrom;
17 private final Ethernet parsed;
18 private final ByteBuffer unparsed;
19
20 /**
21 * Creates an immutable inbound packet.
22 *
23 * @param receivedFrom connection point where received
24 * @param parsed parsed ethernet frame
25 * @param unparsed unparsed raw bytes
26 */
alshabib0ed6a202014-10-19 12:42:57 -070027 public DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
tom613d8142014-09-11 15:09:37 -070028 ByteBuffer unparsed) {
29 this.receivedFrom = receivedFrom;
30 this.parsed = parsed;
31 this.unparsed = unparsed;
32 }
33
34 @Override
35 public ConnectPoint receivedFrom() {
36 return receivedFrom;
37 }
38
39 @Override
40 public Ethernet parsed() {
41 return parsed;
42 }
43
44 @Override
45 public ByteBuffer unparsed() {
46 // FIXME: figure out immutability here
47 return unparsed;
48 }
49
50 @Override
51 public int hashCode() {
52 return Objects.hash(receivedFrom, parsed, unparsed);
53 }
54
55 @Override
56 public boolean equals(Object obj) {
tomfc9a4ff2014-09-22 18:22:47 -070057 if (this == obj) {
58 return true;
59 }
tom613d8142014-09-11 15:09:37 -070060 if (obj instanceof InboundPacket) {
61 final DefaultInboundPacket other = (DefaultInboundPacket) obj;
62 return Objects.equals(this.receivedFrom, other.receivedFrom) &&
63 Objects.equals(this.parsed, other.parsed) &&
64 Objects.equals(this.unparsed, other.unparsed);
65 }
66 return false;
67 }
68
69 @Override
70 public String toString() {
71 return toStringHelper(this)
72 .add("receivedFrom", receivedFrom)
73 .add("parsed", parsed)
74 .toString();
75 }
76}