1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-12-29 05:25:21 -05:00

refactor MultiBuffer append

This commit is contained in:
Darien Raymond
2018-11-17 09:12:20 +01:00
parent 650f5e6350
commit 27772a75a7
10 changed files with 24 additions and 27 deletions

View File

@@ -38,16 +38,13 @@ func ReadAllToBytes(reader io.Reader) ([]byte, error) {
// MultiBuffer is a list of Buffers. The order of Buffer matters.
type MultiBuffer []*Buffer
// Append appends buffer to the end of this MultiBuffer
func (mb *MultiBuffer) Append(buf *Buffer) {
if buf != nil {
*mb = append(*mb, buf)
// MergeMulti merges content from src to dest, and returns the new address of dest and src
func MergeMulti(dest MultiBuffer, src MultiBuffer) (MultiBuffer, MultiBuffer) {
dest = append(dest, src...)
for idx := range src {
src[idx] = nil
}
}
// AppendMulti appends a MultiBuffer to the end of this one.
func (mb *MultiBuffer) AppendMulti(buf MultiBuffer) {
*mb = append(*mb, buf...)
return dest, src[:0]
}
// Copy copied the beginning part of the MultiBuffer into the given byte array.
@@ -73,7 +70,7 @@ func (mb *MultiBuffer) ReadFrom(reader io.Reader) (int64, error) {
if b.IsEmpty() {
b.Release()
} else {
mb.Append(b)
*mb = append(*mb, b)
}
totalBytes += int64(b.Len())
if err != nil {
@@ -138,7 +135,7 @@ func (mb *MultiBuffer) Write(b []byte) (int, error) {
bb := New()
nBytes, _ := bb.Write(b)
b = b[nBytes:]
mb.Append(bb)
*mb = append(*mb, bb)
}
return totalBytes, nil
@@ -204,7 +201,7 @@ func (mb *MultiBuffer) SliceBySize(size int32) MultiBuffer {
break
}
sliceSize += b.Len()
slice.Append(b)
slice = append(slice, b)
(*mb)[i] = nil
}
*mb = (*mb)[endIndex:]