mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 09:43:17 -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
 | ||
|  | }
 |