registry.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. UnregisterCounter(string)
  22. UnregisterGauge(string)
  23. UnregisterHealthcheck(string)
  24. UnregisterHistogram(string)
  25. UnregisterMeter(string)
  26. UnregisterTimer(string)
  27. }
  28. type registry struct {
  29. counters map[string]Counter
  30. gauges map[string]Gauge
  31. healthchecks map[string]Healthcheck
  32. histograms map[string]Histogram
  33. meters map[string]Meter
  34. timers map[string]Timer
  35. }
  36. func NewRegistry() Registry {
  37. return &registry {
  38. make(map[string]Counter),
  39. make(map[string]Gauge),
  40. make(map[string]Healthcheck),
  41. make(map[string]Histogram),
  42. make(map[string]Meter),
  43. make(map[string]Timer),
  44. }
  45. }
  46. func (r *registry) Counters() map[string]Counter {
  47. return r.counters
  48. }
  49. func (r *registry) Gauges() map[string]Gauge {
  50. return r.gauges
  51. }
  52. func (r *registry) Healthchecks() map[string]Healthcheck {
  53. return r.healthchecks
  54. }
  55. func (r *registry) Histograms() map[string]Histogram {
  56. return r.histograms
  57. }
  58. func (r *registry) Meters() map[string]Meter {
  59. return r.meters
  60. }
  61. func (r *registry) Timers() map[string]Timer {
  62. return r.timers
  63. }
  64. func (r *registry) GetCounter(name string) (Counter, bool) {
  65. c, ok := r.counters[name]
  66. return c, ok
  67. }
  68. func (r *registry) GetGauge(name string) (Gauge, bool) {
  69. g, ok := r.gauges[name]
  70. return g, ok
  71. }
  72. func (r *registry) GetHealthcheck(name string) (Healthcheck, bool) {
  73. h, ok := r.healthchecks[name]
  74. return h, ok
  75. }
  76. func (r *registry) GetHistogram(name string) (Histogram, bool) {
  77. h, ok := r.histograms[name]
  78. return h, ok
  79. }
  80. func (r *registry) GetMeter(name string) (Meter, bool) {
  81. m, ok := r.meters[name]
  82. return m, ok
  83. }
  84. func (r *registry) GetTimer(name string) (Timer, bool) {
  85. t, ok := r.timers[name]
  86. return t, ok
  87. }
  88. func (r *registry) RegisterCounter(name string, c Counter) {
  89. r.counters[name] = c
  90. }
  91. func (r *registry) RegisterGauge(name string, g Gauge) {
  92. r.gauges[name] = g
  93. }
  94. func (r *registry) RegisterHealthcheck(name string, h Healthcheck) {
  95. r.healthchecks[name] = h
  96. }
  97. func (r *registry) RegisterHistogram(name string, h Histogram) {
  98. r.histograms[name] = h
  99. }
  100. func (r *registry) RegisterMeter(name string, m Meter) {
  101. r.meters[name] = m
  102. }
  103. func (r *registry) RegisterTimer(name string, t Timer) {
  104. r.timers[name] = t
  105. }
  106. func (r *registry) UnregisterCounter(name string) {
  107. r.counters[name] = nil, false
  108. }
  109. func (r *registry) UnregisterGauge(name string) {
  110. r.gauges[name] = nil, false
  111. }
  112. func (r *registry) UnregisterHealthcheck(name string) {
  113. r.healthchecks[name] = nil, false
  114. }
  115. func (r *registry) UnregisterHistogram(name string) {
  116. r.histograms[name] = nil, false
  117. }
  118. func (r *registry) UnregisterMeter(name string) {
  119. r.meters[name] = nil, false
  120. }
  121. func (r *registry) UnregisterTimer(name string) {
  122. r.timers[name] = nil, false
  123. }