Documentation
¶
Overview ¶
Package buf provides a light-weight memory allocation mechanism.
Index ¶
- Constants
- func Pipe(reader Reader, writer Writer) error
- func PipeUntilEOF(reader Reader, writer Writer) error
- type Buffer
- func (b *Buffer) Append(data []byte)
- func (b *Buffer) AppendBytes(bytes ...byte)
- func (b *Buffer) AppendSupplier(writer Supplier) error
- func (b *Buffer) Byte(index int) byte
- func (b *Buffer) Bytes() []byte
- func (b *Buffer) BytesFrom(from int) []byte
- func (b *Buffer) BytesRange(from, to int) []byte
- func (b *Buffer) BytesTo(to int) []byte
- func (b *Buffer) Clear()
- func (b *Buffer) IsEmpty() bool
- func (b *Buffer) IsFull() bool
- func (b *Buffer) Len() int
- func (b *Buffer) Read(data []byte) (int, error)
- func (b *Buffer) Release()
- func (b *Buffer) Reset(writer Supplier) error
- func (b *Buffer) SetByte(index int, value byte)
- func (b *Buffer) Slice(from, to int)
- func (b *Buffer) SliceFrom(from int)
- func (b *Buffer) String() string
- func (b *Buffer) Write(data []byte) (int, error)
- type BufferPool
- type BufferToBytesReader
- type BufferToBytesWriter
- type BytesToBufferReader
- type BytesToBufferWriter
- type Pool
- type Reader
- type Supplier
- type SyncPool
- type Writer
Constants ¶
const (
// Size of a regular buffer.
Size = 8 * 1024
// SizeSmall is the size of a small buffer.
SizeSmall = 2 * 1024
)
Variables ¶
This section is empty.
Functions ¶
func Pipe ¶
func Pipe(reader Reader, writer Writer) error
Pipe dumps all content from reader to writer, until an error happens.
func PipeUntilEOF ¶
func PipeUntilEOF(reader Reader, writer Writer) error
PipeUntilEOF behaves the same as Pipe(). The only difference is PipeUntilEOF returns nil on EOF.
Types ¶
type Buffer ¶
type Buffer struct {
// contains filtered or unexported fields
}
Buffer is a recyclable allocation of a byte array. Buffer.Release() recycles the buffer into an internal buffer pool, in order to recreate a buffer more quickly.
func NewLocal ¶
func NewLocal(size int) *Buffer
NewLocal creates and returns a buffer on current thread.
func (*Buffer) Append ¶
func (b *Buffer) Append(data []byte)
Append appends a byte array to the end of the buffer.
func (*Buffer) AppendBytes ¶
func (b *Buffer) AppendBytes(bytes ...byte)
AppendBytes appends one or more bytes to the end of the buffer.
func (*Buffer) AppendSupplier ¶
func (b *Buffer) AppendSupplier(writer Supplier) error
AppendSupplier appends the content of a BytesWriter to the buffer.
func (*Buffer) Bytes ¶
func (b *Buffer) Bytes() []byte
Bytes returns the content bytes of this Buffer.
func (*Buffer) BytesFrom ¶
func (b *Buffer) BytesFrom(from int) []byte
BytesFrom returns a slice of this Buffer starting from the given position.
func (*Buffer) BytesRange ¶
func (b *Buffer) BytesRange(from, to int) []byte
BytesRange returns a slice of this buffer with given from and to bounary.
func (*Buffer) BytesTo ¶
func (b *Buffer) BytesTo(to int) []byte
BytesTo returns a slice of this Buffer from start to the given position.
func (*Buffer) Clear ¶
func (b *Buffer) Clear()
Clear clears the content of the buffer, results an empty buffer with Len() = 0.
func (*Buffer) IsEmpty ¶
func (b *Buffer) IsEmpty() bool
IsEmpty returns true if the buffer is empty.
func (*Buffer) IsFull ¶
func (b *Buffer) IsFull() bool
IsFull returns true if the buffer has no more room to grow.
func (*Buffer) Read ¶
func (b *Buffer) Read(data []byte) (int, error)
Read implements io.Reader.Read().
func (*Buffer) Release ¶
func (b *Buffer) Release()
Release recycles the buffer into an internal buffer pool.
func (*Buffer) Reset ¶
func (b *Buffer) Reset(writer Supplier) error
Reset resets the content of the Buffer with a supplier.
func (*Buffer) SetByte ¶
func (b *Buffer) SetByte(index int, value byte)
SetByte sets the byte value at index.
func (*Buffer) Slice ¶
func (b *Buffer) Slice(from, to int)
Slice cuts the buffer at the given position.
func (*Buffer) SliceFrom ¶
func (b *Buffer) SliceFrom(from int)
SliceFrom cuts the buffer at the given position.
type BufferPool ¶
type BufferPool struct {
// contains filtered or unexported fields
}
BufferPool is a Pool that utilizes an internal cache.
func NewBufferPool ¶
func NewBufferPool(bufferSize, poolSize uint32) *BufferPool
NewBufferPool creates a new BufferPool with given buffer size, and internal cache size.
type BufferToBytesReader ¶
type BufferToBytesReader struct {
// contains filtered or unexported fields
}
func NewBytesReader ¶
func NewBytesReader(stream Reader) *BufferToBytesReader
type BufferToBytesWriter ¶
type BufferToBytesWriter struct {
// contains filtered or unexported fields
}
BufferToBytesWriter is a Writer that writes alloc.Buffer into underlying writer.
type BytesToBufferReader ¶
type BytesToBufferReader struct {
// contains filtered or unexported fields
}
BytesToBufferReader is a Reader that adjusts its reading speed automatically.
type BytesToBufferWriter ¶
type BytesToBufferWriter struct {
// contains filtered or unexported fields
}
func NewBytesWriter ¶
func NewBytesWriter(writer Writer) *BytesToBufferWriter
type Pool ¶
type Pool interface {
// Allocate either returns a unused buffer from the pool, or generates a new one from system.
Allocate() *Buffer
// Free recycles the given buffer.
Free(*Buffer)
}
Pool provides functionality to generate and recycle buffers on demand.
type Reader ¶
type Reader interface {
// Read reads content from underlying reader, and put it into an alloc.Buffer.
Read() (*Buffer, error)
}
Reader extends io.Reader with alloc.Buffer.
type Supplier ¶
type Supplier func([]byte) (int, error)
Supplier is a writer that writes contents into the given buffer.
func ReadFrom ¶
func ReadFrom(reader io.Reader) Supplier
ReadFrom creates a Supplier to read from a given io.Reader.
func ReadFullFrom ¶
func ReadFullFrom(reader io.Reader, size int) Supplier
ReadFullFrom creates a Supplier to read full buffer from a given io.Reader.
type SyncPool ¶
type SyncPool struct {
// contains filtered or unexported fields
}
SyncPool is a buffer pool based on sync.Pool
func NewSyncPool ¶
func NewSyncPool(bufferSize uint32) *SyncPool
NewSyncPool creates a SyncPool with given buffer size.