mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-02 23:47:07 -05:00
refine seg allocation
This commit is contained in:
parent
6efff7654c
commit
16d1b42f59
@ -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…
Reference in New Issue
Block a user