Documentation ¶
Index ¶
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 ¶ added in v0.3.8
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 Chan ¶
Chan is a msgio duplex channel. It is used to have a channel interface around a msgio.Reader or Writer.
func (*Chan) ReadFrom ¶
ReadFrom wraps the given io.Reader with a msgio.Reader, reads all messages, ands sends them down the channel.
func (*Chan) ReadFromWithPool ¶
ReadFromWithPool wraps the given io.Reader with a msgio.Reader, reads all messages, ands sends them down the channel. Uses given Pool
type LimitedWriter ¶ added in v0.3.8
func NewLimitedWriter ¶ added in v0.3.8
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 ¶ added in v0.3.8
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 NewReaderWithPool ¶
func NewReaderWithPool(r io.Reader, p *mpool.Pool) ReadCloser
NewReaderWithPool 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. It uses a given mpool.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 NewVarintReaderWithPool ¶
func NewVarintReaderWithPool(r io.Reader, p *mpool.Pool) ReadCloser
NewVarintReaderWithPool 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. It uses a given mpool.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 mpool.Pool internally to reuse buffers. io.ErrShortBuffer will // be returned if the Pool.Get(...) returns nil. // 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 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.
Directories ¶
Path | Synopsis |
---|---|
Package mpool provides a sync.Pool equivalent that buckets incoming requests to one of 32 sub-pools, one for each power of 2, 0-32.
|
Package mpool provides a sync.Pool equivalent that buckets incoming requests to one of 32 sub-pools, one for each power of 2, 0-32. |