This commit is contained in:
Administrator
2024-08-18 17:47:11 +08:00
parent e4f4c77c19
commit e243203535
121 changed files with 7499 additions and 2169 deletions
@@ -0,0 +1,74 @@
package org.kne.cloud.clock;
import java.util.concurrent.locks.ReentrantLock;
public class AdjustedNanoClock {
private ReentrantLock lock=new ReentrantLock();
public ReentrantLock getLock() {
return lock;
}
private volatile long delta=0;
private volatile long accuracy=Long.MAX_VALUE;
private boolean unsetted=true;
public long getCurrentTime() {
return System.nanoTime()+delta;
}
public AdjustedNanoClock(long delta) {
super();
this.delta = delta;
}
public AdjustedNanoClock() {
}
@Override
public String toString() {
return "AdjustedNanoClock [delta=" + delta + ", accuracy=" + accuracy + "]";
}
public long getDelta() {
return delta;
}
public void setDelta(long delta) {
this.delta = delta;
}
public void setCurrentTime(long curr) {
delta=curr-System.nanoTime();
}
public void setCurrentTime2(long curr) {
if(unsetted) {
unsetted=false;
delta=curr-System.nanoTime();
}else {
delta=(delta*9+ curr-System.nanoTime())/10;
}
}
public long getAccuracy() {
return accuracy;
}
public void calibrate(long delta,long taccurace) {
if(accuracy==Long.MAX_VALUE||taccurace<= accuracy) {
accuracy=taccurace;
unsetted=false;
this.delta=delta;
//System.out.println(delta+" "+currentTime+" "+taccurace);
}else {
accuracy=(accuracy*9999+taccurace)/10000;
}
}
public void calibrate2(long delta,long taccurace) {
if(accuracy==Long.MAX_VALUE||taccurace<= accuracy) {
accuracy=taccurace;
if(unsetted) {
unsetted=false;
this.delta=delta;
}else {
this.delta=(this.delta*9+delta)/10;
}
//System.out.println(delta+" "+currentTime+" "+taccurace);
}else {
accuracy=(accuracy*9999+taccurace)/10000;
}
}
}
@@ -0,0 +1,31 @@
package org.kne.cloud.clock;
public class ExponentialBackoffTimeClock {
private volatile long coolingTime=5000000000L;
{
resetCoolingTime();
}
public volatile long minCoolingTime=5000000000L,maxCoolingTime=300000000000L;
public ExponentialBackoffTimeClock(long minCoolingTime, long maxCoolingTime) {
super();
this.minCoolingTime = minCoolingTime;
this.maxCoolingTime = maxCoolingTime;
}
public ExponentialBackoffTimeClock() {
super();
}
public long getCoolingTime() {
return coolingTime;
}
public void incCoolingTime() {
coolingTime<<=1;
if(coolingTime>maxCoolingTime) {
coolingTime=maxCoolingTime;
}
}
public void resetCoolingTime() {
coolingTime=minCoolingTime;
}
}
@@ -0,0 +1,16 @@
package org.kne.cloud.clock;
public class ReliabilityBackoffTimeClock {
public volatile long maxCoolingTime=300000000000L;
public ReliabilityBackoffTimeClock(long maxCoolingTime) {
super();
this.maxCoolingTime = maxCoolingTime;
}
public ReliabilityBackoffTimeClock() {
super();
}
public long getCoolingTime(double reliability) {
return (long) ((1.0-reliability)*maxCoolingTime);
}
}