github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/metrics/healthcheck.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:40</date> 10 //</624450098914398208> 11 12 package metrics 13 14 //HealthChecks保存一个描述任意上/下状态的错误值。 15 type Healthcheck interface { 16 Check() 17 Error() error 18 Healthy() 19 Unhealthy(error) 20 } 21 22 //new healthcheck构造一个新的healthcheck,它将使用给定的 23 //函数更新其状态。 24 func NewHealthcheck(f func(Healthcheck)) Healthcheck { 25 if !Enabled { 26 return NilHealthcheck{} 27 } 28 return &StandardHealthcheck{nil, f} 29 } 30 31 //nilhealthcheck是不允许的。 32 type NilHealthcheck struct{} 33 34 //支票是不允许的。 35 func (NilHealthcheck) Check() {} 36 37 //错误是不可操作的。 38 func (NilHealthcheck) Error() error { return nil } 39 40 //健康是禁忌。 41 func (NilHealthcheck) Healthy() {} 42 43 //不健康是禁忌。 44 func (NilHealthcheck) Unhealthy(error) {} 45 46 //StandardHealthCheck是HealthCheck的标准实现, 47 //存储状态和用于调用以更新状态的函数。 48 type StandardHealthcheck struct { 49 err error 50 f func(Healthcheck) 51 } 52 53 //check运行healthcheck函数更新healthcheck的状态。 54 func (h *StandardHealthcheck) Check() { 55 h.f(h) 56 } 57 58 //错误返回HealthCheck的状态,如果它是健康的,则为零。 59 func (h *StandardHealthcheck) Error() error { 60 return h.err 61 } 62 63 //健康将健康检查标记为健康。 64 func (h *StandardHealthcheck) Healthy() { 65 h.err = nil 66 } 67 68 //不健康将健康检查标记为不健康。存储错误并 69 //可以通过错误方法检索。 70 func (h *StandardHealthcheck) Unhealthy(err error) { 71 h.err = err 72 } 73