1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-11-18 10:26:01 -05:00

buffer api

This commit is contained in:
Darien Raymond 2016-11-19 14:38:35 +01:00
parent ecd0cf2fe2
commit c884d04c7b
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
2 changed files with 14 additions and 14 deletions

View File

@ -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)
}

View File

@ -36,7 +36,7 @@ func (p *BufferPool) Allocate() *Buffer {
default:
b = p.allocator.Get().([]byte)
}
return CreateBuffer(b, p)
return CreateBuffer(b, defaultOffset, p)
}
func (p *BufferPool) Free(buffer *Buffer) {
@ -63,7 +63,6 @@ const (
var (
mediumPool *BufferPool
//largePool *BufferPool
)
func init() {
@ -77,5 +76,4 @@ func init() {
}
totalByteSize := size * 1024 * 1024
mediumPool = NewBufferPool(mediumBufferByteSize, totalByteSize/mediumBufferByteSize)
//largePool = NewBufferPool(largeBufferByteSize, totalByteSize/4/largeBufferByteSize)
}