32 lines
533 B
Go
32 lines
533 B
Go
package collector
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
type Registry struct {
|
|
collectors []Collector
|
|
mutex sync.RWMutex
|
|
}
|
|
|
|
func NewRegistry() *Registry {
|
|
return &Registry{
|
|
collectors: make([]Collector, 0),
|
|
}
|
|
}
|
|
|
|
func (r *Registry) Register(collector Collector) {
|
|
r.mutex.Lock()
|
|
defer r.mutex.Unlock()
|
|
r.collectors = append(r.collectors, collector)
|
|
}
|
|
|
|
func (r *Registry) GetCollectors() []Collector {
|
|
r.mutex.RLock()
|
|
defer r.mutex.RUnlock()
|
|
|
|
result := make([]Collector, len(r.collectors))
|
|
copy(result, r.collectors)
|
|
return result
|
|
}
|