refine buffer struct

pull/215/head
v2ray 8 years ago
parent 631db6e69a
commit 9523cb3ec3
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

@ -21,9 +21,18 @@ type Buffer struct {
offset int
}
func CreateBuffer(container []byte, parent *BufferPool) *Buffer {
b := new(Buffer)
b.head = container
b.pool = parent
b.Value = b.head[defaultOffset:]
b.offset = defaultOffset
return b
}
// Release recycles the buffer into an internal buffer pool.
func (b *Buffer) Release() {
if b == nil {
if b == nil || b.head == nil {
return
}
b.pool.Free(b)
@ -122,7 +131,7 @@ func (b *Buffer) SliceFrom(from int) *Buffer {
func (b *Buffer) SliceBack(offset int) *Buffer {
newoffset := b.offset - offset
if newoffset < 0 {
newoffset = 0
panic("Negative buffer offset.")
}
b.Value = b.head[newoffset : b.offset+len(b.Value)]
b.offset = newoffset

@ -29,12 +29,7 @@ func (p *BufferPool) Allocate() *Buffer {
default:
b = p.allocator.Get().([]byte)
}
return &Buffer{
head: b,
pool: p,
Value: b[defaultOffset:],
offset: defaultOffset,
}
return CreateBuffer(b, p)
}
func (p *BufferPool) Free(buffer *Buffer) {

Loading…
Cancel
Save