mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-02 10:13:14 -05: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
							 | 
						||
| 
								 | 
							
								}
							 |