Documentation ¶
Index ¶
- Variables
- func LimitedReader(r io.Reader) (io.Reader, error)
- func ReadLen(r io.Reader, buf []byte) (int, error)
- func WriteLen(w io.Writer, l int) error
- type LimitedWriter
- type ReadCloser
- func NewReader(r io.Reader) ReadCloser
- func NewReaderSize(r io.Reader, maxMessageSize int) ReadCloser
- func NewReaderSizeWithPool(r io.Reader, maxMessageSize int, p *pool.BufferPool) ReadCloser
- func NewReaderWithPool(r io.Reader, p *pool.BufferPool) ReadCloser
- func NewVarintReader(r io.Reader) ReadCloser
- func NewVarintReaderSize(r io.Reader, maxMessageSize int) ReadCloser
- func NewVarintReaderSizeWithPool(r io.Reader, maxMessageSize int, p *pool.BufferPool) ReadCloser
- func NewVarintReaderWithPool(r io.Reader, p *pool.BufferPool) ReadCloser
- type ReadWriteCloser
- type ReadWriter
- type Reader
- type WriteCloser
- type Writer
Constants ¶
This section is empty.
Variables ¶
var ErrMsgTooLarge = errors.New("message too large")
ErrMsgTooLarge is returned when the message length is exessive
var NBO = binary.BigEndian
NBO is NetworkByteOrder
Functions ¶
func LimitedReader ¶
LimitedReader wraps an io.Reader with a msgio framed reader. The LimitedReader will return a reader which will io.EOF when the msg length is done.
Types ¶
type LimitedWriter ¶
func NewLimitedWriter ¶
func NewLimitedWriter(w io.Writer) *LimitedWriter
LimitedWriter wraps an io.Writer with a msgio framed writer. It is the inverse of LimitedReader: it will buffer all writes until "Flush" is called. When Flush is called, it will write the size of the buffer first, flush the buffer, reset the buffer, and begin accept more incoming writes.
func (*LimitedWriter) Flush ¶
func (w *LimitedWriter) Flush() error
type ReadCloser ¶
ReadCloser combines a Reader and Closer.
func NewReader ¶
func NewReader(r io.Reader) ReadCloser
NewReader wraps an io.Reader with a msgio framed reader. The msgio.Reader will read whole messages at a time (using the length). Assumes an equivalent writer on the other side.
func NewReaderSize ¶
func NewReaderSize(r io.Reader, maxMessageSize int) ReadCloser
NewReaderSize is equivalent to NewReader but allows one to specify a max message size.
func NewReaderSizeWithPool ¶
func NewReaderSizeWithPool(r io.Reader, maxMessageSize int, p *pool.BufferPool) ReadCloser
NewReaderWithPool is the same as NewReader but allows one to specify a buffer pool and a max message size.
func NewReaderWithPool ¶
func NewReaderWithPool(r io.Reader, p *pool.BufferPool) ReadCloser
NewReaderWithPool is the same as NewReader but allows one to specify a buffer pool.
func NewVarintReader ¶
func NewVarintReader(r io.Reader) ReadCloser
NewVarintReader wraps an io.Reader with a varint msgio framed reader. The msgio.Reader will read whole messages at a time (using the length). Varints read according to https://golang.org/pkg/encoding/binary/#ReadUvarint Assumes an equivalent writer on the other side.
func NewVarintReaderSize ¶
func NewVarintReaderSize(r io.Reader, maxMessageSize int) ReadCloser
NewVarintReaderSize is equivalent to NewVarintReader but allows one to specify a max message size.
func NewVarintReaderSizeWithPool ¶
func NewVarintReaderSizeWithPool(r io.Reader, maxMessageSize int, p *pool.BufferPool) ReadCloser
NewVarintReaderWithPool is the same as NewVarintReader but allows one to specify a buffer pool and a max message size.
func NewVarintReaderWithPool ¶
func NewVarintReaderWithPool(r io.Reader, p *pool.BufferPool) ReadCloser
NewVarintReaderWithPool is the same as NewVarintReader but allows one to specify a buffer pool.
type ReadWriteCloser ¶
ReadWriteCloser combines a Reader, a Writer, and Closer.
func Combine ¶
func Combine(w Writer, r Reader) ReadWriteCloser
Combine wraps a pair of msgio.Writer and msgio.Reader with a msgio.ReadWriter.
func NewReadWriter ¶
func NewReadWriter(rw io.ReadWriter) ReadWriteCloser
NewReadWriter wraps an io.ReadWriter with a msgio.ReadWriter. Writing and Reading will be appropriately framed.
type ReadWriter ¶
ReadWriter combines a Reader and Writer.
type Reader ¶
type Reader interface { // Read reads the next message from the Reader. // The client must pass a buffer large enough, or io.ErrShortBuffer will be // returned. Read([]byte) (int, error) // ReadMsg reads the next message from the Reader. // Uses a pool.BufferPool internally to reuse buffers. User may call // ReleaseMsg(msg) to signal a buffer can be reused. ReadMsg() ([]byte, error) // ReleaseMsg signals a buffer can be reused. ReleaseMsg([]byte) // NextMsgLen returns the length of the next (peeked) message. Does // not destroy the message or have other adverse effects NextMsgLen() (int, error) }
Reader is the msgio Reader interface. It reads len-framed messages.
type WriteCloser ¶
WriteCloser is a Writer + Closer interface. Like in `golang/pkg/io`
func NewVarintWriter ¶
func NewVarintWriter(w io.Writer) WriteCloser
NewVarintWriter wraps an io.Writer with a varint msgio framed writer. The msgio.Writer will write the length prefix of every message written as a varint, using https://golang.org/pkg/encoding/binary/#PutUvarint
func NewVarintWriterWithPool ¶
func NewVarintWriterWithPool(w io.Writer, p *pool.BufferPool) WriteCloser
func NewWriter ¶
func NewWriter(w io.Writer) WriteCloser
NewWriter wraps an io.Writer with a msgio framed writer. The msgio.Writer will write the length prefix of every message written.
func NewWriterWithPool ¶
func NewWriterWithPool(w io.Writer, p *pool.BufferPool) WriteCloser
NewWriterWithPool is identical to NewWriter but allows the user to pass a custom buffer pool.
Directories ¶
Path | Synopsis |
---|---|
Package pbio reads and writes varint-prefix protobufs, using Google's Protobuf package.
|
Package pbio reads and writes varint-prefix protobufs, using Google's Protobuf package. |
Adapted from gogo/protobuf to use multiformats/go-varint for efficient, interoperable length-prefixing.
|
Adapted from gogo/protobuf to use multiformats/go-varint for efficient, interoperable length-prefixing. |