Przeglądaj źródła

rename buffer size

Darien Raymond 9 lat temu
rodzic
commit
2ae8e5d033

+ 16 - 8
transport/internet/kcp/config.go

@@ -40,12 +40,12 @@ func (this *Config) GetSendingInFlightSize() uint32 {
 	return size
 }
 
-func (this *Config) GetSendingWindowSize() uint32 {
-	return this.GetSendingInFlightSize() * 4
-}
-
-func (this *Config) GetSendingQueueSize() uint32 {
-	return this.WriteBuffer / this.Mtu
+func (this *Config) GetSendingBufferSize() uint32 {
+	size := this.WriteBuffer / this.Mtu
+	if size < this.GetSendingInFlightSize() {
+		size = this.GetSendingInFlightSize()
+	}
+	return size
 }
 
 func (this *Config) GetReceivingWindowSize() uint32 {
@@ -56,8 +56,16 @@ func (this *Config) GetReceivingWindowSize() uint32 {
 	return size
 }
 
-func (this *Config) GetReceivingQueueSize() uint32 {
-	return this.ReadBuffer / this.Mtu
+func (this *Config) GetReceivingBufferSize() uint32 {
+	bufferSize := this.ReadBuffer / this.Mtu
+	windowSize := this.DownlinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti) / 2
+	if windowSize < 8 {
+		windowSize = 8
+	}
+	if bufferSize < windowSize {
+		bufferSize = windowSize
+	}
+	return bufferSize
 }
 
 func DefaultConfig() Config {

+ 1 - 1
transport/internet/kcp/receiving.go

@@ -123,7 +123,7 @@ type ReceivingWorker struct {
 }
 
 func NewReceivingWorker(kcp *Connection) *ReceivingWorker {
-	windowSize := effectiveConfig.GetReceivingQueueSize()
+	windowSize := effectiveConfig.GetReceivingBufferSize()
 	worker := &ReceivingWorker{
 		conn:       kcp,
 		window:     NewReceivingWindow(windowSize),

+ 1 - 1
transport/internet/kcp/sending.go

@@ -195,7 +195,7 @@ func NewSendingWorker(kcp *Connection) *SendingWorker {
 		remoteNextNumber: 32,
 		controlWindow:    effectiveConfig.GetSendingInFlightSize(),
 	}
-	worker.window = NewSendingWindow(effectiveConfig.GetSendingQueueSize(), worker, worker.OnPacketLoss)
+	worker.window = NewSendingWindow(effectiveConfig.GetSendingBufferSize(), worker, worker.OnPacketLoss)
 	return worker
 }