mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-29 17:24:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			29 lines
		
	
	
		
			533 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			533 B
		
	
	
	
		
			Go
		
	
	
	
	
	
|   | package metrics | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"sync" | ||
|  | 
 | ||
|  | 	"github.com/prometheus/client_golang/prometheus" | ||
|  | ) | ||
|  | 
 | ||
|  | type reg struct { | ||
|  | 	sync.RWMutex | ||
|  | 	r map[string]*prometheus.Registry | ||
|  | } | ||
|  | 
 | ||
|  | func newReg() *reg { return ®{r: make(map[string]*prometheus.Registry)} } | ||
|  | 
 | ||
|  | // update sets the registry if not already there and returns the input. Or it returns | ||
|  | // a previous set value. | ||
|  | func (r *reg) getOrSet(addr string, pr *prometheus.Registry) *prometheus.Registry { | ||
|  | 	r.Lock() | ||
|  | 	defer r.Unlock() | ||
|  | 
 | ||
|  | 	if v, ok := r.r[addr]; ok { | ||
|  | 		return v | ||
|  | 	} | ||
|  | 
 | ||
|  | 	r.r[addr] = pr | ||
|  | 	return pr | ||
|  | } |