msgio

package
v0.0.0-...-bebc87d Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2014 License: MIT Imports: 2 Imported by: 0

README

go-msgio - Message IO

This is a simple package that helps read and write length-delimited slices. It's helpful for building wire protocols.

Usage

Reading
import "github.com/jbenet/msgio"
rdr := ... // some reader from a wire
mrdr := msgio.NewReader(rdr)

for {
  msg, err := mrdr.ReadMsg()
  if err != nil {
    return err
  }

  doSomething(msg)
}
Writing
import "github.com/jbenet/msgio"
wtr := genReader()
mwtr := msgio.NewWriter(wtr)

for {
  msg := genMessage()
  err := mwtr.WriteMsg(msg)
  if err != nil {
    return err
  }
}
Duplex
import "github.com/jbenet/msgio"
rw := genReadWriter()
mrw := msgio.NewReadWriter(rw)

for {
  msg, err := mrdr.ReadMsg()
  if err != nil {
    return err
  }

  // echo it back :)
  err = mwtr.WriteMsg(msg)
  if err != nil {
    return err
  }
}
Channels
import "github.com/jbenet/msgio"
rw := genReadWriter()
rch := msgio.NewReadChannel(rw)
wch := msgio.NewWriteChannel(rw)

for {
  msg, err := <-rch
  if err != nil {
    return err
  }

  // echo it back :)
  wch<- rw
}

Documentation

Index

Constants

This section is empty.

Variables

Functions

This section is empty.

Types

type Chan

type Chan struct {
	Buffers   [][]byte
	MsgChan   chan []byte
	ErrChan   chan error
	CloseChan chan bool
}

func NewChan

func NewChan(chanSize int) *Chan

func (*Chan) Close

func (s *Chan) Close()

func (*Chan) ReadFrom

func (s *Chan) ReadFrom(r io.Reader, maxMsgLen int)

func (*Chan) WriteTo

func (s *Chan) WriteTo(w io.Writer)

type ReadCloser

type ReadCloser interface {
	Reader
	io.Closer
}

func NewReader

func NewReader(r io.Reader) ReadCloser

type ReadWriteCloser

type ReadWriteCloser interface {
	Reader
	Writer
	io.Closer
}

type ReadWriter

type ReadWriter interface {
	Reader
	Writer
}

func NewReadWriter

func NewReadWriter(rw io.ReadWriter) ReadWriter

type ReadWriter_

type ReadWriter_ struct {
	Reader
	Writer
}

func (*ReadWriter_) Close

func (rw *ReadWriter_) Close() error

type Reader

type Reader interface {
	ReadMsg([]byte) (int, error)
}

type Reader_

type Reader_ struct {
	R io.Reader
	// contains filtered or unexported fields
}

func (*Reader_) Close

func (s *Reader_) Close() error

func (*Reader_) ReadMsg

func (s *Reader_) ReadMsg(msg []byte) (int, error)

type WriteCloser

type WriteCloser interface {
	Writer
	io.Closer
}

func NewWriter

func NewWriter(w io.Writer) WriteCloser

type Writer

type Writer interface {
	WriteMsg([]byte) error
}

type Writer_

type Writer_ struct {
	W io.Writer
}

func (*Writer_) Close

func (s *Writer_) Close() error

func (*Writer_) WriteMsg

func (s *Writer_) WriteMsg(msg []byte) (err error)

Jump to

Keyboard shortcuts

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