mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-09 19:32: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 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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -334,6 +339,17 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user