瀏覽代碼

refine kcp output

Darien Raymond 8 年之前
父節點
當前提交
3643dc37e0
共有 2 個文件被更改,包括 5 次插入5 次删除
  1. 1 2
      transport/internet/kcp/output.go
  2. 4 3
      transport/internet/kcp/segment.go

+ 1 - 2
transport/internet/kcp/output.go

@@ -28,8 +28,7 @@ func (v *SimpleSegmentWriter) Write(seg Segment) error {
 	v.Lock()
 	defer v.Unlock()
 
-	v.buffer.AppendSupplier(seg.Bytes())
+	v.buffer.Reset(seg.Bytes())
 	_, err := v.writer.Write(v.buffer.Bytes())
-	v.buffer.Clear()
 	return err
 }

+ 4 - 3
transport/internet/kcp/segment.go

@@ -61,12 +61,13 @@ func (v *DataSegment) Command() Command {
 	return CommandData
 }
 
-func (v *DataSegment) SetData(b []byte) {
+func (v *DataSegment) SetData(data []byte) {
 	if v.Data == nil {
 		v.Data = buf.NewSmall()
 	}
-	v.Data.Clear()
-	v.Data.Append(b)
+	v.Data.Reset(func(b []byte) (int, error) {
+		return copy(b, data), nil
+	})
 }
 
 func (v *DataSegment) Bytes() buf.Supplier {