buf

package
v2.16.7+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2017 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package buf provides a light-weight memory allocation mechanism.

Index

Constants

View Source
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(timer *signal.ActivityTimer, reader Reader, writer Writer) error

Pipe dumps all content from reader to writer, until an error happens.

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.

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 New

func New() *Buffer

New creates a Buffer with 8K bytes of arbitrary content.

func NewLocal

func NewLocal(size int) *Buffer

NewLocal creates and returns a buffer on current thread.

func NewSmall

func NewSmall() *Buffer

NewSmall returns a buffer with 2K bytes capacity.

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) Byte

func (b *Buffer) Byte(index int) byte

Byte returns the bytes at index.

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) Len

func (b *Buffer) Len() int

Len returns the length of the buffer content.

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.

func (*Buffer) String

func (b *Buffer) String() string

String returns the string form of this Buffer.

func (*Buffer) Write

func (b *Buffer) Write(data []byte) (int, error)

Write implements Write method in io.Writer.

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().

func (*BufferPool) Free

func (p *BufferPool) Free(buffer *Buffer)

Free implements Pool.Free().

type BufferToBytesReader

type BufferToBytesReader struct {
	// contains filtered or unexported fields
}

func NewBytesReader

func NewBytesReader(stream Reader) *BufferToBytesReader

func (*BufferToBytesReader) Fill

func (v *BufferToBytesReader) Fill()

Fill fills in the internal buffer. Private: Visible for testing.

func (*BufferToBytesReader) Read

func (v *BufferToBytesReader) Read(b []byte) (int, error)

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 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 BytesToBufferWriter

type BytesToBufferWriter struct {
	// contains filtered or unexported fields
}

func NewBytesWriter

func NewBytesWriter(writer Writer) *BytesToBufferWriter

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 {
	// Read reads content from underlying reader, and put it into an alloc.Buffer.
	Read() (*Buffer, error)
}

Reader extends io.Reader with alloc.Buffer.

func NewReader

func NewReader(reader io.Reader) Reader

NewReader creates a new Reader. The Reader instance doesn't take the ownership of reader.

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.

func (*SyncPool) Allocate

func (p *SyncPool) Allocate() *Buffer

Allocate implements Pool.Allocate().

func (*SyncPool) Free

func (p *SyncPool) Free(buffer *Buffer)

Free implements Pool.Free().

type Writer

type Writer interface {
	// Write writes an alloc.Buffer into underlying writer.
	Write(*Buffer) error
}

Writer extends io.Writer with alloc.Buffer.

func NewWriter

func NewWriter(writer io.Writer) Writer

NewWriter creates a new Writer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL