Просмотр исходного кода

lib/model: Deduplicate folder loops

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4352
LGTM: AudriusButkevicius, calmh
Simon Frei 8 лет назад
Родитель
Сommit
f7d2c58783
4 измененных файлов с 19 добавлено и 34 удалено
  1. 17 0
      lib/model/folder.go
  2. 0 4
      lib/model/folderscanner.go
  3. 1 18
      lib/model/rofolder.go
  4. 1 12
      lib/model/rwfolder.go

+ 17 - 0
lib/model/folder.go

@@ -71,3 +71,20 @@ func (f *folder) scanSubdirs(subDirs []string) error {
 	}
 	return nil
 }
+
+func (f *folder) scanTimerFired() {
+	err := f.scanSubdirs(nil)
+
+	select {
+	case <-f.initialScanFinished:
+	default:
+		status := "Completed"
+		if err != nil {
+			status = "Failed"
+		}
+		l.Infoln(status, "initial scan of", f.Type.String(), "folder", f.Description())
+		close(f.initialScanFinished)
+	}
+
+	f.scan.Reschedule()
+}

+ 0 - 4
lib/model/folderscanner.go

@@ -57,7 +57,3 @@ func (f *folderScanner) Scan(subdirs []string) error {
 func (f *folderScanner) Delay(next time.Duration) {
 	f.delay <- next
 }
-
-func (f *folderScanner) HasNoInterval() bool {
-	return f.interval == 0
-}

+ 1 - 18
lib/model/rofolder.go

@@ -41,24 +41,7 @@ func (f *sendOnlyFolder) Serve() {
 
 		case <-f.scan.timer.C:
 			l.Debugln(f, "Scanning subdirectories")
-			err := f.scanSubdirs(nil)
-
-			select {
-			case <-f.initialScanFinished:
-			default:
-				status := "Completed"
-				if err != nil {
-					status = "Failed"
-				}
-				l.Infoln(status, "initial scan (ro) of", f.Description())
-				close(f.initialScanFinished)
-			}
-
-			if f.scan.HasNoInterval() {
-				continue
-			}
-
-			f.scan.Reschedule()
+			f.scanTimerFired()
 
 		case req := <-f.scan.now:
 			req.err <- f.scanSubdirs(req.subdirs)

+ 1 - 12
lib/model/rwfolder.go

@@ -268,18 +268,7 @@ func (f *sendReceiveFolder) Serve() {
 		// same time.
 		case <-f.scan.timer.C:
 			l.Debugln(f, "Scanning subdirectories")
-			err := f.scanSubdirs(nil)
-			f.scan.Reschedule()
-			select {
-			case <-f.initialScanFinished:
-			default:
-				close(f.initialScanFinished)
-				status := "Completed"
-				if err != nil {
-					status = "Failed"
-				}
-				l.Infoln(status, "initial scan (rw) of", f.Description())
-			}
+			f.scanTimerFired()
 
 		case req := <-f.scan.now:
 			req.err <- f.scanSubdirs(req.subdirs)