summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go32
1 files changed, 25 insertions, 7 deletions
diff --git a/main.go b/main.go
index cca1043..f45e290 100644
--- a/main.go
+++ b/main.go
@@ -2,25 +2,43 @@ package main
import (
"flag"
- "fmt"
"log"
+ "sync"
"time"
)
var conf = flag.String("conf", "config.yml", "configuration file")
+func Checker(uri string, errc chan<- error) {
+ t := time.NewTicker(time.Second * 5)
+ var n int
+ defer t.Stop()
+ for range t.C {
+ log.Println("check", uri)
+ err := Check(uri)
+ if err != nil {
+ n++
+ errc <- err
+ }
+ if n > 5 {
+ return
+ }
+ }
+}
+
func main() {
c, err := LoadConfig(*conf)
if err != nil {
log.Fatal(err)
}
errc := Logger()
+ wg := sync.WaitGroup{}
for _, uri := range c.Check {
- log.Println(uri)
- err := Check(uri)
- if err != nil {
- errc <- fmt.Errorf("%v: down %v", uri, err)
- }
+ wg.Add(1)
+ go func(uri string) {
+ Checker(uri, errc)
+ wg.Done()
+ }(uri)
}
- time.Sleep(time.Second)
+ wg.Wait()
}