blob: 923f168baef73ba689c0ad73d6347cdb7dcdc172 [file] [log] [blame]
alshabibf6d77962014-09-12 16:25:21 -07001package org.onlab.onos.net.packet;
2
alshabib1d4cace2014-09-13 19:16:26 -07003import org.onlab.onos.net.flow.DefaultTrafficTreatment;
4import org.onlab.onos.net.flow.TrafficTreatment;
5import org.onlab.onos.net.flow.TrafficTreatment.Builder;
6
alshabibf6d77962014-09-12 16:25:21 -07007
8public abstract class DefaultPacketContext implements PacketContext {
9
10 private final long time;
11 private final InboundPacket inPkt;
12 private final OutboundPacket outPkt;
alshabib1d4cace2014-09-13 19:16:26 -070013 private final TrafficTreatment.Builder builder;
14
alshabibf6d77962014-09-12 16:25:21 -070015 private boolean block = false;
16
alshabib1d4cace2014-09-13 19:16:26 -070017
alshabibf6d77962014-09-12 16:25:21 -070018 protected DefaultPacketContext(long time, InboundPacket inPkt,
19 OutboundPacket outPkt, boolean block) {
20 super();
21 this.time = time;
22 this.inPkt = inPkt;
23 this.outPkt = outPkt;
24 this.block = block;
alshabib1d4cace2014-09-13 19:16:26 -070025 this.builder = new DefaultTrafficTreatment.Builder();
alshabibf6d77962014-09-12 16:25:21 -070026 }
27
28 @Override
29 public long time() {
30 return time;
31 }
32
33 @Override
34 public InboundPacket inPacket() {
35 return inPkt;
36 }
37
38 @Override
39 public OutboundPacket outPacket() {
40 return outPkt;
41 }
42
43 @Override
alshabib1d4cace2014-09-13 19:16:26 -070044 public Builder treatmentBuilder() {
45 return builder;
46 }
47
48 @Override
alshabibf6d77962014-09-12 16:25:21 -070049 public abstract void send();
50
51 @Override
52 public void block() {
53 this.block = true;
54 }
55
56 @Override
57 public boolean isHandled() {
58 return this.block;
59 }
60
61}