github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/log/handler_go14.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 19:16:39</date>
    10  //</624450097807101952>
    11  
    12  //+构建GO1.4
    13  
    14  package log
    15  
    16  import "sync/atomic"
    17  
    18  //swaphandler包装了另一个可以换出的处理程序
    19  //在运行时以线程安全的方式动态运行。
    20  type swapHandler struct {
    21  	handler atomic.Value
    22  }
    23  
    24  func (h *swapHandler) Log(r *Record) error {
    25  	return (*h.handler.Load().(*Handler)).Log(r)
    26  }
    27  
    28  func (h *swapHandler) Swap(newHandler Handler) {
    29  	h.handler.Store(&newHandler)
    30  }
    31  
    32  func (h *swapHandler) Get() Handler {
    33  	return *h.handler.Load().(*Handler)
    34  }
    35