blob: d4657d23e664fc1da3daee5873312bca80920e51 [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
9public class DefaultFlowEntry extends DefaultFlowRule implements FlowEntry {
10
11 private final Logger log = getLogger(getClass());
12
13 private long life;
14 private long packets;
15 private long bytes;
16 private FlowEntryState state;
17
18 private long lastSeen = -1;
19
alshabib193525b2014-10-08 18:58:03 -070020 private final int errType;
21
22 private final int errCode;
23
alshabibca5706c2014-10-04 20:29:41 -070024
25 public DefaultFlowEntry(DeviceId deviceId, TrafficSelector selector,
26 TrafficTreatment treatment, int priority, FlowEntryState state,
27 long life, long packets, long bytes, long flowId,
28 int timeout) {
29 super(deviceId, selector, treatment, priority, flowId, timeout);
30 this.state = state;
31 this.life = life;
32 this.packets = packets;
33 this.bytes = bytes;
alshabib193525b2014-10-08 18:58:03 -070034 this.errCode = -1;
35 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070036 this.lastSeen = System.currentTimeMillis();
37 }
38
39 public DefaultFlowEntry(FlowRule rule, FlowEntryState state,
40 long life, long packets, long bytes) {
41 super(rule);
42 this.state = state;
43 this.life = life;
44 this.packets = packets;
45 this.bytes = bytes;
alshabib193525b2014-10-08 18:58:03 -070046 this.errCode = -1;
47 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070048 this.lastSeen = System.currentTimeMillis();
49 }
50
51 public DefaultFlowEntry(FlowRule rule) {
52 super(rule);
53 this.state = FlowEntryState.PENDING_ADD;
54 this.life = 0;
55 this.packets = 0;
56 this.bytes = 0;
alshabib193525b2014-10-08 18:58:03 -070057 this.errCode = -1;
58 this.errType = -1;
alshabibca5706c2014-10-04 20:29:41 -070059 this.lastSeen = System.currentTimeMillis();
60 }
61
alshabib193525b2014-10-08 18:58:03 -070062 public DefaultFlowEntry(FlowRule rule, int errType, int errCode) {
63 super(rule);
64 this.state = FlowEntryState.FAILED;
65 this.errType = errType;
66 this.errCode = errCode;
67 }
68
alshabibca5706c2014-10-04 20:29:41 -070069 @Override
70 public long life() {
71 return life;
72 }
73
74 @Override
75 public long packets() {
76 return packets;
77 }
78
79 @Override
80 public long bytes() {
81 return bytes;
82 }
83
84 @Override
85 public FlowEntryState state() {
86 return this.state;
87 }
88
89 @Override
90 public long lastSeen() {
91 return lastSeen;
92 }
93
94 @Override
95 public void setLastSeen() {
96 this.lastSeen = System.currentTimeMillis();
97 }
98
99 @Override
100 public void setState(FlowEntryState newState) {
101 this.state = newState;
102 }
103
104 @Override
105 public void setLife(long life) {
106 this.life = life;
107 }
108
109 @Override
110 public void setPackets(long packets) {
111 this.packets = packets;
112 }
113
114 @Override
115 public void setBytes(long bytes) {
116 this.bytes = bytes;
117 }
118
119 @Override
alshabib193525b2014-10-08 18:58:03 -0700120 public int errType() {
121 return this.errType;
122 }
123
124 @Override
125 public int errCode() {
126 return this.errCode;
127 }
128
129 @Override
alshabibca5706c2014-10-04 20:29:41 -0700130 public String toString() {
131 return toStringHelper(this)
132 .add("rule", super.toString())
133 .add("state", state)
134 .toString();
135 }
136
137
alshabib193525b2014-10-08 18:58:03 -0700138
139
alshabibca5706c2014-10-04 20:29:41 -0700140}