Co-authored-by: Dmitry Fedotov <dmitry@uint32.ru> Co-committed-by: Dmitry Fedotov <dmitry@uint32.ru>
45 lines
984 B
Go
45 lines
984 B
Go
package watchdog
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type Status uint8
|
|
|
|
const (
|
|
StatusUnknown Status = iota
|
|
StatusOK
|
|
StatusDown
|
|
)
|
|
|
|
func (s Status) String() string {
|
|
switch s {
|
|
case StatusOK:
|
|
return "OK"
|
|
case StatusDown:
|
|
return "DOWN"
|
|
default:
|
|
return "UNKNOWN"
|
|
}
|
|
}
|
|
|
|
// CheckFunc is a function that does the actual work.
|
|
// This package provides a number of check functions but
|
|
// any function matching the signature may be provided.
|
|
// It must obey context dealine and cancellation.
|
|
type CheckFunc func(context.Context) (Status, error)
|
|
|
|
// Check represents a check that must be run by Watchdog.
|
|
type Check struct {
|
|
Name string // indentifier of this check
|
|
Interval time.Duration // how often the check must run (if running periodically with Start method)
|
|
Check CheckFunc // function to run
|
|
}
|
|
|
|
type CheckResult struct {
|
|
Name string // identifier of check
|
|
Status Status // status as retuned by CheckFunc
|
|
Error error // error returned by CheckFunc
|
|
}
|