Merge pull request #29 from vocdoni/use_io_writer

use io.Writer interface for Dump methods
This commit is contained in:
arnaucube
2022-08-26 08:52:15 +02:00
committed by GitHub
2 changed files with 5 additions and 13 deletions

11
tree.go
View File

@@ -1327,7 +1327,7 @@ func (t *Tree) Dump(fromRoot []byte) ([]byte, error) {
} }
// DumpWriter exports all the Tree leafs writing the bytes in the given Writer // DumpWriter exports all the Tree leafs writing the bytes in the given Writer
func (t *Tree) DumpWriter(fromRoot []byte, w *bufio.Writer) error { func (t *Tree) DumpWriter(fromRoot []byte, w io.Writer) error {
_, err := t.dump(fromRoot, w) _, err := t.dump(fromRoot, w)
return err return err
} }
@@ -1340,7 +1340,7 @@ func (t *Tree) DumpWriter(fromRoot []byte, w *bufio.Writer) error {
// [ 1 byte | 1 byte | S bytes | len(v) bytes ] // [ 1 byte | 1 byte | S bytes | len(v) bytes ]
// [ len(k) | len(v) | key | value ] // [ len(k) | len(v) | key | value ]
// Where S is the size of the output of the hash function used for the Tree. // Where S is the size of the output of the hash function used for the Tree.
func (t *Tree) dump(fromRoot []byte, w *bufio.Writer) ([]byte, error) { func (t *Tree) dump(fromRoot []byte, w io.Writer) ([]byte, error) {
// allow to define which root to use // allow to define which root to use
if fromRoot == nil { if fromRoot == nil {
var err error var err error
@@ -1385,11 +1385,6 @@ func (t *Tree) dump(fromRoot []byte, w *bufio.Writer) ([]byte, error) {
callbackErr = fmt.Errorf("dump: w.Write n!=len(kv), %s", err) callbackErr = fmt.Errorf("dump: w.Write n!=len(kv), %s", err)
return true return true
} }
err = w.Flush()
if err != nil {
callbackErr = fmt.Errorf("dump: w.Flush, %s", err)
return true
}
} }
return false return false
}) })
@@ -1409,7 +1404,7 @@ func (t *Tree) ImportDump(b []byte) error {
// ImportDumpReader imports the leafs (that have been exported with the Dump // ImportDumpReader imports the leafs (that have been exported with the Dump
// method) in the Tree, reading them from the given reader. // method) in the Tree, reading them from the given reader.
func (t *Tree) ImportDumpReader(r *bufio.Reader) error { func (t *Tree) ImportDumpReader(r io.Reader) error {
if !t.editable() { if !t.editable() {
return ErrSnapshotNotEditable return ErrSnapshotNotEditable
} }

View File

@@ -1,7 +1,6 @@
package arbo package arbo
import ( import (
"bufio"
"encoding/hex" "encoding/hex"
"math" "math"
"math/big" "math/big"
@@ -492,8 +491,7 @@ func testDumpAndImportDump(t *testing.T, inFile bool) {
if inFile { if inFile {
f, err := os.Create(fileName) f, err := os.Create(fileName)
c.Assert(err, qt.IsNil) c.Assert(err, qt.IsNil)
w := bufio.NewWriter(f) err = tree1.DumpWriter(nil, f)
err = tree1.DumpWriter(nil, w)
c.Assert(err, qt.IsNil) c.Assert(err, qt.IsNil)
} else { } else {
e, err = tree1.Dump(nil) e, err = tree1.Dump(nil)
@@ -510,8 +508,7 @@ func testDumpAndImportDump(t *testing.T, inFile bool) {
if inFile { if inFile {
f, err := os.Open(filepath.Clean(fileName)) f, err := os.Open(filepath.Clean(fileName))
c.Assert(err, qt.IsNil) c.Assert(err, qt.IsNil)
r := bufio.NewReader(f) err = tree2.ImportDumpReader(f)
err = tree2.ImportDumpReader(r)
c.Assert(err, qt.IsNil) c.Assert(err, qt.IsNil)
} else { } else {
err = tree2.ImportDump(e) err = tree2.ImportDump(e)