lib/model: Add folders on start in model (#6135)

This commit is contained in:
Simon Frei
2019-11-08 10:56:16 +01:00
committed by GitHub
parent f15a1528fc
commit bee7cce081
8 changed files with 54 additions and 61 deletions

View File

@@ -72,9 +72,6 @@ type Model interface {
connections.Model
AddFolder(cfg config.FolderConfiguration)
RestartFolder(from, to config.FolderConfiguration)
StartFolder(folder string)
ResetFolder(folder string)
DelayScan(folder string, next time.Duration)
ScanFolder(folder string) error
@@ -217,6 +214,19 @@ func NewModel(cfg config.Wrapper, id protocol.DeviceID, clientName, clientVersio
return m
}
func (m *model) Serve() {
// Add and start folders
for _, folderCfg := range m.cfg.Folders() {
if folderCfg.Paused {
folderCfg.CreateRoot()
continue
}
m.addFolder(folderCfg)
m.startFolder(folderCfg.ID)
}
m.Supervisor.Serve()
}
func (m *model) Stop() {
m.Supervisor.Stop()
devs := m.cfg.Devices()
@@ -238,8 +248,8 @@ func (m *model) StartDeadlockDetector(timeout time.Duration) {
detector.Watch("pmut", m.pmut)
}
// StartFolder constructs the folder service and starts it.
func (m *model) StartFolder(folder string) {
// startFolder constructs the folder service and starts it.
func (m *model) startFolder(folder string) {
m.fmut.Lock()
defer m.fmut.Unlock()
folderCfg := m.folderCfgs[folder]
@@ -356,7 +366,7 @@ func (m *model) warnAboutOverwritingProtectedFiles(folder string) {
}
}
func (m *model) AddFolder(cfg config.FolderConfiguration) {
func (m *model) addFolder(cfg config.FolderConfiguration) {
if len(cfg.ID) == 0 {
panic("cannot add empty folder id")
}
@@ -385,7 +395,7 @@ func (m *model) addFolderLocked(cfg config.FolderConfiguration, fset *db.FileSet
m.folderIgnores[cfg.ID] = ignores
}
func (m *model) RemoveFolder(cfg config.FolderConfiguration) {
func (m *model) removeFolder(cfg config.FolderConfiguration) {
m.fmut.Lock()
defer m.fmut.Unlock()
@@ -437,7 +447,7 @@ func (m *model) tearDownFolderLocked(cfg config.FolderConfiguration, err error)
delete(m.folderRunnerTokens, cfg.ID)
}
func (m *model) RestartFolder(from, to config.FolderConfiguration) {
func (m *model) restartFolder(from, to config.FolderConfiguration) {
if len(to.ID) == 0 {
panic("bug: cannot restart empty folder ID")
}
@@ -2510,8 +2520,8 @@ func (m *model) CommitConfiguration(from, to config.Configuration) bool {
l.Infoln("Paused folder", cfg.Description())
} else {
l.Infoln("Adding folder", cfg.Description())
m.AddFolder(cfg)
m.StartFolder(folderID)
m.addFolder(cfg)
m.startFolder(folderID)
}
}
}
@@ -2520,7 +2530,7 @@ func (m *model) CommitConfiguration(from, to config.Configuration) bool {
toCfg, ok := toFolders[folderID]
if !ok {
// The folder was removed.
m.RemoveFolder(fromCfg)
m.removeFolder(fromCfg)
continue
}
@@ -2531,7 +2541,7 @@ func (m *model) CommitConfiguration(from, to config.Configuration) bool {
// This folder exists on both sides. Settings might have changed.
// Check if anything differs that requires a restart.
if !reflect.DeepEqual(fromCfg.RequiresRestartOnly(), toCfg.RequiresRestartOnly()) {
m.RestartFolder(fromCfg, toCfg)
m.restartFolder(fromCfg, toCfg)
}
// Emit the folder pause/resume event