ipld-eth-server/vendor/github.com/multiformats/go-multicodec/base/bin/codec.go

65 lines
964 B
Go

package bin
import (
"io"
mc "github.com/multiformats/go-multicodec"
base "github.com/multiformats/go-multicodec/base"
)
var (
HeaderPath = "/bin/"
Header = mc.Header([]byte(HeaderPath))
multic = mc.NewMulticodecFromCodec(Codec(), Header)
)
type codec struct{}
func (codec) Header() []byte {
return Header
}
type decoder struct {
r io.Reader
}
func (d decoder) Decode(v interface{}) error {
slice, ok := v.([]byte)
if !ok {
return base.ErrExpectedByteSlice
}
_, err := d.r.Read(slice)
return err
}
func (codec) Decoder(r io.Reader) mc.Decoder {
return decoder{r}
}
type encoder struct {
w io.Writer
}
func (e encoder) Encode(v interface{}) error {
slice, ok := v.([]byte)
if !ok {
return base.ErrExpectedByteSlice
}
_, err := e.w.Write(slice)
return err
}
func (codec) Encoder(w io.Writer) mc.Encoder {
return encoder{w}
}
func Codec() mc.Codec {
return codec{}
}
func Multicodec() mc.Multicodec {
return multic
}