mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-10 14:34:24 +08:00
Cache files/dirs when added.
License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io>
This commit is contained in:
16
mfs/dir.go
16
mfs/dir.go
@ -116,6 +116,11 @@ func (d *Directory) childNode(name string) (FSNode, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return d.cacheNode(name, nd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// cacheNode caches a node into d.childDirs or d.files and returns the FSNode.
|
||||||
|
func (d *Directory) cacheNode(name string, nd *dag.Node) (FSNode, error) {
|
||||||
i, err := ft.FromBytes(nd.Data)
|
i, err := ft.FromBytes(nd.Data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -334,6 +339,17 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
|
|||||||
|
|
||||||
d.modTime = time.Now()
|
d.modTime = time.Now()
|
||||||
|
|
||||||
|
if len(nd.Links) == 0 {
|
||||||
|
nfi, err := NewFile(name, nd, d, d.dserv)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
d.files[name] = nfi
|
||||||
|
} else {
|
||||||
|
ndir := NewDirectory(d.ctx, name, nd, d, d.dserv)
|
||||||
|
d.childDirs[name] = ndir
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user