// Copyright Fuzamei Corp. 2018 All Rights Reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +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) MaxLevel() int { return (*h.handler.Load().(*Handler)).MaxLevel() } func (h *swapHandler) SetMaxLevel(maxLevel int) { (*h.handler.Load().(*Handler)).SetMaxLevel(maxLevel) } func (h *swapHandler) Swap(newHandler Handler) { h.handler.Store(&newHandler) } func (h *swapHandler) Get() Handler { return *h.handler.Load().(*Handler) }