You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kratos/health/health.go

64 lines
1.1 KiB

package health
import (
"golang.org/x/net/context"
)
type CheckerMgr struct {
checkers map[string]checker
ctx context.Context
cancel func()
watchers []chan string
}
func New(ctx context.Context) *CheckerMgr {
c, cancel := context.WithCancel(ctx)
return &CheckerMgr{
checkers: make(map[string]checker),
ctx: c,
cancel: cancel,
}
}
func (c *CheckerMgr) Start() {
for _, v := range c.checkers {
go func() {
v.run(c.ctx)
}()
}
}
func (c *CheckerMgr) Stop() {
c.cancel()
}
type StatusResult struct {
Name string
CheckerStatus
}
// GetStatus
//
// if name is nil return all status
func (c *CheckerMgr) GetStatus(name ...string) []StatusResult {
status := make([]StatusResult, 0, len(name))
if len(name) == 0 {
for _, v := range c.checkers {
status = append(status, StatusResult{
Name: v.Name,
CheckerStatus: v.getStatus(),
})
}
} else {
for _, n := range name {
if v, ok := c.checkers[n]; ok {
status = append(status, StatusResult{
Name: v.Name,
CheckerStatus: v.getStatus(),
})
}
}
}
return status
}