Skip to content
Snippets Groups Projects
codec.go 952 B
Newer Older
Androlo's avatar
Androlo committed
package erisdb

import (
Androlo's avatar
Androlo committed
	rpc "github.com/eris-ltd/eris-db/rpc"
Androlo's avatar
Androlo committed
	"github.com/tendermint/tendermint/binary"
	"io"
	"io/ioutil"
)

// Codec that uses tendermints 'binary' package for JSON.
type TCodec struct {
}

// Get a new codec.
func NewTCodec() rpc.Codec {
	return &TCodec{}
}

// Encode to an io.Writer.
func (this *TCodec) Encode(v interface{}, w io.Writer) error {
	var err error
	var n int64
	binary.WriteJSON(v, w, &n, &err)
Androlo's avatar
Androlo committed
	return err
Androlo's avatar
Androlo committed
}

// Encode to a byte array.
func (this *TCodec) EncodeBytes(v interface{}) ([]byte, error) {
	return binary.JSONBytes(v), nil
}

// Decode from an io.Reader.
func (this *TCodec) Decode(v interface{}, r io.Reader) error {
	bts, errR := ioutil.ReadAll(r)
	if errR != nil {
		return errR
	}
	var err error
	binary.ReadJSON(v, bts, &err)
	return err
}

// Decode from a byte array.
func (this *TCodec) DecodeBytes(v interface{}, bts []byte) error {
Androlo's avatar
Androlo committed
	var err error
Androlo's avatar
Androlo committed
	binary.ReadJSON(v, bts, &err)
	return err
Androlo's avatar
Androlo committed
}