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 // Size of a small buffer. SizeSmall = 2 * 1024 PoolSizeEnvKey = "v2ray.buffer.size" )
Variables ¶
This section is empty.
Functions ¶
func Pipe ¶
Pipe dumps all content from reader to writer, until an error happens.
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 on current thread.
func (*Buffer) Append ¶
Append appends a byte array to the end of the buffer.
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) Bytes ¶
Bytes returns the content bytes of this 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) BytesTo ¶
BytesFrom 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 ¶
IsEmpty returns true if the buffer is empty.
func (*Buffer) IsFull ¶
IsFull returns true if the buffer has no more room to grow.
func (*Buffer) Read ¶
Read implements io.Reader.Read().
func (*Buffer) Release ¶
func (b *Buffer) Release()
Release recycles the buffer into an internal buffer pool.
func (*Buffer) Reset ¶
Reset resets the content of the Buffer with a supplier.
func (*Buffer) SetByte ¶
SetByte sets the byte value at index.
func (*Buffer) Slice ¶
Slice cuts the buffer at the given position.
func (*Buffer) SliceFrom ¶
SliceFrom cuts the buffer at the given position.
func (*Buffer) String ¶
String returns the string form of this Buffer.
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 BufferToBytesReader ¶
func NewBytesReader ¶
func NewBytesReader(stream Reader) *BufferToBytesReader
func (*BufferToBytesReader) Fill ¶
func (v *BufferToBytesReader) Fill()
Private: Visible for testing.
func (*BufferToBytesReader) Read ¶
func (v *BufferToBytesReader) Read(b []byte) (int, error)
func (*BufferToBytesReader) Release ¶
func (v *BufferToBytesReader) Release()
type BufferToBytesWriter ¶
type BufferToBytesWriter struct {
// contains filtered or unexported fields
}
BufferToBytesWriter is a Writer that writes alloc.Buffer into underlying writer.
func (*BufferToBytesWriter) Release ¶
func (v *BufferToBytesWriter) Release()
Release implements Releasable.Release().
func (*BufferToBytesWriter) Write ¶
func (v *BufferToBytesWriter) Write(buffer *Buffer) error
Write implements Writer.Write(). Write() takes ownership of the given buffer.
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().
func (*BytesToBufferReader) Release ¶
func (v *BytesToBufferReader) Release()
Release implements Releasable.Release().
type BytesToBufferWriter ¶
func NewBytesWriter ¶
func NewBytesWriter(writer Writer) *BytesToBufferWriter
func (*BytesToBufferWriter) Release ¶
func (v *BytesToBufferWriter) Release()
func (*BytesToBufferWriter) Write ¶
func (v *BytesToBufferWriter) Write(payload []byte) (int, 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 { Release() // 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 ¶
Supplier is a writer that writes contents into the given buffer.
func ReadFrom ¶
ReadFrom creates a Supplier to read from a given io.Reader.