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))