some code cleanup
Jeromy committed
Mar 7, 2015 at 12:55 UTC
e539024ebbb48b642c428509f3296608089b8c20
1 file changed
+41
-36
importer/trickle/trickledag.go
+41
-36
@@ -68,7 +68,7 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (*dag.Node, error) {
68
}
69
70
// Get depth of this 'tree'
71
- n, j := trickleDepthInfo(ufsn, db.Maxlinks())
71
+ n, layerProgress := trickleDepthInfo(ufsn, db.Maxlinks())
72
if n == 0 {
73
// If direct blocks not filled...
74
err := db.FillNodeLayer(ufsn)
@@ -84,7 +84,8 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (*dag.Node, error) {
84
n++
85
}
86
87
- err = appendFillLastChild(ufsn, n-1, j, db)
87
+ // Last child in this node may not be a full tree, lets file it up
88
+ err = appendFillLastChild(ufsn, n-1, layerProgress, db)
89
if err != nil {
90
return nil, err
91
}
@@ -113,41 +114,44 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (*dag.Node, error) {
114
return ufsn.GetDagNode()
115
}
116
117
+// appendFillLastChild will take in an incomplete trickledag node (uncomplete meaning, not full) and
118
+// fill it out to the specified depth with blocks from the given DagBuilderHelper
119
func appendFillLastChild(ufsn *h.UnixfsNode, depth int, layerFill int, db *h.DagBuilderHelper) error {
117
- if ufsn.NumChildren() > db.Maxlinks() {
118
- // Recursive step, grab last child
119
- last := ufsn.NumChildren() - 1
120
- lastChild, err := ufsn.GetChild(last, db.GetDagServ())
121
- if err != nil {
122
- return err
123
- }
120
+ if ufsn.NumChildren() <= db.Maxlinks() {
121
+ return nil
122
+ }
123
+ // Recursive step, grab last child
124
+ last := ufsn.NumChildren() - 1
125
+ lastChild, err := ufsn.GetChild(last, db.GetDagServ())
126
+ if err != nil {
127
+ return err
128
+ }
129
125
- // Fill out last child (may not be full tree)
126
- nchild, err := trickleAppendRec(lastChild, db, depth-1)
127
- if err != nil {
128
- return err
129
- }
130
+ // Fill out last child (may not be full tree)
131
+ nchild, err := trickleAppendRec(lastChild, db, depth-1)
132
+ if err != nil {
133
+ return err
134
+ }
135
131
- // Update changed child in parent node
132
- ufsn.RemoveChild(last)
133
- err = ufsn.AddChild(nchild, db)
134
- if err != nil {
135
- return err
136
- }
136
+ // Update changed child in parent node
137
+ ufsn.RemoveChild(last)
138
+ err = ufsn.AddChild(nchild, db)
139
+ if err != nil {
140
+ return err
141
+ }
142
+
143
+ // Partially filled depth layer
144
+ if layerFill != 0 {
145
+ for ; layerFill < layerRepeat && !db.Done(); layerFill++ {
146
+ next := h.NewUnixfsNode()
147
+ err := fillTrickleRec(db, next, depth)
148
+ if err != nil {
149
+ return err
150
+ }
151
138
- // Partially filled depth layer
139
- if layerFill != 0 {
140
- for ; layerFill < layerRepeat && !db.Done(); layerFill++ {
141
- next := h.NewUnixfsNode()
142
- err := fillTrickleRec(db, next, depth)
143
- if err != nil {
144
- return err
145
- }
146
-
147
- err = ufsn.AddChild(next, db)
148
- if err != nil {
149
- return err
150
- }
152
+ err = ufsn.AddChild(next, db)
153
+ if err != nil {
154
+ return err
155
}
156
}
157
}
@@ -155,13 +159,14 @@ func appendFillLastChild(ufsn *h.UnixfsNode, depth int, layerFill int, db *h.Dag
159
return nil
160
}
161
162
+// recursive call for TrickleAppend
163
func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h.UnixfsNode, error) {
164
if depth == 0 || db.Done() {
165
return ufsn, nil
166
}
167
168
// Get depth of this 'tree'
164
- n, j := trickleDepthInfo(ufsn, db.Maxlinks())
169
+ n, layerProgress := trickleDepthInfo(ufsn, db.Maxlinks())
170
if n == 0 {
171
// If direct blocks not filled...
172
err := db.FillNodeLayer(ufsn)
@@ -176,7 +181,7 @@ func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h
181
return ufsn, nil
182
}
183
179
- err := appendFillLastChild(ufsn, n, j, db)
184
+ err := appendFillLastChild(ufsn, n, layerProgress, db)
185
if err != nil {
186
return nil, err
187
}
@@ -242,7 +247,7 @@ func verifyTDagRec(nd *dag.Node, depth, direct, layerRepeat int, ds dag.DAGServi
247
for i := 0; i < len(nd.Links); i++ {
248
child, err := nd.Links[i].GetNode(ds)
249
if err != nil {
245
- return nil
250
+ return err
251
}
252
253
if i < direct {