Documentation ¶
Index ¶
- Variables
- type Buffer
- func (c Buffer) Bytes() []byte
- func (c Buffer) Cap() int
- func (c Buffer) Close() error
- func (c Buffer) Grow(n int) error
- func (c Buffer) IsClosed() bool
- func (c Buffer) Len() int
- func (c Buffer) MustBytes() []byte
- func (c Buffer) MustLen() int
- func (c Buffer) MustReadFrom(r io.Reader)
- func (c Buffer) MustReset()
- func (c Buffer) MustString() string
- func (c Buffer) MustTruncate(n int)
- func (c Buffer) MustWrite(p []byte)
- func (c Buffer) MustWriteByte(cyte byte)
- func (c Buffer) MustWriteRune(r rune)
- func (c Buffer) MustWriteTo(w io.Writer)
- func (c Buffer) Next(n int) []byte
- func (c Buffer) Read(p []byte) (int, error)
- func (c Buffer) ReadByte() (byte, error)
- func (c Buffer) ReadBytes(delim byte) ([]byte, error)
- func (c Buffer) ReadFrom(r io.Reader) (int64, error)
- func (c Buffer) ReadRune() (rune, int, error)
- func (c Buffer) Reset() error
- func (c Buffer) String() string
- func (c Buffer) Truncate(n int) error
- func (c Buffer) UnreadByte() error
- func (c Buffer) UnreadRune() error
- func (c Buffer) WithParent(p *BufferFactory) *Buffer
- func (c Buffer) Write(p []byte) (int, error)
- func (c Buffer) WriteByte(cyte byte) error
- func (c Buffer) WriteRune(r rune) (int, error)
- func (c Buffer) WriteString(str string) (int, error)
- func (c Buffer) WriteTo(w io.Writer) (int64, error)
- type BufferFactory
- type BufferFactoryByteBufferCompat
- type BufferFactoryInterfaceCompat
- type ByteBuffer
- type Pool
- type String
- func (s String) Cap() int
- func (s String) Grow(n int) error
- func (s String) Len() int
- func (s String) MustGrow(n int)
- func (s String) MustLen() int
- func (s String) MustReset()
- func (s String) MustString() string
- func (s String) MustWriteString(str string)
- func (s String) Reset() error
- func (s String) String() string
- func (s String) Write(p []byte) (int, error)
- func (s String) WriteByte(c byte) error
- func (s String) WriteRune(r rune) (int, error)
- func (s String) WriteString(str string) (int, error)
- type StringFactory
- type WithPutError
Constants ¶
This section is empty.
Variables ¶
var ErrBufferReturned = errors.New("buffer already returned")
Functions ¶
This section is empty.
Types ¶
type Buffer ¶ added in v0.7.5
Buffer is a wrapper around bytes.Buffer that can only be returned to a pool once.
func (Buffer) Bytes ¶ added in v0.7.5
Bytes returns a slice of length b.Len() holding the unread portion of the buffer. The slice is valid for use only until the next buffer modification (that is, only until the next call to a method like Read, Write, Reset, or Truncate). The slice aliases the buffer content at least until the next buffer modification, so immediate changes to the slice will affect the result of future reads.
*This is from the bytes.Buffer docs.*
func (Buffer) Cap ¶ added in v0.7.5
Cap returns the capacity of the buffer's underlying byte slice, that is, the total space allocated for the buffer's data.
*This is from the bytes.Buffer docs.* If the buffer has already been returned to the pool, Cap will return 0.
func (Buffer) Close ¶ added in v0.8.5
Close implements io.Closer. It returns the buffer to the pool. This
func (Buffer) Grow ¶ added in v0.7.5
Grow grows the buffer's capacity, if necessary, to guarantee space for another n bytes. After Grow(n), at least n bytes can be written to the buffer without another allocation. If n is negative, Grow will panic. If the buffer can't grow it will panic with ErrTooLarge.
If the buffer has already been returned to the pool, Grow will return ErrBufferReturned.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) IsClosed ¶ added in v0.8.6
IsClosed returns true if the buffer has been returned to the pool.
func (Buffer) Len ¶ added in v0.7.5
Len returns the number of bytes of the unread portion of the buffer; b.Len() == len(b.Bytes()).
*This is from the bytes.Buffer docs.* This wrapper returns 0 if the buffer has already been returned to the pool.
func (Buffer) MustBytes ¶ added in v0.7.5
MustBytes is the same as Bytes but panics if the buffer has already been returned to the pool.
func (Buffer) MustLen ¶ added in v0.7.5
MustLen is the same as Len but panics if the buffer has already been returned to the pool.
func (Buffer) MustReadFrom ¶ added in v0.7.5
MustReadFrom is the same as ReadFrom but panics if the buffer has already been returned to the pool.
func (Buffer) MustReset ¶ added in v0.7.5
func (c Buffer) MustReset()
MustReset is the same as Reset but panics if the buffer has already been returned to the pool.
func (Buffer) MustString ¶ added in v0.7.5
MustString is the same as String but panics if the buffer has already been returned to the pool.
func (Buffer) MustTruncate ¶ added in v0.7.5
MustTruncate is the same as Truncate but panics if the buffer has already been returned to the pool.
func (Buffer) MustWrite ¶ added in v0.7.5
MustWrite is the same as Write but panics if the buffer has already been returned to the pool.
func (Buffer) MustWriteByte ¶ added in v0.7.5
MustWriteByte is the same as WriteByte but panics if the buffer has already been returned to the pool.
func (Buffer) MustWriteRune ¶ added in v0.7.5
MustWriteRune is the same as WriteRune but panics if the buffer has already been returned to the pool.
func (Buffer) MustWriteTo ¶ added in v0.7.5
MustWriteTo is the same as WriteTo but panics if the buffer has already been returned to the pool.
func (Buffer) Next ¶ added in v0.7.5
Next returns a slice containing the next n bytes from the buffer, advancing the buffer as if the bytes had been returned by Read. If there are fewer than n bytes in the buffer, Next returns the entire buffer. The slice is only valid until the next call to a read or write method.
*This is from the bytes.Buffer docs.* This wrapper returns nil if the buffer has already been returned to the pool.
func (Buffer) Read ¶ added in v0.7.5
Read reads the next len(p) bytes from the buffer or until the buffer is drained. The return value n is the number of bytes read. If the buffer has no data to return, err is io.EOF (unless len(p) is zero); otherwise it is nil.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) ReadByte ¶ added in v0.7.5
ReadByte reads and returns the next byte from the buffer. If no byte is available, it returns error io.EOF.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) ReadBytes ¶ added in v0.7.5
ReadBytes reads until the first occurrence of delim in the input, returning a slice containing the data up to and including the delimiter. If ReadBytes encounters an error before finding a delimiter, it returns the data read before the error and the error itself (often io.EOF). ReadBytes returns err != nil if and only if the returned data does not end in delim.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) ReadFrom ¶ added in v0.7.5
ReadFrom reads data from r until EOF and appends it to the buffer, growing the buffer as needed. The return value n is the number of bytes read. Any error except io.EOF encountered during the read is also returned. If the buffer becomes too large, ReadFrom will panic with ErrTooLarge.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) ReadRune ¶ added in v0.7.5
ReadRune reads and returns the next UTF-8-encoded Unicode code point from the buffer. If no bytes are available, the error returned is io.EOF. If the bytes are an erroneous UTF-8 encoding, it consumes one byte and returns U+FFFD, 1.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) Reset ¶ added in v0.7.5
Reset resets the buffer to be empty, but it retains the underlying storage for use by future writes. Reset is the same as Truncate(0).
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) String ¶ added in v0.7.5
String returns the contents of the unread portion of the buffer as a string. If the Buffer is a nil pointer, it returns "<nil>".
To build strings more efficiently, see the strings.Builder type.
*This is from the bytes.Buffer docs.*
func (Buffer) Truncate ¶ added in v0.7.5
Truncate discards all but the first n unread bytes from the buffer but continues to use the same allocated storage. It panics if n is negative or greater than the length of the buffer.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) UnreadByte ¶ added in v0.7.5
UnreadByte unreads the last byte returned by the most recent successful read operation that read at least one byte. If a write has happened since the last read, if the last read returned an error, or if the read read zero bytes, UnreadByte returns an error.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) UnreadRune ¶ added in v0.7.5
UnreadRune unreads the last rune returned by ReadRune. If the most recent read or write operation on the buffer was not a successful ReadRune, UnreadRune returns an error. (In this regard it is stricter than UnreadByte, which will unread the last byte from any read operation.)
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) WithParent ¶ added in v0.8.5
func (c Buffer) WithParent(p *BufferFactory) *Buffer
WithParent sets the parent of the buffer. This is useful for chaining factories, and for facilitating in-line buffer return with functions like Buffer.Close(). Be mindful, however, that this adds a bit of overhead.
func (Buffer) Write ¶ added in v0.7.5
Write appends the contents of p to the buffer, growing the buffer as needed. The return value n is the length of p; err is always nil. If the buffer becomes too large, Write will panic with ErrTooLarge.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) WriteByte ¶ added in v0.7.5
WriteByte appends the byte c to the buffer, growing the buffer as needed. The returned error is always nil, but is included to match bufio.Writer's WriteByte. If the buffer becomes too large, WriteByte will panic with ErrTooLarge.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) WriteRune ¶ added in v0.7.5
WriteRune appends the UTF-8 encoding of Unicode code point r to the buffer, returning its length and an error, which is always nil but is included to match bufio.Writer's WriteRune. The buffer is grown as needed; if it becomes too large, WriteRune will panic with ErrTooLarge.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) WriteString ¶ added in v0.7.5
WriteString appends the contents of s to the buffer, growing the buffer as needed. The return value n is the length of s; err is always nil. If the buffer becomes too large, WriteString will panic with ErrTooLarge.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
func (Buffer) WriteTo ¶ added in v0.7.5
WriteTo writes data to w until the buffer is drained or an error occurs. The return value n is the number of bytes written; it always fits into an int, but it is int64 to match the io.WriterTo interface. Any error encountered during the write is also returned.
*This is from the bytes.Buffer docs.* This wrapper returns an error if the buffer has already been returned to the pool.
type BufferFactory ¶ added in v0.7.5
type BufferFactory struct {
// contains filtered or unexported fields
}
BufferFactory is a factory for creating and reusing bytes.Buffers. BufferFactory tries to be safer than using a sync.Pool directly by ensuring that the buffer is not returned twice.
func NewBufferFactory ¶ added in v0.7.5
func NewBufferFactory() BufferFactory
NewBufferFactory creates a new BufferFactory that creates new buffers on demand.
func NewSizedBufferFactory ¶ added in v0.8.1
func NewSizedBufferFactory(size int) BufferFactory
NewSizedBufferFactory creates a new BufferFactory that creates new buffers of the given size on demand.
func (BufferFactory) Get ¶ added in v0.7.5
func (cf BufferFactory) Get() *Buffer
Get returns a buffer from the pool.
func (BufferFactory) MustPut ¶ added in v0.7.5
func (cf BufferFactory) MustPut(buf *Buffer)
MustPut is the same as Put but panics if the buffer has already been returned to the pool.
func (BufferFactory) Put ¶ added in v0.7.5
func (cf BufferFactory) Put(buf *Buffer) error
Put returns the buffer to the pool. It returns an error if the buffer has already been returned to the pool.
type BufferFactoryByteBufferCompat ¶ added in v0.9.8
type BufferFactoryByteBufferCompat struct {
BufferFactory
}
func (BufferFactoryByteBufferCompat) Get ¶ added in v0.9.8
func (bf BufferFactoryByteBufferCompat) Get() ByteBuffer
func (BufferFactoryByteBufferCompat) Put ¶ added in v0.9.8
func (bf BufferFactoryByteBufferCompat) Put(buf ByteBuffer)
type BufferFactoryInterfaceCompat ¶ added in v0.9.4
type BufferFactoryInterfaceCompat struct {
BufferFactory
}
func (BufferFactoryInterfaceCompat) Put ¶ added in v0.9.4
func (b BufferFactoryInterfaceCompat) Put(buf *Buffer)
type ByteBuffer ¶ added in v0.9.8
type ByteBuffer interface { Len() int Cap() int Bytes() []byte WriteRune(rune) (int, error) WriteString(string) (int, error) io.WriterTo io.ByteWriter io.ReadWriter io.ReaderFrom io.ByteReader io.RuneReader }
ByteBuffer is satisfied by *pool.Buffer and *bytes.Buffer.
Note, we can't include Reset and Grow as our implementations return an error while a *bytes.Buffer does not.
type String ¶
func (String) MustString ¶ added in v0.7.5
func (String) MustWriteString ¶ added in v0.7.5
MustWriteString means Must Write String, like WriteString but will panic on error.
type StringFactory ¶
type StringFactory struct {
// contains filtered or unexported fields
}
func NewStringFactory ¶
func NewStringFactory() StringFactory
NewStringFactory creates a new strings.Builder pool.
func (StringFactory) Get ¶
func (sf StringFactory) Get() *String
Get returns a strings.Builder from the pool.
func (StringFactory) MustPut ¶ added in v0.7.5
func (sf StringFactory) MustPut(buf *String)
func (StringFactory) Put ¶
func (sf StringFactory) Put(buf *String) error
Put returns a strings.Builder back into to the pool after resetting it.