registry.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package metrics
  2. type Registry interface{
  3. RegisterCounter(string, Counter)
  4. RegisterGauge(string, Gauge)
  5. RegisterHealthcheck(string, Healthcheck)
  6. RegisterHistogram(string, Histogram)
  7. RegisterMeter(string, Meter)
  8. RegisterTimer(string, Timer)
  9. }
  10. type registry struct {
  11. counters map[string]Counter
  12. gauges map[string]Gauge
  13. healthchecks map[string]Healthcheck
  14. histograms map[string]Histogram
  15. meters map[string]Meter
  16. timers map[string]Timer
  17. }
  18. func NewRegistry() Registry {
  19. return &registry {
  20. make(map[string]Counter),
  21. make(map[string]Gauge),
  22. make(map[string]Healthcheck),
  23. make(map[string]Histogram),
  24. make(map[string]Meter),
  25. make(map[string]Timer),
  26. }
  27. }
  28. func (r *registry) GetCounter(name string) (Counter, bool) {
  29. c, ok := r.counters[name]
  30. return c, ok
  31. }
  32. func (r *registry) GetGauge(name string) (Gauge, bool) {
  33. g, ok := r.gauges[name]
  34. return g, ok
  35. }
  36. func (r *registry) GetHealthcheck(name string) (Healthcheck, bool) {
  37. h, ok := r.healthchecks[name]
  38. return h, ok
  39. }
  40. func (r *registry) GetHistogram(name string) (Histogram, bool) {
  41. h, ok := r.histograms[name]
  42. return h, ok
  43. }
  44. func (r *registry) GetMeter(name string) (Meter, bool) {
  45. m, ok := r.meters[name]
  46. return m, ok
  47. }
  48. func (r *registry) GetTimer(name string) (Timer, bool) {
  49. t, ok := r.timers[name]
  50. return t, ok
  51. }
  52. func (r *registry) RegisterCounter(name string, c Counter) {
  53. r.counters[name] = c
  54. }
  55. func (r *registry) RegisterGauge(name string, g Gauge) {
  56. r.gauges[name] = g
  57. }
  58. func (r *registry) RegisterHealthcheck(name string, h Healthcheck) {
  59. r.healthchecks[name] = h
  60. }
  61. func (r *registry) RegisterHistogram(name string, h Histogram) {
  62. r.histograms[name] = h
  63. }
  64. func (r *registry) RegisterMeter(name string, m Meter) {
  65. r.meters[name] = m
  66. }
  67. func (r *registry) RegisterTimer(name string, t Timer) {
  68. r.timers[name] = t
  69. }