Преглед на файлове

adjust receiving buffer size

Darien Raymond преди 9 години
родител
ревизия
fcad4aa212
променени са 2 файла, в които са добавени 8 реда и са изтрити 5 реда
  1. 5 2
      transport/internet/kcp/config.go
  2. 3 3
      transport/internet/kcp/receiving.go

+ 5 - 2
transport/internet/kcp/config.go

@@ -44,15 +44,18 @@ func (this *Config) GetSendingBufferSize() uint32 {
 	return this.GetSendingInFlightSize() + this.WriteBuffer/this.Mtu
 }
 
-func (this *Config) GetReceivingBufferSize() uint32 {
+func (this *Config) GetReceivingInFlightSize() uint32 {
 	size := this.DownlinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti) / 2
 	if size < 8 {
 		size = 8
 	}
-	size += this.ReadBuffer / this.Mtu
 	return size
 }
 
+func (this *Config) GetReceivingBufferSize() uint32 {
+	return this.GetReceivingInFlightSize() + this.ReadBuffer/this.Mtu
+}
+
 func DefaultConfig() Config {
 	return Config{
 		Mtu:              1350,

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

@@ -123,11 +123,10 @@ type ReceivingWorker struct {
 }
 
 func NewReceivingWorker(kcp *Connection) *ReceivingWorker {
-	windowSize := effectiveConfig.GetReceivingBufferSize()
 	worker := &ReceivingWorker{
 		conn:       kcp,
-		window:     NewReceivingWindow(windowSize),
-		windowSize: windowSize,
+		window:     NewReceivingWindow(effectiveConfig.GetReceivingBufferSize()),
+		windowSize: effectiveConfig.GetReceivingInFlightSize(),
 	}
 	worker.acklist = NewAckList(worker)
 	return worker
@@ -155,6 +154,7 @@ func (this *ReceivingWorker) ProcessSegment(seg *DataSegment) {
 	if !this.window.Set(idx, seg) {
 		seg.Release()
 	}
+	this.updated = true
 }
 
 func (this *ReceivingWorker) Read(b []byte) int {