mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve WallFilter
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user