Advertisement
Kikiriki22

Untitled

Apr 14th, 2023
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.63 KB | None | 0 0
  1.  
  2. // main.go
  3. checker := healthchecker.GetInstance()
  4.  
  5. var wg sync.WaitGroup
  6.  
  7. wg.Add(len(checker.RegisteredChecks))
  8.  
  9. for _, check := range checker.RegisteredChecks {
  10.     go func(curCheck healthchecker.Check) {
  11.         defer wg.Done()
  12.  
  13.         checker.Check(ctx, curCheck)
  14.     }(check)
  15. }
  16.  
  17. wg.Wait()
  18.  
  19.  
  20. // healthchecker.go
  21. func (ch *Checker) Check(ctx context.Context, check Check) {
  22.     if ok := check.Callback(ctx); !ok {
  23.         ch.addFailure(check.Name, check.FailureMsg)
  24.     }
  25. }
  26.  
  27. func (ch *Checker) addFailure(key, message string) {
  28.     ch.mu.Lock()
  29.     defer ch.mu.Unlock()
  30.  
  31.     if _, exist := ch.Failures[key]; !exist {
  32.         ch.Failures[key] = message
  33.     }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement