@cryptotaxi247 / kubo / commits / 06e710330

Cache files/dirs when added.

License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io>

Stephen Whitmore committed Apr 6, 2016 at 19:25 UTC 06e710330a1ce6e937fa214998d8da5cbf5a8555
1 file changed +16
mfs/dir.go
+16
@@ -116,6 +116,11 @@ func (d *Directory) childNode(name string) (FSNode, error) {
116 return nil, err
117 }
118
119 + return d.cacheNode(name, nd)
120 +}
121 +
122 +// cacheNode caches a node into d.childDirs or d.files and returns the FSNode.
123 +func (d *Directory) cacheNode(name string, nd *dag.Node) (FSNode, error) {
124 i, err := ft.FromBytes(nd.Data)
125 if err != nil {
126 return nil, err
@@ -334,6 +339,17 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
339
340 d.modTime = time.Now()
341
342 + if len(nd.Links) == 0 {
343 + nfi, err := NewFile(name, nd, d, d.dserv)
344 + if err != nil {
345 + return err
346 + }
347 + d.files[name] = nfi
348 + } else {
349 + ndir := NewDirectory(d.ctx, name, nd, d, d.dserv)
350 + d.childDirs[name] = ndir
351 + }
352 +
353 return nil
354 }
355