...
1 package metrics
2
3
4 type Healthcheck interface {
5 Check()
6 Error() error
7 Healthy()
8 Unhealthy(error)
9 }
10
11
12
13 func NewHealthcheck(f func(Healthcheck)) Healthcheck {
14 if UseNilMetrics {
15 return NilHealthcheck{}
16 }
17 return &StandardHealthcheck{nil, f}
18 }
19
20
21 type NilHealthcheck struct{}
22
23
24 func (NilHealthcheck) Check() {}
25
26
27 func (NilHealthcheck) Error() error { return nil }
28
29
30 func (NilHealthcheck) Healthy() {}
31
32
33 func (NilHealthcheck) Unhealthy(error) {}
34
35
36
37 type StandardHealthcheck struct {
38 err error
39 f func(Healthcheck)
40 }
41
42
43 func (h *StandardHealthcheck) Check() {
44 h.f(h)
45 }
46
47
48 func (h *StandardHealthcheck) Error() error {
49 return h.err
50 }
51
52
53 func (h *StandardHealthcheck) Healthy() {
54 h.err = nil
55 }
56
57
58
59 func (h *StandardHealthcheck) Unhealthy(err error) {
60 h.err = err
61 }
62
View as plain text