mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			915 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			915 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package health
 | 
						|
 | 
						|
// Healther interface needs to be implemented by each plugin willing to provide
 | 
						|
// healthhceck information to the health plugin. Note this method should return
 | 
						|
// quickly, i.e. just checking a boolean status, as it is called every second
 | 
						|
// from the health plugin.
 | 
						|
type Healther interface {
 | 
						|
	// Health returns a boolean indicating the health status of a plugin.
 | 
						|
	// False indicates unhealthy.
 | 
						|
	Health() bool
 | 
						|
}
 | 
						|
 | 
						|
// Ok returns the global health status of all plugin configured in this server.
 | 
						|
func (h *health) Ok() bool {
 | 
						|
	h.RLock()
 | 
						|
	defer h.RUnlock()
 | 
						|
	return h.ok
 | 
						|
}
 | 
						|
 | 
						|
// SetOk sets the global health status of all plugin configured in this server.
 | 
						|
func (h *health) SetOk(ok bool) {
 | 
						|
	h.Lock()
 | 
						|
	defer h.Unlock()
 | 
						|
	h.ok = ok
 | 
						|
}
 | 
						|
 | 
						|
// poll polls all healthers and sets the global state.
 | 
						|
func (h *health) poll() {
 | 
						|
	for _, m := range h.h {
 | 
						|
		if !m.Health() {
 | 
						|
			h.SetOk(false)
 | 
						|
			return
 | 
						|
		}
 | 
						|
	}
 | 
						|
	h.SetOk(true)
 | 
						|
}
 |