Documentation ¶
Overview ¶
Package buf provides a light-weight memory allocation mechanism.
Index ¶
- Constants
- Variables
- func Pipe(timer signal.ActivityTimer, reader Reader, writer Writer) error
- func PipeUntilEOF(timer signal.ActivityTimer, reader Reader, writer Writer) error
- func ToBytesReader(stream Reader) io.Reader
- func ToBytesWriter(writer Writer) io.Writer
- type Buffer
- func (b *Buffer) Append(data []byte) int
- func (b *Buffer) AppendBytes(bytes ...byte) int
- 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 BufferToBytesWriter
- type BufferedReader
- type BufferedWriter
- type BytesToBufferReader
- type MergingReader
- type Pool
- type Reader
- type Supplier
- type SyncPool
- type TimeoutReader
- type Writer
Constants ¶
const ( // Size of a regular buffer. Size = 8 * 1024 // SizeSmall is the size of a small buffer. SizeSmall = 2 * 1024 )
Variables ¶
var ErrReadTimeout = newError("IO timeout")
Functions ¶
func Pipe ¶
func Pipe(timer signal.ActivityTimer, reader Reader, writer Writer) error
Pipe dumps all payload from reader to writer, until an error occurs. ActivityTimer gets updated as soon as there is a payload.
func PipeUntilEOF ¶
func PipeUntilEOF(timer signal.ActivityTimer, reader Reader, writer Writer) error
PipeUntilEOF behaves the same as Pipe(). The only difference is PipeUntilEOF returns nil on EOF.
func ToBytesReader ¶
ToBytesReader converts a Reaaer to io.Reader.
func ToBytesWriter ¶
ToBytesWriter converts a Writer to io.Writer
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 ¶
NewLocal creates and returns a buffer with 0 length and given capacity on current thread.
func (*Buffer) AppendBytes ¶
AppendBytes appends one or more bytes to the end of the buffer.
func (*Buffer) AppendSupplier ¶
AppendSupplier appends the content of a BytesWriter to the buffer.
func (*Buffer) BytesFrom ¶
BytesFrom returns a slice of this Buffer starting from the given position.
func (*Buffer) BytesRange ¶
BytesRange returns a slice of this buffer with given from and to bounary.
func (*Buffer) Clear ¶
func (b *Buffer) Clear()
Clear clears the content of the buffer, results an empty buffer with Len() = 0.
func (*Buffer) Release ¶
func (b *Buffer) Release()
Release recycles the buffer into an internal buffer pool.
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.
func (*BufferPool) Allocate ¶
func (p *BufferPool) Allocate() *Buffer
Allocate implements Pool.Allocate().
type BufferToBytesWriter ¶
type BufferToBytesWriter struct {
// contains filtered or unexported fields
}
BufferToBytesWriter is a Writer that writes alloc.Buffer into underlying writer.
func (*BufferToBytesWriter) Write ¶
func (v *BufferToBytesWriter) Write(buffer *Buffer) error
Write implements Writer.Write(). Write() takes ownership of the given buffer.
type BufferedReader ¶
type BufferedReader struct {
// contains filtered or unexported fields
}
BufferedReader is a reader with internal cache.
func NewBufferedReader ¶
func NewBufferedReader(rawReader io.Reader) *BufferedReader
NewBufferedReader creates a new BufferedReader based on an io.Reader.
func (*BufferedReader) IsBuffered ¶
func (v *BufferedReader) IsBuffered() bool
IsBuffered returns true if the internal cache is effective.
func (*BufferedReader) Read ¶
func (v *BufferedReader) Read(b []byte) (int, error)
Read implements io.Reader.Read().
func (*BufferedReader) SetBuffered ¶
func (v *BufferedReader) SetBuffered(cached bool)
SetBuffered is to enable or disable internal cache. If cache is disabled, Read() calls will be delegated to the underlying io.Reader directly.
type BufferedWriter ¶
type BufferedWriter struct {
// contains filtered or unexported fields
}
BufferedWriter is an io.Writer with internal buffer. It writes to underlying writer when buffer is full or on demand. This type is not thread safe.
func NewBufferedWriter ¶
func NewBufferedWriter(rawWriter io.Writer) *BufferedWriter
NewBufferedWriter creates a new BufferedWriter.
func (*BufferedWriter) Flush ¶
func (v *BufferedWriter) Flush() error
Flush writes all buffered content into underlying writer, if any.
func (*BufferedWriter) IsBuffered ¶
func (v *BufferedWriter) IsBuffered() bool
IsBuffered returns true if this BufferedWriter holds a buffer.
func (*BufferedWriter) ReadFrom ¶
func (v *BufferedWriter) ReadFrom(reader io.Reader) (int64, error)
ReadFrom implements io.ReaderFrom.ReadFrom().
func (*BufferedWriter) SetBuffered ¶
func (v *BufferedWriter) SetBuffered(cached bool) error
SetBuffered controls whether the BufferedWriter holds a buffer for writing. If not buffered, any write() calls into underlying writer directly.
type BytesToBufferReader ¶
type BytesToBufferReader struct {
// contains filtered or unexported fields
}
BytesToBufferReader is a Reader that adjusts its reading speed automatically.
func (*BytesToBufferReader) Read ¶
func (v *BytesToBufferReader) Read() (*Buffer, error)
Read implements Reader.Read().
type MergingReader ¶
type MergingReader struct {
// contains filtered or unexported fields
}
func (*MergingReader) Read ¶
func (r *MergingReader) Read() (*Buffer, error)
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.
func NewMergingReader ¶
type Supplier ¶
Supplier is a writer that writes contents into the given buffer.