mirror of
https://github.com/vbatts/dedupe-linker.git
synced 2025-02-05 20:03:34 +00:00
for the time being, no wait group. just channel
This commit is contained in:
parent
e6cc87db96
commit
71419f8faa
1 changed files with 3 additions and 15 deletions
18
file/hash.go
18
file/hash.go
|
@ -6,7 +6,6 @@ import (
|
|||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
@ -23,7 +22,6 @@ type FileHashInfo struct {
|
|||
func HashFileGetter(path string, hash crypto.Hash, workers int, done <-chan struct{}) <-chan FileHashInfo {
|
||||
out := make(chan FileHashInfo, workers)
|
||||
go func() {
|
||||
var wg sync.WaitGroup
|
||||
err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -31,15 +29,8 @@ func HashFileGetter(path string, hash crypto.Hash, workers int, done <-chan stru
|
|||
if !info.Mode().IsRegular() {
|
||||
return nil
|
||||
}
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
fhi := hashFile(path, hash, info)
|
||||
select {
|
||||
case out <- *fhi:
|
||||
case <-done:
|
||||
}
|
||||
wg.Done()
|
||||
}()
|
||||
fhi := hashFile(path, hash, info)
|
||||
out <- *fhi
|
||||
select {
|
||||
case <-done:
|
||||
return fmt.Errorf("walk canceled")
|
||||
|
@ -50,10 +41,7 @@ func HashFileGetter(path string, hash crypto.Hash, workers int, done <-chan stru
|
|||
if err != nil {
|
||||
out <- FileHashInfo{Err: err}
|
||||
}
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(out)
|
||||
}()
|
||||
close(out)
|
||||
}()
|
||||
return out
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue