|
|
|
@ -16,18 +16,20 @@ const (
|
|
|
|
|
// the buffer into an internal buffer pool, in order to recreate a buffer more
|
|
|
|
|
// quickly.
|
|
|
|
|
type Buffer struct {
|
|
|
|
|
head []byte
|
|
|
|
|
pool Pool
|
|
|
|
|
Value []byte
|
|
|
|
|
offset int
|
|
|
|
|
head []byte
|
|
|
|
|
pool Pool
|
|
|
|
|
Value []byte
|
|
|
|
|
offset int
|
|
|
|
|
startingOffset int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func CreateBuffer(container []byte, parent Pool) *Buffer {
|
|
|
|
|
func CreateBuffer(container []byte, offset int, parent Pool) *Buffer {
|
|
|
|
|
b := new(Buffer)
|
|
|
|
|
b.head = container
|
|
|
|
|
b.pool = parent
|
|
|
|
|
b.Value = b.head[defaultOffset:]
|
|
|
|
|
b.offset = defaultOffset
|
|
|
|
|
b.Value = b.head[offset:]
|
|
|
|
|
b.offset = offset
|
|
|
|
|
b.startingOffset = offset
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -47,15 +49,15 @@ func (b *Buffer) Release() {
|
|
|
|
|
// Clear clears the content of the buffer, results an empty buffer with
|
|
|
|
|
// Len() = 0.
|
|
|
|
|
func (b *Buffer) Clear() *Buffer {
|
|
|
|
|
b.offset = defaultOffset
|
|
|
|
|
b.offset = b.startingOffset
|
|
|
|
|
b.Value = b.head[b.offset:b.offset]
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Reset resets this Buffer into its original state.
|
|
|
|
|
func (b *Buffer) Reset() *Buffer {
|
|
|
|
|
b.offset = defaultOffset
|
|
|
|
|
b.Value = b.head
|
|
|
|
|
b.offset = b.startingOffset
|
|
|
|
|
b.Value = b.head[b.offset:]
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -219,5 +221,5 @@ func NewBuffer() *Buffer {
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
func NewLocalBuffer(size int) *Buffer {
|
|
|
|
|
return CreateBuffer(make([]byte, size), nil)
|
|
|
|
|
return CreateBuffer(make([]byte, size), defaultOffset, nil)
|
|
|
|
|
}
|
|
|
|
|