@cryptotaxi247 / kubo / commits / e539024eb

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 {