@cryptotaxi247 / kubo / commits / b660f937b

make callback take a node instead of a key

Jeromy committed May 28, 2015 at 08:28 UTC b660f937bd38bc47aeb1e49ee509944d058b843c
5 files changed +33 -28
core/coreunix/add.go
+1 -5
@@ -17,7 +17,6 @@ import (
17 "github.com/ipfs/go-ipfs/pin"
18 "github.com/ipfs/go-ipfs/thirdparty/eventlog"
19 unixfs "github.com/ipfs/go-ipfs/unixfs"
20 - u "github.com/ipfs/go-ipfs/util"
20 )
21
22 var log = eventlog.Logger("coreunix")
@@ -100,10 +99,7 @@ func add(n *core.IpfsNode, reader io.Reader) (*merkledag.Node, error) {
99 reader,
100 n.DAG,
101 chunk.DefaultSplitter,
103 - func(k u.Key, root bool) error {
104 - mp.PinWithMode(k, pin.Indirect)
105 - return nil
106 - },
102 + importer.PinIndirectCB(mp),
103 )
104 if err != nil {
105 return nil, err
importer/helpers/dagbuilder.go
+11 -12
@@ -3,12 +3,11 @@ package helpers
3 import (
4 dag "github.com/ipfs/go-ipfs/merkledag"
5 "github.com/ipfs/go-ipfs/pin"
6 - u "github.com/ipfs/go-ipfs/util"
6 )
7
9 -type BlockCB func(u.Key, bool) error
8 +type NodeCB func(node *dag.Node, root bool) error
9
11 -var nilFunc BlockCB = func(_ u.Key, _ bool) error { return nil }
10 +var nilFunc NodeCB = func(_ *dag.Node, _ bool) error { return nil }
11
12 // DagBuilderHelper wraps together a bunch of objects needed to
13 // efficiently create unixfs dag trees
@@ -18,7 +17,7 @@ type DagBuilderHelper struct {
17 in <-chan []byte
18 nextData []byte // the next item to return.
19 maxlinks int
21 - bcb BlockCB
20 + ncb NodeCB
21 }
22
23 type DagBuilderParams struct {
@@ -29,22 +28,22 @@ type DagBuilderParams struct {
28 Dagserv dag.DAGService
29
30 // Callback for each block added
32 - BlockCB BlockCB
31 + NodeCB NodeCB
32 }
33
34 // Generate a new DagBuilderHelper from the given params, using 'in' as a
35 // data source
36 func (dbp *DagBuilderParams) New(in <-chan []byte) *DagBuilderHelper {
38 - bcb := dbp.BlockCB
39 - if bcb == nil {
40 - bcb = nilFunc
37 + ncb := dbp.NodeCB
38 + if ncb == nil {
39 + ncb = nilFunc
40 }
41
42 return &DagBuilderHelper{
43 dserv: dbp.Dagserv,
44 in: in,
45 maxlinks: dbp.Maxlinks,
47 - bcb: bcb,
46 + ncb: ncb,
47 }
48 }
49
@@ -136,13 +135,13 @@ func (db *DagBuilderHelper) Add(node *UnixfsNode) (*dag.Node, error) {
135 return nil, err
136 }
137
139 - key, err := db.dserv.Add(dn)
138 + _, err = db.dserv.Add(dn)
139 if err != nil {
140 return nil, err
141 }
142
144 - // block callback
145 - err = db.bcb(key, true)
143 + // node callback
144 + err = db.ncb(dn, true)
145 if err != nil {
146 return nil, err
147 }
importer/helpers/helpers.go
+2 -2
@@ -107,13 +107,13 @@ func (n *UnixfsNode) AddChild(child *UnixfsNode, db *DagBuilderHelper) error {
107 return err
108 }
109
110 - childkey, err := db.dserv.Add(childnode)
110 + _, err = db.dserv.Add(childnode)
111 if err != nil {
112 return err
113 }
114
115 // Pin the child node indirectly
116 - err = db.bcb(childkey, false)
116 + err = db.ncb(childnode, false)
117 if err != nil {
118 return err
119 }
importer/importer.go
+18 -8
@@ -39,34 +39,39 @@ func BuildDagFromFile(fpath string, ds dag.DAGService, mp pin.ManualPinner) (*da
39 return BuildDagFromReader(f, ds, chunk.DefaultSplitter, BasicPinnerCB(mp))
40 }
41
42 -func BuildDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, bcb h.BlockCB) (*dag.Node, error) {
42 +func BuildDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, ncb h.NodeCB) (*dag.Node, error) {
43 // Start the splitter
44 blkch := spl.Split(r)
45
46 dbp := h.DagBuilderParams{
47 Dagserv: ds,
48 Maxlinks: h.DefaultLinksPerBlock,
49 - BlockCB: bcb,
49 + NodeCB: ncb,
50 }
51
52 return bal.BalancedLayout(dbp.New(blkch))
53 }
54
55 -func BuildTrickleDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, bcb h.BlockCB) (*dag.Node, error) {
55 +func BuildTrickleDagFromReader(r io.Reader, ds dag.DAGService, spl chunk.BlockSplitter, ncb h.NodeCB) (*dag.Node, error) {
56 // Start the splitter
57 blkch := spl.Split(r)
58
59 dbp := h.DagBuilderParams{
60 Dagserv: ds,
61 Maxlinks: h.DefaultLinksPerBlock,
62 - BlockCB: bcb,
62 + NodeCB: ncb,
63 }
64
65 return trickle.TrickleLayout(dbp.New(blkch))
66 }
67
68 -func BasicPinnerCB(p pin.ManualPinner) h.BlockCB {
69 - return func(k u.Key, root bool) error {
68 +func BasicPinnerCB(p pin.ManualPinner) h.NodeCB {
69 + return func(n *dag.Node, root bool) error {
70 + k, err := n.Key()
71 + if err != nil {
72 + return err
73 + }
74 +
75 if root {
76 p.PinWithMode(k, pin.Recursive)
77 return p.Flush()
@@ -77,8 +82,13 @@ func BasicPinnerCB(p pin.ManualPinner) h.BlockCB {
82 }
83 }
84
80 -func PinIndirectCB(p pin.ManualPinner) h.BlockCB {
81 - return func(k u.Key, root bool) error {
85 +func PinIndirectCB(p pin.ManualPinner) h.NodeCB {
86 + return func(n *dag.Node, root bool) error {
87 + k, err := n.Key()
88 + if err != nil {
89 + return err
90 + }
91 +
92 p.PinWithMode(k, pin.Indirect)
93 return nil
94 }
unixfs/mod/dagmodifier.go
+1 -1
@@ -309,7 +309,7 @@ func (dm *DagModifier) appendData(node *mdag.Node, blks <-chan []byte) (*mdag.No
309 dbp := &help.DagBuilderParams{
310 Dagserv: dm.dagserv,
311 Maxlinks: help.DefaultLinksPerBlock,
312 - BlockCB: imp.BasicPinnerCB(dm.mp),
312 + NodeCB: imp.BasicPinnerCB(dm.mp),
313 }
314
315 return trickle.TrickleAppend(node, dbp.New(blks))