added files.
This commit is contained in:
commit
db0d8ce913
2186 files changed
+238581
No files matched your search
@@ -0,0 +1,116 @@
|
||||
package it.ytnoos.lpx.api.check;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class RepeatedIntervalCounter extends IntervalCounter {
|
||||
|
||||
private final int maxWarnings;
|
||||
|
||||
private final boolean[] periodWarnings;
|
||||
|
||||
private int period;
|
||||
|
||||
public RepeatedIntervalCounter(int value, int value2, int value3, int maxWarnings) {
|
||||
super(value, value2);
|
||||
this.maxWarnings = maxWarnings;
|
||||
this.periodWarnings = new boolean[value3];
|
||||
}
|
||||
|
||||
public RepeatedIntervalCounter(int value, int value2, int value3) {
|
||||
this(value, 616907311, value2, value3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean increment(double counter) {
|
||||
if (this.maxCounter < 0L) {
|
||||
return false;
|
||||
}
|
||||
boolean matches = this.advancePeriodsIfNeeded(System.currentTimeMillis());
|
||||
this.counter += counter;
|
||||
return matches;
|
||||
}
|
||||
|
||||
public boolean isOverLimit() {
|
||||
if (this.maxCounter < 0L) {
|
||||
return false;
|
||||
}
|
||||
this.advancePeriodsIfNeeded(System.currentTimeMillis());
|
||||
return this.counter > this.maxCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getValue() {
|
||||
this.advancePeriodsIfNeeded(System.currentTimeMillis());
|
||||
return this.counter;
|
||||
}
|
||||
|
||||
private boolean advancePeriods(int value) {
|
||||
if (value >= this.periodWarnings.length) {
|
||||
this.resetWarnings();
|
||||
this.period = 0;
|
||||
this.counter = 0.0;
|
||||
return false;
|
||||
}
|
||||
for (int index = 0; index < value; index++) {
|
||||
if (this.counter > this.maxCounter) {
|
||||
this.periodWarnings[this.period] = true;
|
||||
}
|
||||
this.period++;
|
||||
if (this.period > this.periodWarnings.length - 1) {
|
||||
this.period = 0;
|
||||
}
|
||||
this.periodWarnings[this.period] = false;
|
||||
this.counter = 0.0;
|
||||
}
|
||||
if (this.countWarnings() >= this.maxWarnings) {
|
||||
this.resetWarnings();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public int getPeriod() {
|
||||
return this.period;
|
||||
}
|
||||
|
||||
public int getWarnings() {
|
||||
this.advancePeriodsIfNeeded(System.currentTimeMillis());
|
||||
return this.countWarnings();
|
||||
}
|
||||
|
||||
public int getMaxPeriods() {
|
||||
return this.periodWarnings.length;
|
||||
}
|
||||
|
||||
public int getMaxWarnings() {
|
||||
return this.maxWarnings;
|
||||
}
|
||||
|
||||
public void resetWarnings() {
|
||||
Arrays.fill(this.periodWarnings, false);
|
||||
}
|
||||
|
||||
private boolean advancePeriodsIfNeeded(long value) {
|
||||
long value2;
|
||||
if ((value2 = value - this.startTime) < this.interval) {
|
||||
return false;
|
||||
}
|
||||
int value3 = (int) (value2 / this.interval);
|
||||
boolean matches = this.advancePeriods(value3);
|
||||
this.startTime = this.startTime + value3 * this.interval;
|
||||
return matches;
|
||||
}
|
||||
|
||||
private int countWarnings() {
|
||||
int value = 0;
|
||||
boolean[] matchess = this.periodWarnings;
|
||||
int value2 = this.periodWarnings.length;
|
||||
for (int index = 0; index < value2; index++) {
|
||||
if (matchess[index]) {
|
||||
value++;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user