mirror of
https://github.com/status-im/status-go.git
synced 2025-02-22 03:38:27 +00:00
90 lines
1.9 KiB
Markdown
90 lines
1.9 KiB
Markdown
|
# go-msgio - Message IO
|
||
|
|
||
|
[](https://protocol.ai)
|
||
|
[](https://libp2p.io/)
|
||
|
[](http://webchat.freenode.net/?channels=%23libp2p)
|
||
|
[](https://codecov.io/gh/libp2p/go-msgio)
|
||
|
[](https://travis-ci.org/libp2p/go-msgio)
|
||
|
[](https://discuss.libp2p.io)
|
||
|
|
||
|
This is a simple package that helps read and write length-delimited slices. It's helpful for building wire protocols.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### Reading
|
||
|
|
||
|
```go
|
||
|
import "github.com/libp2p/go-msgio"
|
||
|
rdr := ... // some reader from a wire
|
||
|
mrdr := msgio.NewReader(rdr)
|
||
|
|
||
|
for {
|
||
|
msg, err := mrdr.ReadMsg()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
doSomething(msg)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Writing
|
||
|
|
||
|
```go
|
||
|
import "github.com/libp2p/go-msgio"
|
||
|
wtr := genReader()
|
||
|
mwtr := msgio.NewWriter(wtr)
|
||
|
|
||
|
for {
|
||
|
msg := genMessage()
|
||
|
err := mwtr.WriteMsg(msg)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Duplex
|
||
|
|
||
|
```go
|
||
|
import "github.com/libp2p/go-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
|
||
|
|
||
|
```go
|
||
|
import "github.com/libp2p/go-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
|
||
|
}
|
||
|
```
|
||
|
|
||
|
---
|
||
|
|
||
|
The last gx published version of this module was: 0.0.6: QmcxL9MDzSU5Mj1GcWZD8CXkAFuJXjdbjotZ93o371bKSf
|