修复滑动窗口出现负数的bug
This commit is contained in:
@@ -3,7 +3,6 @@ package org.kne.cloud.network.kltp;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.BindException;
|
||||
import java.net.Inet6Address;
|
||||
import java.net.SocketException;
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.nio.ByteBuffer;
|
||||
@@ -11,14 +10,11 @@ import java.nio.channels.WritableByteChannel;
|
||||
|
||||
import org.kne.cloud.network.klalb.KLALBScheduler;
|
||||
import org.kne.concurrent.*;
|
||||
import org.kne.cloud.network.NetworkPacket;
|
||||
import org.kne.cloud.network.congestion.CongestionAlgorithm;
|
||||
import org.kne.cloud.network.congestion.DCTCP2CongestionAlgorithm;
|
||||
import org.kne.cloud.network.congestion.DCTCPCongestionAlgorithm;
|
||||
import org.kne.cloud.network.congestion.SendPacketSlidingWindow;
|
||||
import org.kne.cloud.network.ipv6.IPv6Address;
|
||||
import org.kne.cloud.network.ipv6.IPv6Packet;
|
||||
import org.kne.cloud.network.klalb.DATATPacket;
|
||||
import org.kne.cloud.network.klalb.KLALBController;
|
||||
|
||||
import java.util.UUID;
|
||||
@@ -240,19 +236,23 @@ public class KLTPOutputStream extends OutputStream implements KLTPPacketConsumer
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if(sendMap.isClosed())
|
||||
if(sendMap.isClosed()) {
|
||||
tt.cancel(false);
|
||||
try {
|
||||
if(olock!=null)
|
||||
olock.lock();
|
||||
}else if(!sendMap.isCongestion()){
|
||||
try {
|
||||
flush0();
|
||||
}finally {
|
||||
if(olock!=null)
|
||||
olock.unlock();
|
||||
if (olock != null)
|
||||
olock.lock();
|
||||
try {
|
||||
if(!sendMap.isCongestion()) {
|
||||
flush0();
|
||||
}
|
||||
} finally {
|
||||
if (olock != null)
|
||||
olock.unlock();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
ioe.set(e);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
ioe.set(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -273,7 +273,7 @@ public class KLTPOutputStream extends OutputStream implements KLTPPacketConsumer
|
||||
|
||||
sendMap.waitForAvaliable();
|
||||
|
||||
controller.getIpv6Router().runPacketSendTask(()->{
|
||||
controller.getIpv6Router().enqueuePacketSendTask(()->{
|
||||
pack.getKLTPData().flip();
|
||||
pack.incSendCounter();
|
||||
sendMap.put(pack.getSequence(),pack);
|
||||
@@ -355,7 +355,7 @@ public class KLTPOutputStream extends OutputStream implements KLTPPacketConsumer
|
||||
KLTPPacket kltp=(KLTPPacket) u.getPayload();
|
||||
switch(kltp.getType()) {
|
||||
case KLTPPacket.KLTP_TYPE_ACK:
|
||||
sendMap.ack(kltp.getSequence(), kltp.isCE());
|
||||
sendMap.ack(kltp.getSequence(),0, kltp.isCE());
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user