forked from KNEMC/KLALB
KLALB V3.4
This commit is contained in:
@@ -11,7 +11,7 @@ public class SpeedLimiter {
|
||||
return hitlimit;
|
||||
}
|
||||
private volatile long limitspeed=1024*1024;
|
||||
private long brustTime=1000000L;
|
||||
private long brustTime=2000000L;
|
||||
private volatile boolean hitlimit=false;
|
||||
public long getLimitspeed() {
|
||||
return limitspeed;
|
||||
@@ -43,7 +43,8 @@ public class SpeedLimiter {
|
||||
private AtomicLong waitingtime=new AtomicLong();
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SpeedLimiter [limitspeed=" + limitspeed + "]";
|
||||
return "SpeedLimiter [limitspeed=" + limitspeed + ", brustTime=" + brustTime + ", hitlimit=" + hitlimit
|
||||
+ ", ltime=" + ltime + ", waitingtime=" + waitingtime + "]";
|
||||
}
|
||||
public void forceTransmit(long datasize) {
|
||||
long limitspeedx=limitspeed;
|
||||
@@ -60,7 +61,7 @@ public class SpeedLimiter {
|
||||
}
|
||||
|
||||
});
|
||||
waitingtime.addAndGet(datasize*1000000000L/limitspeedx);
|
||||
waitingtime.addAndGet((long) (datasize*1000000000.0/limitspeedx));
|
||||
}
|
||||
}
|
||||
//用系统计时器的时刻相减得到经过的时间,与数据包除以限速值得到的应消耗的时间做对比,若时间还未到达发送下一个数据包的时机,则返回false
|
||||
@@ -83,17 +84,18 @@ public class SpeedLimiter {
|
||||
|
||||
});
|
||||
if(nv<=brustTime) {
|
||||
waitingtime.addAndGet(datasize*1000000000L/limitspeedx);
|
||||
//System.out.println(limitspeed);
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public void transmit(long datasize) {
|
||||
long limitspeedx=limitspeed;
|
||||
while(!checkTransmit(datasize)) {
|
||||
LockSupport.parkNanos(100000);
|
||||
//LockSupport.parkNanos(100000);
|
||||
Thread.yield();
|
||||
}
|
||||
waitingtime.addAndGet((long) (datasize*1000000000.0/limitspeedx));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user