blob: 3c2b0ea27a087866bbf22e0f806e377ae10e635d [file] [log] [blame]
alshabibf6d77962014-09-12 16:25:21 -07001package org.onlab.onos.net.packet;
2
alshabib63d5afe2014-09-15 09:40:24 -07003import java.util.concurrent.atomic.AtomicBoolean;
4
alshabib1d4cace2014-09-13 19:16:26 -07005import org.onlab.onos.net.flow.DefaultTrafficTreatment;
6import org.onlab.onos.net.flow.TrafficTreatment;
7import org.onlab.onos.net.flow.TrafficTreatment.Builder;
8
alshabibf6d77962014-09-12 16:25:21 -07009
10public abstract class DefaultPacketContext implements PacketContext {
11
12 private final long time;
13 private final InboundPacket inPkt;
14 private final OutboundPacket outPkt;
alshabib1d4cace2014-09-13 19:16:26 -070015 private final TrafficTreatment.Builder builder;
16
alshabib63d5afe2014-09-15 09:40:24 -070017 private final AtomicBoolean block;
alshabibf6d77962014-09-12 16:25:21 -070018
alshabib1d4cace2014-09-13 19:16:26 -070019
alshabibf6d77962014-09-12 16:25:21 -070020 protected DefaultPacketContext(long time, InboundPacket inPkt,
21 OutboundPacket outPkt, boolean block) {
22 super();
23 this.time = time;
24 this.inPkt = inPkt;
25 this.outPkt = outPkt;
alshabib63d5afe2014-09-15 09:40:24 -070026 this.block = new AtomicBoolean(block);
alshabib1d4cace2014-09-13 19:16:26 -070027 this.builder = new DefaultTrafficTreatment.Builder();
alshabibf6d77962014-09-12 16:25:21 -070028 }
29
30 @Override
31 public long time() {
32 return time;
33 }
34
35 @Override
36 public InboundPacket inPacket() {
37 return inPkt;
38 }
39
40 @Override
41 public OutboundPacket outPacket() {
42 return outPkt;
43 }
44
45 @Override
alshabib1d4cace2014-09-13 19:16:26 -070046 public Builder treatmentBuilder() {
47 return builder;
48 }
49
50 @Override
alshabibf6d77962014-09-12 16:25:21 -070051 public abstract void send();
52
53 @Override
alshabib63d5afe2014-09-15 09:40:24 -070054 public boolean blocked() {
55 return this.block.getAndSet(true);
alshabibf6d77962014-09-12 16:25:21 -070056 }
57
58 @Override
59 public boolean isHandled() {
alshabib63d5afe2014-09-15 09:40:24 -070060 return this.block.get();
alshabibf6d77962014-09-12 16:25:21 -070061 }
alshabibf6d77962014-09-12 16:25:21 -070062}