github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/metrics/healthcheck.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 package metrics 10 11 //HealthChecks保存一个描述任意上/下状态的错误值。 12 type Healthcheck interface { 13 Check() 14 Error() error 15 Healthy() 16 Unhealthy(error) 17 } 18 19 //new healthcheck构造一个新的healthcheck,它将使用给定的 20 //函数更新其状态。 21 func NewHealthcheck(f func(Healthcheck)) Healthcheck { 22 if !Enabled { 23 return NilHealthcheck{} 24 } 25 return &StandardHealthcheck{nil, f} 26 } 27 28 //nilhealthcheck是不允许的。 29 type NilHealthcheck struct{} 30 31 //支票是不允许的。 32 func (NilHealthcheck) Check() {} 33 34 //错误是不可操作的。 35 func (NilHealthcheck) Error() error { return nil } 36 37 //健康是禁忌。 38 func (NilHealthcheck) Healthy() {} 39 40 //不健康是禁忌。 41 func (NilHealthcheck) Unhealthy(error) {} 42 43 //StandardHealthCheck是HealthCheck的标准实现, 44 //存储状态和用于调用以更新状态的函数。 45 type StandardHealthcheck struct { 46 err error 47 f func(Healthcheck) 48 } 49 50 //check运行healthcheck函数更新healthcheck的状态。 51 func (h *StandardHealthcheck) Check() { 52 h.f(h) 53 } 54 55 //错误返回HealthCheck的状态,如果它是健康的,则为零。 56 func (h *StandardHealthcheck) Error() error { 57 return h.err 58 } 59 60 //健康将健康检查标记为健康。 61 func (h *StandardHealthcheck) Healthy() { 62 h.err = nil 63 } 64 65 //不健康将健康检查标记为不健康。存储错误并 66 //可以通过错误方法检索。 67 func (h *StandardHealthcheck) Unhealthy(err error) { 68 h.err = err 69 }