From fdd807d872f1efd0d6119d37c7a810239b51600b Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Wed, 22 Nov 2017 22:22:29 +0900 Subject: [PATCH] Use semaphore when reading files --- file_checker.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/file_checker.go b/file_checker.go index 5ff3c09..9eb92e0 100644 --- a/file_checker.go +++ b/file_checker.go @@ -17,14 +17,15 @@ import ( type fileChecker struct { urlChecker urlChecker documentRoot string + semaphore semaphore } 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) { - n, err := parseFile(f) + n, err := c.parseFile(f) if err != nil { return nil, err @@ -69,8 +70,10 @@ func (c fileChecker) CheckMany(fc <-chan string, rc chan<- fileResult) { 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) + c.semaphore.Release() if err != nil { return nil, err