healthcheck.go 486 B

1234567891011121314151617181920212223242526272829303132333435
  1. package metrics
  2. import "os"
  3. type Healthcheck interface {
  4. Check()
  5. Error() os.Error
  6. Healthy()
  7. Unhealthy(os.Error)
  8. }
  9. type healthcheck struct {
  10. err os.Error
  11. f func(Healthcheck)
  12. }
  13. func NewHealthcheck(f func(Healthcheck)) Healthcheck {
  14. return &healthcheck{nil, f}
  15. }
  16. func (h *healthcheck) Check() {
  17. h.f(h)
  18. }
  19. func (h *healthcheck) Error() os.Error {
  20. return h.err
  21. }
  22. func (h *healthcheck) Healthy() {
  23. h.err = nil
  24. }
  25. func (h *healthcheck) Unhealthy(err os.Error) {
  26. h.err = err
  27. }