diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-02-20 23:39:36 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2017-02-23 18:00:02 +0800 |
commit | ec7f81f4bc11c6f8203ec1d3055c9a09a244ff43 (patch) | |
tree | 5ec75ddab7749a9d0c47a97d6f638b52e6ebc6bb /log/handler_go13.go | |
parent | 29fac7de448c85049a97cbec3dc0819122bd2cb0 (diff) | |
download | dexon-ec7f81f4bc11c6f8203ec1d3055c9a09a244ff43.tar.gz dexon-ec7f81f4bc11c6f8203ec1d3055c9a09a244ff43.tar.zst dexon-ec7f81f4bc11c6f8203ec1d3055c9a09a244ff43.zip |
log, vendor: vendor in log15 inline into our codebase
Diffstat (limited to 'log/handler_go13.go')
-rw-r--r-- | log/handler_go13.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/log/handler_go13.go b/log/handler_go13.go new file mode 100644 index 000000000..0843ed0e5 --- /dev/null +++ b/log/handler_go13.go @@ -0,0 +1,26 @@ +// +build !go1.4 + +package log + +import ( + "sync/atomic" + "unsafe" +) + +// swapHandler wraps another handler that may be swapped out +// dynamically at runtime in a thread-safe fashion. +type swapHandler struct { + handler unsafe.Pointer +} + +func (h *swapHandler) Log(r *Record) error { + return h.Get().Log(r) +} + +func (h *swapHandler) Get() Handler { + return *(*Handler)(atomic.LoadPointer(&h.handler)) +} + +func (h *swapHandler) Swap(newHandler Handler) { + atomic.StorePointer(&h.handler, unsafe.Pointer(&newHandler)) +} |