blob: 7a55f32b6c471c23c050a60ea597d9d7715140c6 [file] [log] [blame]
tom613d8142014-09-11 15:09:37 -07001package org.onlab.onos.net.packet;
2
3import com.google.common.base.MoreObjects;
4import com.google.common.collect.ImmutableList;
5import org.onlab.onos.net.DeviceId;
6
7import java.nio.ByteBuffer;
8import java.util.List;
9
10/**
11 * Default implementation of an immutable outbound packet.
12 */
13public class DefaultOutboundPacket implements OutboundPacket {
14 private final DeviceId sendThrough;
15 private final List<Treatment> treatments;
16 private final ByteBuffer data;
17
18 /**
19 * Creates an immutable outbound packet.
20 *
21 * @param sendThrough identifier through which to send the packet
22 * @param treatments list of packet treatments
23 * @param data raw packet data
24 */
25 public DefaultOutboundPacket(DeviceId sendThrough,
26 List<Treatment> treatments, ByteBuffer data) {
27 this.sendThrough = sendThrough;
28 this.treatments = ImmutableList.copyOf(treatments);
29 this.data = data;
30 }
31
32 @Override
33 public DeviceId sendThrough() {
34 return sendThrough;
35 }
36
37 @Override
38 public List<Treatment> treatments() {
39 return treatments;
40 }
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)
52 .add("treatments", treatments)
53 .toString();
54 }
55}