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  }