blob: 8f496029a1b0077434f54347e5db464fc566e22b [file] [log] [blame]
tom613d8142014-09-11 15:09:37 -07001package org.onlab.onos.net.packet;
2
alshabib1d4cace2014-09-13 19:16:26 -07003import java.nio.ByteBuffer;
4
tom613d8142014-09-11 15:09:37 -07005import org.onlab.onos.net.DeviceId;
tom8bb16062014-09-12 14:47:46 -07006import org.onlab.onos.net.flow.TrafficTreatment;
tom613d8142014-09-11 15:09:37 -07007
alshabib1d4cace2014-09-13 19:16:26 -07008import com.google.common.base.MoreObjects;
tom613d8142014-09-11 15:09:37 -07009
10/**
11 * Default implementation of an immutable outbound packet.
12 */
13public class DefaultOutboundPacket implements OutboundPacket {
14 private final DeviceId sendThrough;
tom8bb16062014-09-12 14:47:46 -070015 private final TrafficTreatment treatment;
tom613d8142014-09-11 15:09:37 -070016 private final ByteBuffer data;
17
18 /**
19 * Creates an immutable outbound packet.
20 *
21 * @param sendThrough identifier through which to send the packet
tom8bb16062014-09-12 14:47:46 -070022 * @param treatment list of packet treatments
tom613d8142014-09-11 15:09:37 -070023 * @param data raw packet data
24 */
25 public DefaultOutboundPacket(DeviceId sendThrough,
alshabib1d4cace2014-09-13 19:16:26 -070026 TrafficTreatment treatment, ByteBuffer data) {
tom613d8142014-09-11 15:09:37 -070027 this.sendThrough = sendThrough;
tom8bb16062014-09-12 14:47:46 -070028 this.treatment = treatment;
tom613d8142014-09-11 15:09:37 -070029 this.data = data;
30 }
31
32 @Override
33 public DeviceId sendThrough() {
34 return sendThrough;
35 }
36
37 @Override
tom8bb16062014-09-12 14:47:46 -070038 public TrafficTreatment treatment() {
39 return treatment;
tom613d8142014-09-11 15:09:37 -070040 }
41
42 @Override
43 public ByteBuffer data() {
44 // FIXME: figure out immutability here
45 return data;
46 }
47
48 @Override
49 public String toString() {
50 return MoreObjects.toStringHelper(this)
51 .add("sendThrough", sendThrough)
tom8bb16062014-09-12 14:47:46 -070052 .add("treatment", treatment)
tom613d8142014-09-11 15:09:37 -070053 .toString();
54 }
55}