refine seg allocation

pull/215/head
v2ray 9 years ago
parent 6efff7654c
commit 16d1b42f59
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

@ -215,6 +215,7 @@ func (kcp *KCP) flush() {
kcp.output.Write(seg)
kcp.lastPingTime = kcp.current
kcp.sendingUpdated = false
seg.Release()
}
// flash remain segments

@ -39,7 +39,7 @@ func (this *BufferedSegmentWriter) Write(seg Segment) {
this.buffer = alloc.NewSmallBuffer().Clear()
}
this.buffer.Append(seg.Bytes(nil))
this.buffer.Value = seg.Bytes(this.buffer.Value)
}
func (this *BufferedSegmentWriter) FlushWithoutLock() {

@ -112,6 +112,9 @@ L:
return totalBytes, errTimeout
}
timeToSleep += 500 * time.Millisecond
if timeToSleep > 5*time.Second {
timeToSleep = 5 * time.Second
}
}
}
@ -119,9 +122,6 @@ L:
}
func (this *ReceivingQueue) Put(payload *alloc.Buffer) bool {
this.Lock()
defer this.Unlock()
if this.closed {
payload.Release()
return false
@ -211,6 +211,7 @@ func (this *AckList) Flush(current uint32, rto uint32) {
this.Unlock()
if seg.Count > 0 {
this.writer.Write(seg)
seg.Release()
}
}
@ -268,6 +269,7 @@ func (this *ReceivingWorker) ProcessSegment(seg *DataSegment) {
}
seg.Data = nil
seg.Release()
this.window.Advance()
this.nextNumber++
this.updated = true

@ -230,9 +230,6 @@ func ReadSegment(buf []byte) (Segment, []byte) {
seg.Count = buf[0]
buf = buf[1:]
seg.NumberList = make([]uint32, 0, seg.Count)
seg.TimestampList = make([]uint32, 0, seg.Count)
if len(buf) < int(seg.Count)*8 {
return nil, nil
}

Loading…
Cancel
Save