improve WallFilter

This commit is contained in:
wenshao
2013-03-17 11:41:35 +08:00
parent 80bbefa088
commit 88a6222d15
5 changed files with 56 additions and 14 deletions
@@ -1,19 +1,46 @@
package com.alibaba.druid.wall;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
public class WallDenyStat {
private volatile long denyCount;
final static AtomicLongFieldUpdater<WallDenyStat> denyCountUpdater = AtomicLongFieldUpdater.newUpdater(WallDenyStat.class,
"denyCount");
private volatile long lastDenyTimeMillis;
private volatile long resetCount;
final static AtomicLongFieldUpdater<WallDenyStat> denyCountUpdater = AtomicLongFieldUpdater.newUpdater(WallDenyStat.class,
"denyCount");
final static AtomicLongFieldUpdater<WallDenyStat> resetCountUpdater = AtomicLongFieldUpdater.newUpdater(WallDenyStat.class,
"resetCount");
public long incrementAndGetDenyCount() {
lastDenyTimeMillis = System.currentTimeMillis();
return denyCountUpdater.incrementAndGet(this);
}
public long getDenyCount() {
return denyCount;
}
public Date getLastDenyTime() {
if (lastDenyTimeMillis <= 0) {
return null;
}
return new Date(lastDenyTimeMillis);
}
public void reset() {
lastDenyTimeMillis = 0;
denyCount = 0;
resetCountUpdater.incrementAndGet(this);
}
public long getResetCount() {
return this.resetCount;
}
}