Perform initial scan asynchronously (fixes #509, fixes #464)

This commit is contained in:
Jakob Borg
2014-09-30 17:34:31 +02:00
parent 3eb000fa60
commit 2091e12e82
4 changed files with 18 additions and 48 deletions

View File

@@ -171,10 +171,9 @@ func (m *Model) StartFolderRW(folder string) {
// pull in any external changes.
func (m *Model) StartFolderRO(folder string) {
intv := time.Duration(m.folderCfgs[folder].RescanIntervalS) * time.Second
initialScanCompleted := false
go func() {
for {
time.Sleep(intv)
if debug {
l.Debugln(m, "rescan", folder)
}
@@ -185,6 +184,11 @@ func (m *Model) StartFolderRO(folder string) {
return
}
m.setState(folder, FolderIdle)
if !initialScanCompleted {
l.Infoln("Completed initial scan (ro) of folder", folder)
initialScanCompleted = true
}
time.Sleep(intv)
}
}()
}
@@ -959,29 +963,6 @@ func (m *Model) ScanFolders() {
wg.Wait()
}
func (m *Model) CleanFolders() {
m.fmut.RLock()
var dirs = make([]string, 0, len(m.folderCfgs))
for _, cfg := range m.folderCfgs {
dirs = append(dirs, cfg.Path)
}
m.fmut.RUnlock()
var wg sync.WaitGroup
wg.Add(len(dirs))
for _, dir := range dirs {
w := &scanner.Walker{
Dir: dir,
TempNamer: defTempNamer,
}
go func() {
w.CleanTempFiles()
wg.Done()
}()
}
wg.Wait()
}
func (m *Model) ScanFolder(folder string) error {
return m.ScanFolderSub(folder, "")
}