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