mirror of https://github.com/v2ray/v2ray-core
limit size of written data
parent
2cf44393fb
commit
b575de2a55
|
@ -167,8 +167,11 @@ func (b *Buffer) IsFull() bool {
|
||||||
|
|
||||||
// Write implements Write method in io.Writer.
|
// Write implements Write method in io.Writer.
|
||||||
func (b *Buffer) Write(data []byte) (int, error) {
|
func (b *Buffer) Write(data []byte) (int, error) {
|
||||||
b.Append(data)
|
begin := b.Len()
|
||||||
return len(data), nil
|
b.Value = b.Value[:cap(b.Value)]
|
||||||
|
nBytes := copy(b.Value[begin:], data)
|
||||||
|
b.Value = b.Value[:begin+nBytes]
|
||||||
|
return nBytes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read implements io.Reader.Read().
|
// Read implements io.Reader.Read().
|
||||||
|
|
|
@ -59,6 +59,19 @@ func TestBufferString(t *testing.T) {
|
||||||
assert.String(buffer.String()).Equals("Test String")
|
assert.String(buffer.String()).Equals("Test String")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBufferWrite(t *testing.T) {
|
||||||
|
assert := assert.On(t)
|
||||||
|
|
||||||
|
buffer := NewLocalBuffer(24).Clear() // 16 + 8
|
||||||
|
nBytes, err := buffer.Write([]byte("abcd"))
|
||||||
|
assert.Error(err).IsNil()
|
||||||
|
assert.Int(nBytes).Equals(4)
|
||||||
|
nBytes, err = buffer.Write([]byte("abcde"))
|
||||||
|
assert.Error(err).IsNil()
|
||||||
|
assert.Int(nBytes).Equals(4)
|
||||||
|
assert.String(buffer.String()).Equals("abcdabcd")
|
||||||
|
}
|
||||||
|
|
||||||
func BenchmarkNewBuffer8192(b *testing.B) {
|
func BenchmarkNewBuffer8192(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
buffer := NewBuffer()
|
buffer := NewBuffer()
|
||||||
|
|
Loading…
Reference in New Issue