* go-metrics: fork library and introduce ResettingTimer and InfluxDB reporter. * vendor: change nonsense/go-metrics to ethersphere/go-metrics * go-metrics: add tests. move ResettingTimer logic from reporter to type. * all, metrics: pull in metrics package in go-ethereum * metrics/test: make sure metrics are enabled for tests * metrics: apply gosimple rules * metrics/exp, internal/debug: init expvar endpoint when starting pprof server * internal/debug: tiny comment formatting fix
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package metrics
 | |
| 
 | |
| // Healthchecks hold an error value describing an arbitrary up/down status.
 | |
| type Healthcheck interface {
 | |
| 	Check()
 | |
| 	Error() error
 | |
| 	Healthy()
 | |
| 	Unhealthy(error)
 | |
| }
 | |
| 
 | |
| // NewHealthcheck constructs a new Healthcheck which will use the given
 | |
| // function to update its status.
 | |
| func NewHealthcheck(f func(Healthcheck)) Healthcheck {
 | |
| 	if !Enabled {
 | |
| 		return NilHealthcheck{}
 | |
| 	}
 | |
| 	return &StandardHealthcheck{nil, f}
 | |
| }
 | |
| 
 | |
| // NilHealthcheck is a no-op.
 | |
| type NilHealthcheck struct{}
 | |
| 
 | |
| // Check is a no-op.
 | |
| func (NilHealthcheck) Check() {}
 | |
| 
 | |
| // Error is a no-op.
 | |
| func (NilHealthcheck) Error() error { return nil }
 | |
| 
 | |
| // Healthy is a no-op.
 | |
| func (NilHealthcheck) Healthy() {}
 | |
| 
 | |
| // Unhealthy is a no-op.
 | |
| func (NilHealthcheck) Unhealthy(error) {}
 | |
| 
 | |
| // StandardHealthcheck is the standard implementation of a Healthcheck and
 | |
| // stores the status and a function to call to update the status.
 | |
| type StandardHealthcheck struct {
 | |
| 	err error
 | |
| 	f   func(Healthcheck)
 | |
| }
 | |
| 
 | |
| // Check runs the healthcheck function to update the healthcheck's status.
 | |
| func (h *StandardHealthcheck) Check() {
 | |
| 	h.f(h)
 | |
| }
 | |
| 
 | |
| // Error returns the healthcheck's status, which will be nil if it is healthy.
 | |
| func (h *StandardHealthcheck) Error() error {
 | |
| 	return h.err
 | |
| }
 | |
| 
 | |
| // Healthy marks the healthcheck as healthy.
 | |
| func (h *StandardHealthcheck) Healthy() {
 | |
| 	h.err = nil
 | |
| }
 | |
| 
 | |
| // Unhealthy marks the healthcheck as unhealthy.  The error is stored and
 | |
| // may be retrieved by the Error method.
 | |
| func (h *StandardHealthcheck) Unhealthy(err error) {
 | |
| 	h.err = err
 | |
| }
 |