package peer
import (
"encoding/json"
"github.com/libp2p/go-libp2p/core/internal/catch"
ma "github.com/multiformats/go-multiaddr"
)
type addrInfoJson struct {
ID ID
Addrs []string
}
func (pi AddrInfo ) MarshalJSON () (res []byte , err error ) {
defer func () { catch .HandlePanic (recover (), &err , "libp2p addr info marshal" ) }()
addrs := make ([]string , len (pi .Addrs ))
for i , addr := range pi .Addrs {
addrs [i ] = addr .String ()
}
return json .Marshal (&addrInfoJson {
ID : pi .ID ,
Addrs : addrs ,
})
}
func (pi *AddrInfo ) UnmarshalJSON (b []byte ) (err error ) {
defer func () { catch .HandlePanic (recover (), &err , "libp2p addr info unmarshal" ) }()
var data addrInfoJson
if err := json .Unmarshal (b , &data ); err != nil {
return err
}
addrs := make ([]ma .Multiaddr , len (data .Addrs ))
for i , addr := range data .Addrs {
maddr , err := ma .NewMultiaddr (addr )
if err != nil {
return err
}
addrs [i ] = maddr
}
pi .ID = data .ID
pi .Addrs = addrs
return nil
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .