From b660f937bd38bc47aeb1e49ee509944d058b843c Mon Sep 17 00:00:00 2001 From: Jeromy <jeromyj@gmail.com> Date: Thu, 28 May 2015 08:28:59 -0700 Subject: [PATCH] make callback take a node instead of a key --- core/coreunix/add.go | 6 +----- importer/helpers/dagbuilder.go | 23 +++++++++++------------ importer/helpers/helpers.go | 4 ++-- importer/importer.go | 26 ++++++++++++++++++-------- unixfs/mod/dagmodifier.go | 2 +- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/core/coreunix/add.go b/core/coreunix/add.go index 07105bdb0..c1b9586c7 100644 --- a/core/coreunix/add.go +++ b/core/coreunix/add.go @@ -17,7 +17,6 @@ import ( "github.com/ipfs/go-ipfs/pin" "github.com/ipfs/go-ipfs/thirdparty/eventlog" unixfs "github.com/ipfs/go-ipfs/unixfs" - u "github.com/ipfs/go-ipfs/util" ) var log = eventlog.Logger("coreunix") @@ -100,10 +99,7 @@ func add(n *core.IpfsNode, reader io.Reader) (*merkledag.Node, error) { reader, n.DAG, chunk.DefaultSplitter, - func(k u.Key, root bool) error { - mp.PinWithMode(k, pin.Indirect) - return nil - }, + importer.PinIndirectCB(mp), ) if err != nil { return nil, err diff --git a/importer/helpers/dagbuilder.go b/importer/helpers/dagbuilder.go index 99d4de5c2..51fc39f21 100644 --- a/importer/helpers/dagbuilder.go +++ b/importer/helpers/dagbuilder.go @@ -3,12 +3,11 @@ package helpers import ( dag "github.com/ipfs/go-ipfs/merkledag" "github.com/ipfs/go-ipfs/pin" - u "github.com/ipfs/go-ipfs/util" ) -type BlockCB func(u.Key, bool) error +type NodeCB func(node *dag.Node, root bool) error -var nilFunc BlockCB = func(_ u.Key, _ bool) error { return nil } +var nilFunc NodeCB = func(_ *dag.Node, _ bool) error { return nil } // DagBuilderHelper wraps together a bunch of objects needed to // efficiently create unixfs dag trees @@ -18,7 +17,7 @@ type DagBuilderHelper struct { in <-chan []byte nextData []byte // the next item to return. maxlinks int - bcb BlockCB + ncb NodeCB } type DagBuilderParams struct { @@ -29,22 +28,22 @@ type DagBuilderParams struct { Dagserv dag.DAGService // Callback for each block added - BlockCB BlockCB + NodeCB NodeCB } // Generate a new DagBuilderHelper from the given params, using 'in' as a // data source func (dbp *DagBuilderParams) New(in <-chan []byte) *DagBuilderHelper { - bcb := dbp.BlockCB - if bcb == nil { - bcb = nilFunc + ncb := dbp.NodeCB + if ncb == nil { + ncb = nilFunc } return &DagBuilderHelper{ dserv: dbp.Dagserv, in: in, maxlinks: dbp.Maxlinks, - bcb: bcb, + ncb: ncb, } } @@ -136,13 +135,13 @@ func (db *DagBuilderHelper) Add(node *UnixfsNode) (*dag.Node, error) { return nil, err } - key, err := db.dserv.Add(dn) + _, err = db.dserv.Add(dn) if err != nil { return nil, err } - // block callback - err = db.bcb(key, true) + // node callback + err = db.ncb(dn, true) if err != nil { return nil, err } diff --git a/importer/helpers/helpers.go b/importer/helpers/helpers.go index 39605f93f..e6a1a2012 100644 --- a/importer/helpers/helpers.go +++ b/importer/helpers/helpers.go @@ -107,13 +107,13 @@ func (n *UnixfsNode) AddChild(child *UnixfsNode, db *DagBuilderHelper) error { return err } - childkey, err := db.dserv.Add(childnode) + _, err = db.dserv.Add(childnode) if err != nil { return err } // Pin the child node indirectly - err = db.bcb(childkey, false) + err = db.ncb(childnode, false) if err != nil { return err } diff --git a/importer/importer.go b/importer/importer.go index c33b60911..c3d9eea6e 100644 --- a/importer/importer.go +++ b/importer/importer.go @@ -39,34 +39,39 @@ func BuildDagFromFile(fpath string, ds dag.DAGService, mp pin.ManualPinner) (*da return BuildDagFromReader(f, ds, chunk.DefaultSplitter, BasicPinnerCB(mp)) } -func BuildDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, bcb h.BlockCB) (*dag.Node, error) { +func BuildDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, ncb h.NodeCB) (*dag.Node, error) { // Start the splitter blkch := spl.Split(r) dbp := h.DagBuilderParams{ Dagserv: ds, Maxlinks: h.DefaultLinksPerBlock, - BlockCB: bcb, + NodeCB: ncb, } return bal.BalancedLayout(dbp.New(blkch)) } -func BuildTrickleDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, bcb h.BlockCB) (*dag.Node, error) { +func BuildTrickleDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, ncb h.NodeCB) (*dag.Node, error) { // Start the splitter blkch := spl.Split(r) dbp := h.DagBuilderParams{ Dagserv: ds, Maxlinks: h.DefaultLinksPerBlock, - BlockCB: bcb, + NodeCB: ncb, } return trickle.TrickleLayout(dbp.New(blkch)) } -func BasicPinnerCB(p pin.ManualPinner) h.BlockCB { - return func(k u.Key, root bool) error { +func BasicPinnerCB(p pin.ManualPinner) h.NodeCB { + return func(n *dag.Node, root bool) error { + k, err := n.Key() + if err != nil { + return err + } + if root { p.PinWithMode(k, pin.Recursive) return p.Flush() @@ -77,8 +82,13 @@ func BasicPinnerCB(p pin.ManualPinner) h.BlockCB { } } -func PinIndirectCB(p pin.ManualPinner) h.BlockCB { - return func(k u.Key, root bool) error { +func PinIndirectCB(p pin.ManualPinner) h.NodeCB { + return func(n *dag.Node, root bool) error { + k, err := n.Key() + if err != nil { + return err + } + p.PinWithMode(k, pin.Indirect) return nil } diff --git a/unixfs/mod/dagmodifier.go b/unixfs/mod/dagmodifier.go index 78f7282fb..bba3139cb 100644 --- a/unixfs/mod/dagmodifier.go +++ b/unixfs/mod/dagmodifier.go @@ -309,7 +309,7 @@ func (dm *DagModifier) appendData(node *mdag.Node, blks <-chan []byte) (*mdag.No dbp := &help.DagBuilderParams{ Dagserv: dm.dagserv, Maxlinks: help.DefaultLinksPerBlock, - BlockCB: imp.BasicPinnerCB(dm.mp), + NodeCB: imp.BasicPinnerCB(dm.mp), } return trickle.TrickleAppend(node, dbp.New(blks)) -- GitLab