mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-07 09:17:49 +08:00
| .. | ||
| mpool | ||
| chan_test.go | ||
| chan.go | ||
| msgio_test.go | ||
| msgio.go | ||
| README.md | ||
| varint_test.go | ||
| varint.go | ||
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
}