Remove IncomingWorker

This commit is contained in:
Jan Bader 2021-08-05 23:58:23 +02:00
parent c885c03130
commit 1144e97045
2 changed files with 26 additions and 37 deletions

View File

@ -20,8 +20,6 @@ type FilesMap struct {
FilesHashing chan fileEntry FilesHashing chan fileEntry
FilesIncoming chan fileEntry
FilesHashed chan fileEntry FilesHashed chan fileEntry
progress *mpb.Progress progress *mpb.Progress
@ -35,37 +33,12 @@ func newFilesMap() *FilesMap {
return &FilesMap{ return &FilesMap{
FilesBySize: map[int64]string{}, FilesBySize: map[int64]string{},
FilesByHash: map[string][]string{}, FilesByHash: map[string][]string{},
FilesHashed: make(chan fileEntry), FilesHashed: make(chan fileEntry, 100000),
FilesIncoming: make(chan fileEntry, 100000),
FilesHashing: make(chan fileEntry), FilesHashing: make(chan fileEntry),
progress: mpb.New(mpb.WithWidth(64)), progress: mpb.New(mpb.WithWidth(64)),
} }
} }
func (fm *FilesMap) IncomingWorker() {
for file := range fm.FilesIncoming {
fm.incomingBar.Increment()
if *verbose {
fmt.Println("Incoming", file.path)
}
prevFile, ok := fm.FilesBySize[file.size]
if !ok {
fm.FilesBySize[file.size] = file.path
continue
}
if prevFile != "" {
fm.FilesHashing <- fileEntry{prevFile, file.size, ""}
}
fm.FilesBySize[file.size] = ""
fm.FilesHashing <- file
}
close(fm.FilesHashing)
}
func (fm *FilesMap) HashingWorker(wg *sync.WaitGroup) { func (fm *FilesMap) HashingWorker(wg *sync.WaitGroup) {
for file := range fm.FilesHashing { for file := range fm.FilesHashing {
if *verbose { if *verbose {
@ -117,19 +90,37 @@ func (fm *FilesMap) WalkDirectories() int {
return nil return nil
} }
if *minSize > info.Size() { size := info.Size()
if *minSize > size {
return nil return nil
} }
fm.FilesIncoming <- fileEntry{path, info.Size(), ""} fm.incomingBar.Increment()
countFiles++ countFiles++
fm.incomingBar.SetTotal(int64(countFiles), false) fm.incomingBar.SetTotal(int64(countFiles), false)
if *verbose {
fmt.Println("Incoming", path)
}
prevFile, ok := fm.FilesBySize[size]
if !ok {
fm.FilesBySize[size] = path
return nil
}
if prevFile != "" {
fm.FilesHashing <- fileEntry{prevFile, size, ""}
}
fm.FilesBySize[size] = ""
fm.FilesHashing <- fileEntry{path, info.Size(), ""}
return nil return nil
}) })
} }
fm.incomingBar.SetTotal(int64(countFiles), true) fm.incomingBar.SetTotal(int64(countFiles), true)
close(fm.FilesIncoming) close(fm.FilesHashing)
return countFiles return countFiles
} }

View File

@ -58,8 +58,6 @@ func main() {
go filesMap.HashingWorker(&wg) go filesMap.HashingWorker(&wg)
} }
go filesMap.IncomingWorker()
go filesMap.HashedWorker(done) go filesMap.HashedWorker(done)
countFiles = filesMap.WalkDirectories() countFiles = filesMap.WalkDirectories()