tendermint/lite/files/commit.go

94 lines
2.0 KiB
Go
Raw Normal View History

2017-10-24 03:34:36 -07:00
package files
import (
2018-04-05 22:05:30 -07:00
"io/ioutil"
2017-10-24 03:34:36 -07:00
"os"
"github.com/pkg/errors"
2017-11-09 14:37:18 -08:00
"github.com/tendermint/tendermint/lite"
liteErr "github.com/tendermint/tendermint/lite/errors"
2017-10-24 03:34:36 -07:00
)
const (
// MaxFullCommitSize is the maximum number of bytes we will
// read in for a full commit to avoid excessive allocations
// in the deserializer
MaxFullCommitSize = 1024 * 1024
)
2018-04-05 22:05:30 -07:00
// SaveFullCommit exports the seed in binary / go-amino style
2017-11-09 14:37:18 -08:00
func SaveFullCommit(fc lite.FullCommit, path string) error {
2017-10-24 03:34:36 -07:00
f, err := os.Create(path)
if err != nil {
return errors.WithStack(err)
}
defer f.Close()
2018-04-05 22:05:30 -07:00
_, err = cdc.MarshalBinaryWriter(f, fc)
if err != nil {
return errors.WithStack(err)
}
return nil
2017-10-24 03:34:36 -07:00
}
// SaveFullCommitJSON exports the seed in a json format
2017-11-09 14:37:18 -08:00
func SaveFullCommitJSON(fc lite.FullCommit, path string) error {
2017-10-24 03:34:36 -07:00
f, err := os.Create(path)
if err != nil {
return errors.WithStack(err)
}
defer f.Close()
2018-04-05 22:05:30 -07:00
bz, err := cdc.MarshalJSON(fc)
if err != nil {
return errors.WithStack(err)
}
_, err = f.Write(bz)
if err != nil {
return errors.WithStack(err)
}
return nil
2017-10-24 03:34:36 -07:00
}
// LoadFullCommit loads the full commit from the file system.
2017-11-09 14:37:18 -08:00
func LoadFullCommit(path string) (lite.FullCommit, error) {
var fc lite.FullCommit
2017-10-24 03:34:36 -07:00
f, err := os.Open(path)
if err != nil {
if os.IsNotExist(err) {
2017-11-09 14:37:18 -08:00
return fc, liteErr.ErrCommitNotFound()
2017-10-24 03:34:36 -07:00
}
return fc, errors.WithStack(err)
}
defer f.Close()
2018-04-05 22:05:30 -07:00
_, err = cdc.UnmarshalBinaryReader(f, &fc, 0)
if err != nil {
return fc, errors.WithStack(err)
}
return fc, nil
2017-10-24 03:34:36 -07:00
}
// LoadFullCommitJSON loads the commit from the file system in JSON format.
2017-11-09 14:37:18 -08:00
func LoadFullCommitJSON(path string) (lite.FullCommit, error) {
var fc lite.FullCommit
2017-10-24 03:34:36 -07:00
f, err := os.Open(path)
if err != nil {
if os.IsNotExist(err) {
2017-11-09 14:37:18 -08:00
return fc, liteErr.ErrCommitNotFound()
2017-10-24 03:34:36 -07:00
}
return fc, errors.WithStack(err)
}
defer f.Close()
2018-04-05 22:05:30 -07:00
bz, err := ioutil.ReadAll(f)
if err != nil {
return fc, errors.WithStack(err)
}
err = cdc.UnmarshalJSON(bz, &fc)
if err != nil {
return fc, errors.WithStack(err)
}
return fc, nil
2017-10-24 03:34:36 -07:00
}