mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-18 07:17:32 -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.output.Write(seg)
|
||||||
kcp.lastPingTime = kcp.current
|
kcp.lastPingTime = kcp.current
|
||||||
kcp.sendingUpdated = false
|
kcp.sendingUpdated = false
|
||||||
|
seg.Release()
|
||||||
}
|
}
|
||||||
|
|
||||||
// flash remain segments
|
// flash remain segments
|
||||||
|
@ -39,7 +39,7 @@ func (this *BufferedSegmentWriter) Write(seg Segment) {
|
|||||||
this.buffer = alloc.NewSmallBuffer().Clear()
|
this.buffer = alloc.NewSmallBuffer().Clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
this.buffer.Append(seg.Bytes(nil))
|
this.buffer.Value = seg.Bytes(this.buffer.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *BufferedSegmentWriter) FlushWithoutLock() {
|
func (this *BufferedSegmentWriter) FlushWithoutLock() {
|
||||||
|
@ -112,6 +112,9 @@ L:
|
|||||||
return totalBytes, errTimeout
|
return totalBytes, errTimeout
|
||||||
}
|
}
|
||||||
timeToSleep += 500 * time.Millisecond
|
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 {
|
func (this *ReceivingQueue) Put(payload *alloc.Buffer) bool {
|
||||||
this.Lock()
|
|
||||||
defer this.Unlock()
|
|
||||||
|
|
||||||
if this.closed {
|
if this.closed {
|
||||||
payload.Release()
|
payload.Release()
|
||||||
return false
|
return false
|
||||||
@ -211,6 +211,7 @@ func (this *AckList) Flush(current uint32, rto uint32) {
|
|||||||
this.Unlock()
|
this.Unlock()
|
||||||
if seg.Count > 0 {
|
if seg.Count > 0 {
|
||||||
this.writer.Write(seg)
|
this.writer.Write(seg)
|
||||||
|
seg.Release()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,6 +269,7 @@ func (this *ReceivingWorker) ProcessSegment(seg *DataSegment) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
seg.Data = nil
|
seg.Data = nil
|
||||||
|
seg.Release()
|
||||||
this.window.Advance()
|
this.window.Advance()
|
||||||
this.nextNumber++
|
this.nextNumber++
|
||||||
this.updated = true
|
this.updated = true
|
||||||
|
@ -230,9 +230,6 @@ func ReadSegment(buf []byte) (Segment, []byte) {
|
|||||||
seg.Count = buf[0]
|
seg.Count = buf[0]
|
||||||
buf = buf[1:]
|
buf = buf[1:]
|
||||||
|
|
||||||
seg.NumberList = make([]uint32, 0, seg.Count)
|
|
||||||
seg.TimestampList = make([]uint32, 0, seg.Count)
|
|
||||||
|
|
||||||
if len(buf) < int(seg.Count)*8 {
|
if len(buf) < int(seg.Count)*8 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user