blob: 905469f2b6addce1e3c18062479b84eb9070cf54 [file] [log] [blame]
alshabibca5706c2014-10-04 20:29:41 -07001package org.onlab.onos.net.flow;
2
3import static com.google.common.base.MoreObjects.toStringHelper;
4import static org.slf4j.LoggerFactory.getLogger;
5
6import org.onlab.onos.net.DeviceId;
7import org.slf4j.Logger;
8
Yuta HIGUCHIf6f50a62014-10-19 15:58:49 -07009public class DefaultFlowEntry extends DefaultFlowRule
10 implements FlowEntry, StoredFlowEntry {
alshabibca5706c2014-10-04 20:29:41 -070011
Yuta HIGUCHI3498aab2014-10-17 21:05:40 -070012 private static final Logger log = getLogger(DefaultFlowEntry.class);
alshabibca5706c2014-10-04 20:29:41 -070013
14 private long life;
15 private long packets;
16 private long bytes;
17 private FlowEntryState state;
18
19 private long lastSeen = -1;
20
alshabib193525b2014-10-08 18:58:03 -070021 private final int errType;
22
23 private final int errCode;
24
alshabibca5706c2014-10-04 20:29:41 -070025
26 public DefaultFlowEntry(DeviceId deviceId, TrafficSelector selector,
27 TrafficTreatment treatment, int priority, FlowEntryState state,
28 long life, long packets, long bytes, long flowId,
29 int timeout) {
30 super(deviceId, selector, treatment, priority, flowId, timeout);
31 this.state = state;
32 this.life = life;
33 this.packets = packets;
34 this.bytes = bytes;
alshabib193525b2014-10-08 18:58:03 -070035 this.errCode = -1;
36 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070037 this.lastSeen = System.currentTimeMillis();
38 }
39
40 public DefaultFlowEntry(FlowRule rule, FlowEntryState state,
41 long life, long packets, long bytes) {
42 super(rule);
43 this.state = state;
44 this.life = life;
45 this.packets = packets;
46 this.bytes = bytes;
alshabib193525b2014-10-08 18:58:03 -070047 this.errCode = -1;
48 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070049 this.lastSeen = System.currentTimeMillis();
50 }
51
52 public DefaultFlowEntry(FlowRule rule) {
53 super(rule);
54 this.state = FlowEntryState.PENDING_ADD;
55 this.life = 0;
56 this.packets = 0;
57 this.bytes = 0;
alshabib193525b2014-10-08 18:58:03 -070058 this.errCode = -1;
59 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070060 this.lastSeen = System.currentTimeMillis();
61 }
62
alshabib193525b2014-10-08 18:58:03 -070063 public DefaultFlowEntry(FlowRule rule, int errType, int errCode) {
64 super(rule);
65 this.state = FlowEntryState.FAILED;
66 this.errType = errType;
67 this.errCode = errCode;
68 }
69
alshabibca5706c2014-10-04 20:29:41 -070070 @Override
71 public long life() {
72 return life;
73 }
74
75 @Override
76 public long packets() {
77 return packets;
78 }
79
80 @Override
81 public long bytes() {
82 return bytes;
83 }
84
85 @Override
86 public FlowEntryState state() {
87 return this.state;
88 }
89
90 @Override
91 public long lastSeen() {
92 return lastSeen;
93 }
94
95 @Override
96 public void setLastSeen() {
97 this.lastSeen = System.currentTimeMillis();
98 }
99
100 @Override
101 public void setState(FlowEntryState newState) {
102 this.state = newState;
103 }
104
105 @Override
106 public void setLife(long life) {
107 this.life = life;
108 }
109
110 @Override
111 public void setPackets(long packets) {
112 this.packets = packets;
113 }
114
115 @Override
116 public void setBytes(long bytes) {
117 this.bytes = bytes;
118 }
119
120 @Override
alshabib193525b2014-10-08 18:58:03 -0700121 public int errType() {
122 return this.errType;
123 }
124
125 @Override
126 public int errCode() {
127 return this.errCode;
128 }
129
130 @Override
alshabibca5706c2014-10-04 20:29:41 -0700131 public String toString() {
132 return toStringHelper(this)
133 .add("rule", super.toString())
134 .add("state", state)
135 .toString();
136 }
137
138
alshabib193525b2014-10-08 18:58:03 -0700139
140
alshabibca5706c2014-10-04 20:29:41 -0700141}