@cryptotaxi247 / kubo / commits / c322a4eb0

core/commands/add: Change add() to only accept a single reader

The change to an array of readers comes from e096060b (refactor(core/commands2/add) split loop, 2014-11-06), where it's used to setup readers for each path in the argument list. However, since 6faeee83 (cmds2/add: temp fix for -r. horrible hack, 2014-11-11) the argument looping moved outside of add() and into Run(), so we can drop the multiple-reader support from add(). Adding a file can create multiple nodes (e.g. the splitter can chunk the file into several blocks), but: 1. we were only appending a single node per reader to our returned list, and 2. we are only using the final node in that returned list, so this commit also adjusts add() to return a single node reference instead on an array of nodes.

W. Trevor King committed Apr 23, 2015 at 09:35 UTC c322a4eb0f5b7268d4fae3f426e9c32af0185f97
1 file changed +9 -14
core/commands/add.go
+9 -14
@@ -213,23 +213,18 @@ remains to be implemented.
213 Type: AddedObject{},
214 }
215
216 -func add(n *core.IpfsNode, readers []io.Reader) ([]*dag.Node, error) {
217 - dagnodes := make([]*dag.Node, 0)
218 -
219 - for _, reader := range readers {
220 - node, err := importer.BuildDagFromReader(reader, n.DAG, nil, chunk.DefaultSplitter)
221 - if err != nil {
222 - return nil, err
223 - }
224 - dagnodes = append(dagnodes, node)
216 +func add(n *core.IpfsNode, reader io.Reader) (*dag.Node, error) {
217 + node, err := importer.BuildDagFromReader(reader, n.DAG, nil, chunk.DefaultSplitter)
218 + if err != nil {
219 + return nil, err
220 }
221
227 - err := n.Pinning.Flush()
222 + err = n.Pinning.Flush()
223 if err != nil {
224 return nil, err
225 }
226
232 - return dagnodes, nil
227 + return node, nil
228 }
229
230 func addFile(n *core.IpfsNode, file files.File, out chan interface{}, progress bool, wrap bool) (*dag.Node, error) {
@@ -256,16 +251,16 @@ func addFile(n *core.IpfsNode, file files.File, out chan interface{}, progress b
251 return dagnode, nil
252 }
253
259 - dns, err := add(n, []io.Reader{reader})
254 + dagnode, err := add(n, reader)
255 if err != nil {
256 return nil, err
257 }
258
259 log.Infof("adding file: %s", file.FileName())
265 - if err := outputDagnode(out, file.FileName(), dns[len(dns)-1]); err != nil {
260 + if err := outputDagnode(out, file.FileName(), dagnode); err != nil {
261 return nil, err
262 }
268 - return dns[len(dns)-1], nil // last dag node is the file.
263 + return dagnode, nil
264 }
265
266 func addDir(n *core.IpfsNode, dir files.File, out chan interface{}, progress bool) (*dag.Node, error) {