mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			613 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			613 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package server
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"sync"
 | 
						|
 | 
						|
	"github.com/gorilla/mux"
 | 
						|
)
 | 
						|
 | 
						|
// routerSwapper is an http.Handler that allows you to swap
 | 
						|
// mux routers.
 | 
						|
type routerSwapper struct {
 | 
						|
	mu     sync.Mutex
 | 
						|
	router *mux.Router
 | 
						|
}
 | 
						|
 | 
						|
// Swap changes the old router with the new one.
 | 
						|
func (rs *routerSwapper) Swap(newRouter *mux.Router) {
 | 
						|
	rs.mu.Lock()
 | 
						|
	rs.router = newRouter
 | 
						|
	rs.mu.Unlock()
 | 
						|
}
 | 
						|
 | 
						|
// ServeHTTP makes the routerSwapper to implement the http.Handler interface.
 | 
						|
func (rs *routerSwapper) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
						|
	rs.mu.Lock()
 | 
						|
	router := rs.router
 | 
						|
	rs.mu.Unlock()
 | 
						|
	router.ServeHTTP(w, r)
 | 
						|
}
 |