mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-10 05:52:20 +08:00
use batching transaction interface from datastore
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
This commit is contained in:
@ -31,7 +31,17 @@ func BalancedLayout(db *h.DagBuilderHelper) (*dag.Node, error) {
|
||||
root = h.NewUnixfsNode()
|
||||
}
|
||||
|
||||
return db.Add(root)
|
||||
out, err := db.Add(root)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// fillNodeRec will fill the given node with data from the dagBuilders input
|
||||
|
@ -22,6 +22,8 @@ type DagBuilderHelper struct {
|
||||
nextData []byte // the next item to return.
|
||||
maxlinks int
|
||||
ncb NodeCB
|
||||
|
||||
batch *dag.Batch
|
||||
}
|
||||
|
||||
type DagBuilderParams struct {
|
||||
@ -48,6 +50,7 @@ func (dbp *DagBuilderParams) New(in <-chan []byte) *DagBuilderHelper {
|
||||
in: in,
|
||||
maxlinks: dbp.Maxlinks,
|
||||
ncb: ncb,
|
||||
batch: dbp.Dagserv.Batch(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -156,3 +159,7 @@ func (db *DagBuilderHelper) Add(node *UnixfsNode) (*dag.Node, error) {
|
||||
func (db *DagBuilderHelper) Maxlinks() int {
|
||||
return db.maxlinks
|
||||
}
|
||||
|
||||
func (db *DagBuilderHelper) Close() error {
|
||||
return db.batch.Commit()
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ func (n *UnixfsNode) AddChild(child *UnixfsNode, db *DagBuilderHelper) error {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = db.dserv.Add(childnode)
|
||||
_, err = db.batch.Add(childnode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -36,7 +36,17 @@ func TrickleLayout(db *h.DagBuilderHelper) (*dag.Node, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return db.Add(root)
|
||||
out, err := db.Add(root)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func fillTrickleRec(db *h.DagBuilderHelper, node *h.UnixfsNode, depth int) error {
|
||||
@ -64,7 +74,16 @@ func fillTrickleRec(db *h.DagBuilderHelper, node *h.UnixfsNode, depth int) error
|
||||
}
|
||||
|
||||
// TrickleAppend appends the data in `db` to the dag, using the Trickledag format
|
||||
func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (*dag.Node, error) {
|
||||
func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_out error) {
|
||||
defer func() {
|
||||
if err_out == nil {
|
||||
err := db.Close()
|
||||
if err != nil {
|
||||
err_out = err
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
// Convert to unixfs node for working with easily
|
||||
ufsn, err := h.NewUnixfsNodeFromDag(base)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user