summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-19 01:23:44 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-19 01:23:44 +0100
commitdc152722044f4be94fe344c46cdf2c1e0cdd1806 (patch)
treeb975a205c127d46dd8a98845eed6b4b5b78844db /main.go
parentd9eebc8feb68035941c005ddfa45995559c967eb (diff)
Kind of working
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()
}