rewrite alloc.buffer

This commit is contained in:
Darien Raymond
2016-12-06 11:03:42 +01:00
parent 4bf8288cc2
commit 8c8f0a53fd
51 changed files with 391 additions and 299 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ func MarshalCommand(command interface{}, writer io.Writer) error {
return ErrUnknownCommand
}
buffer := alloc.NewLocalBuffer(512).Clear()
buffer := alloc.NewLocalBuffer(512)
defer buffer.Release()
err := factory.Marshal(command, buffer)
+1 -1
View File
@@ -21,7 +21,7 @@ func TestSwitchAccount(t *testing.T) {
ValidMin: 16,
}
buffer := alloc.NewBuffer().Clear()
buffer := alloc.NewBuffer()
err := MarshalCommand(sa, buffer)
assert.Error(err).IsNil()
+1 -1
View File
@@ -35,7 +35,7 @@ func TestRequestSerialization(t *testing.T) {
Port: v2net.Port(443),
}
buffer := alloc.NewBuffer().Clear()
buffer := alloc.NewBuffer()
client := NewClientSession(protocol.DefaultIDHash)
client.EncodeRequestHeader(expectedRequest, buffer)
+1 -1
View File
@@ -236,7 +236,7 @@ func (v *VMessInboundHandler) HandleConnection(connection internet.Connection) {
}
output.Release()
if request.Option.Has(protocol.RequestOptionChunkStream) {
if err := v2writer.Write(alloc.NewLocalBuffer(32).Clear()); err != nil {
if err := v2writer.Write(alloc.NewLocalBuffer(32)); err != nil {
connection.SetReusable(false)
}
}
+12 -5
View File
@@ -9,6 +9,7 @@ import (
"v2ray.com/core/common/alloc"
"v2ray.com/core/common/errors"
v2io "v2ray.com/core/common/io"
"v2ray.com/core/common/serial"
. "v2ray.com/core/proxy/vmess/io"
"v2ray.com/core/testing/assert"
)
@@ -16,7 +17,7 @@ import (
func TestAuthenticate(t *testing.T) {
assert := assert.On(t)
buffer := alloc.NewBuffer().Clear()
buffer := alloc.NewBuffer()
buffer.AppendBytes(1, 2, 3, 4)
Authenticate(buffer)
assert.Bytes(buffer.Bytes()).Equals([]byte{0, 8, 87, 52, 168, 125, 1, 2, 3, 4})
@@ -32,8 +33,10 @@ func TestSingleIO(t *testing.T) {
content := bytes.NewBuffer(make([]byte, 0, 1024*1024))
writer := NewAuthChunkWriter(v2io.NewAdaptiveWriter(content))
writer.Write(alloc.NewBuffer().Clear().AppendString("abcd"))
writer.Write(alloc.NewBuffer().Clear())
b := alloc.NewBuffer()
b.AppendFunc(serial.WriteString("abcd"))
writer.Write(b)
writer.Write(alloc.NewBuffer())
writer.Release()
reader := NewAuthChunkReader(content)
@@ -56,13 +59,17 @@ func TestLargeIO(t *testing.T) {
if chunkSize+writeSize > len(content) {
chunkSize = len(content) - writeSize
}
writer.Write(alloc.NewBuffer().Clear().Append(content[writeSize : writeSize+chunkSize]))
b := alloc.NewBuffer()
b.Append(content[writeSize : writeSize+chunkSize])
writer.Write(b)
b.Release()
writeSize += chunkSize
if writeSize == len(content) {
break
}
}
writer.Write(alloc.NewBuffer().Clear())
writer.Write(alloc.NewBuffer())
writer.Release()
actualContent := make([]byte, 0, len(content))
+2 -2
View File
@@ -50,7 +50,7 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
buffer = v.last
v.last = nil
} else {
buffer = alloc.NewBuffer().Clear()
buffer = alloc.NewBuffer()
}
if v.chunkLength == -1 {
@@ -96,7 +96,7 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
}
leftLength := buffer.Len() - v.chunkLength
if leftLength > 0 {
v.last = alloc.NewBuffer().Clear()
v.last = alloc.NewBuffer()
v.last.Append(buffer.BytesFrom(v.chunkLength))
buffer.Slice(0, v.chunkLength)
}
+3 -2
View File
@@ -5,6 +5,7 @@ import (
"v2ray.com/core/common/alloc"
v2io "v2ray.com/core/common/io"
"v2ray.com/core/common/serial"
)
type AuthChunkWriter struct {
@@ -30,7 +31,7 @@ func (v *AuthChunkWriter) Release() {
func Authenticate(buffer *alloc.Buffer) {
fnvHash := fnv.New32a()
fnvHash.Write(buffer.Bytes())
buffer.PrependHash(fnvHash)
buffer.PrependFunc(4, serial.WriteHash(fnvHash))
buffer.PrependUint16(uint16(buffer.Len()))
buffer.PrependFunc(2, serial.WriteUint16(uint16(buffer.Len())))
}
+1 -1
View File
@@ -111,7 +111,7 @@ func (v *VMessOutboundHandler) handleRequest(session *encoding.ClientSession, co
}
if request.Option.Has(protocol.RequestOptionChunkStream) {
err := streamWriter.Write(alloc.NewLocalBuffer(32).Clear())
err := streamWriter.Write(alloc.NewLocalBuffer(32))
if err != nil {
conn.SetReusable(false)
}