registry.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package metrics
  2. type Registry interface{
  3. Counters() map[string]Counter
  4. Gauges() map[string]Gauge
  5. Healthchecks() map[string]Healthcheck
  6. Histograms() map[string]Histogram
  7. Meters() map[string]Meter
  8. Timers() map[string]Timer
  9. GetCounter(string) (Counter, bool)
  10. GetGauge(string) (Gauge, bool)
  11. GetHealthcheck(string) (Healthcheck, bool)
  12. GetHistogram(string) (Histogram, bool)
  13. GetMeter(string) (Meter, bool)
  14. GetTimer(string) (Timer, bool)
  15. RegisterCounter(string, Counter)
  16. RegisterGauge(string, Gauge)
  17. RegisterHealthcheck(string, Healthcheck)
  18. RegisterHistogram(string, Histogram)
  19. RegisterMeter(string, Meter)
  20. RegisterTimer(string, Timer)
  21. }
  22. type registry struct {
  23. counters map[string]Counter
  24. gauges map[string]Gauge
  25. healthchecks map[string]Healthcheck
  26. histograms map[string]Histogram
  27. meters map[string]Meter
  28. timers map[string]Timer
  29. }
  30. func NewRegistry() Registry {
  31. return &registry {
  32. make(map[string]Counter),
  33. make(map[string]Gauge),
  34. make(map[string]Healthcheck),
  35. make(map[string]Histogram),
  36. make(map[string]Meter),
  37. make(map[string]Timer),
  38. }
  39. }
  40. func (r *registry) Counters() map[string]Counter {
  41. return r.counters
  42. }
  43. func (r *registry) Gauges() map[string]Gauge {
  44. return r.gauges
  45. }
  46. func (r *registry) Healthchecks() map[string]Healthcheck {
  47. return r.healthchecks
  48. }
  49. func (r *registry) Histograms() map[string]Histogram {
  50. return r.histograms
  51. }
  52. func (r *registry) Meters() map[string]Meter {
  53. return r.meters
  54. }
  55. func (r *registry) Timers() map[string]Timer {
  56. return r.timers
  57. }
  58. func (r *registry) GetCounter(name string) (Counter, bool) {
  59. c, ok := r.counters[name]
  60. return c, ok
  61. }
  62. func (r *registry) GetGauge(name string) (Gauge, bool) {
  63. g, ok := r.gauges[name]
  64. return g, ok
  65. }
  66. func (r *registry) GetHealthcheck(name string) (Healthcheck, bool) {
  67. h, ok := r.healthchecks[name]
  68. return h, ok
  69. }
  70. func (r *registry) GetHistogram(name string) (Histogram, bool) {
  71. h, ok := r.histograms[name]
  72. return h, ok
  73. }
  74. func (r *registry) GetMeter(name string) (Meter, bool) {
  75. m, ok := r.meters[name]
  76. return m, ok
  77. }
  78. func (r *registry) GetTimer(name string) (Timer, bool) {
  79. t, ok := r.timers[name]
  80. return t, ok
  81. }
  82. func (r *registry) RegisterCounter(name string, c Counter) {
  83. r.counters[name] = c
  84. }
  85. func (r *registry) RegisterGauge(name string, g Gauge) {
  86. r.gauges[name] = g
  87. }
  88. func (r *registry) RegisterHealthcheck(name string, h Healthcheck) {
  89. r.healthchecks[name] = h
  90. }
  91. func (r *registry) RegisterHistogram(name string, h Histogram) {
  92. r.histograms[name] = h
  93. }
  94. func (r *registry) RegisterMeter(name string, m Meter) {
  95. r.meters[name] = m
  96. }
  97. func (r *registry) RegisterTimer(name string, t Timer) {
  98. r.timers[name] = t
  99. }