fs: put all importer roots in the roots folder too

This commit is contained in:
Brad Fitzpatrick 2013-11-21 17:51:34 -08:00
parent ed889d38be
commit 02eb1a6e97
1 changed files with 34 additions and 5 deletions

View File

@ -21,12 +21,14 @@ package fs
import ( import (
"log" "log"
"os" "os"
"strings"
"sync" "sync"
"time" "time"
"camlistore.org/pkg/blob" "camlistore.org/pkg/blob"
"camlistore.org/pkg/schema" "camlistore.org/pkg/schema"
"camlistore.org/pkg/search" "camlistore.org/pkg/search"
"camlistore.org/pkg/syncutil"
"camlistore.org/third_party/code.google.com/p/rsc/fuse" "camlistore.org/third_party/code.google.com/p/rsc/fuse"
) )
@ -87,9 +89,17 @@ func (n *rootsDir) condRefresh() fuse.Error {
} }
log.Printf("fs.roots: querying") log.Printf("fs.roots: querying")
req := &search.WithAttrRequest{N: 100, Attr: "camliRoot"} var rootRes, impRes *search.WithAttrResponse
wres, err := n.fs.client.GetPermanodesWithAttr(req) var grp syncutil.Group
if err != nil { grp.Go(func() (err error) {
rootRes, err = n.fs.client.GetPermanodesWithAttr(&search.WithAttrRequest{N: 100, Attr: "camliRoot"})
return
})
grp.Go(func() (err error) {
impRes, err = n.fs.client.GetPermanodesWithAttr(&search.WithAttrRequest{N: 100, Attr: "camliImportRoot"})
return
})
if err := grp.Err(); err != nil {
log.Printf("fs.recent: GetRecentPermanodes error in ReadDir: %v", err) log.Printf("fs.recent: GetRecentPermanodes error in ReadDir: %v", err)
return fuse.EIO return fuse.EIO
} }
@ -97,7 +107,10 @@ func (n *rootsDir) condRefresh() fuse.Error {
dr := &search.DescribeRequest{ dr := &search.DescribeRequest{
Depth: 1, Depth: 1,
} }
for _, wi := range wres.WithAttr { for _, wi := range rootRes.WithAttr {
dr.BlobRefs = append(dr.BlobRefs, wi.Permanode)
}
for _, wi := range impRes.WithAttr {
dr.BlobRefs = append(dr.BlobRefs, wi.Permanode) dr.BlobRefs = append(dr.BlobRefs, wi.Permanode)
} }
dres, err := n.fs.client.Describe(dr) dres, err := n.fs.client.Describe(dr)
@ -108,7 +121,8 @@ func (n *rootsDir) condRefresh() fuse.Error {
n.m = make(map[string]blob.Ref) n.m = make(map[string]blob.Ref)
for _, wi := range wres.WithAttr { // Roots
for _, wi := range rootRes.WithAttr {
pn := wi.Permanode pn := wi.Permanode
db := dres.Meta[pn.String()] db := dres.Meta[pn.String()]
if db != nil && db.Permanode != nil { if db != nil && db.Permanode != nil {
@ -118,6 +132,21 @@ func (n *rootsDir) condRefresh() fuse.Error {
} }
} }
} }
// Importers (mapped as roots for now)
for _, wi := range impRes.WithAttr {
pn := wi.Permanode
db := dres.Meta[pn.String()]
if db != nil && db.Permanode != nil {
name := db.Permanode.Attr.Get("camliImportRoot")
if name != "" {
name = strings.Replace(name, ":", "-", -1)
name = strings.Replace(name, "/", "-", -1)
n.m["importer-"+name] = pn
}
}
}
n.lastQuery = time.Now() n.lastQuery = time.Now()
return nil return nil
} }