kubo/Godeps/_workspace/src/github.com/jbenet/go-msgio
2015-01-02 08:46:45 -08:00
..
mpool updated msgio (bufixes) 2014-12-16 05:10:44 -08:00
chan_test.go msgio: updated to remove max size 2014-12-06 11:26:47 -05:00
chan.go make vendor 2014-12-17 23:25:38 -08:00
msgio_test.go updated msgio (varints) 2015-01-02 08:46:45 -08:00
msgio.go make vendor 2014-12-17 23:25:38 -08:00
README.md vendor dependencies with godep 2014-09-09 22:39:42 -07:00
varint_test.go updated msgio (varints) 2015-01-02 08:46:45 -08:00
varint.go updated msgio (varints) 2015-01-02 08:46:45 -08:00

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
}