Browse Source

Use semaphore when reading files

renovate/configure
Yota Toyama 8 years ago
parent
commit
fdd807d872
  1. 9
      file_checker.go

9
file_checker.go

@ -17,14 +17,15 @@ import (
type fileChecker struct { type fileChecker struct {
urlChecker urlChecker urlChecker urlChecker
documentRoot string documentRoot string
semaphore semaphore
} }
func newFileChecker(timeout time.Duration, r string, s semaphore) fileChecker { func newFileChecker(timeout time.Duration, r string, s semaphore) fileChecker {
return fileChecker{newURLChecker(timeout, s), r} return fileChecker{newURLChecker(timeout, s), r, s}
} }
func (c fileChecker) Check(f string) ([]urlResult, error) { func (c fileChecker) Check(f string) ([]urlResult, error) {
n, err := parseFile(f) n, err := c.parseFile(f)
if err != nil { if err != nil {
return nil, err return nil, err
@ -69,8 +70,10 @@ func (c fileChecker) CheckMany(fc <-chan string, rc chan<- fileResult) {
close(rc) close(rc)
} }
func parseFile(f string) (*html.Node, error) { func (c fileChecker) parseFile(f string) (*html.Node, error) {
c.semaphore.Request()
bs, err := ioutil.ReadFile(f) bs, err := ioutil.ReadFile(f)
c.semaphore.Release()
if err != nil { if err != nil {
return nil, err return nil, err

Loading…
Cancel
Save