// +build go1.4 | |
package log15 | |
import "sync/atomic" | |
// swapHandler wraps another handler that may be swapped out | |
// dynamically at runtime in a thread-safe fashion. | |
type swapHandler struct { | |
handler atomic.Value | |
} | |
func (h *swapHandler) Log(r *Record) error { | |
return (*h.handler.Load().(*Handler)).Log(r) | |
} | |
func (h *swapHandler) Swap(newHandler Handler) { | |
h.handler.Store(&newHandler) | |
} | |
func (h *swapHandler) Get() Handler { | |
return *h.handler.Load().(*Handler) | |
} |