added files.

This commit is contained in:
nitrogenoliquido committed 2026-11-01 21:26:40 -05:00
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;
}
}