github.com/netdata/go.d.plugin@v0.58.1/agent/safewriter/writer.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package safewriter
     4  
     5  import (
     6  	"io"
     7  	"os"
     8  	"sync"
     9  )
    10  
    11  var Stdout = New(os.Stdout)
    12  
    13  func New(w io.Writer) io.Writer {
    14  	return &writer{
    15  		mx: &sync.Mutex{},
    16  		w:  w,
    17  	}
    18  }
    19  
    20  type writer struct {
    21  	mx *sync.Mutex
    22  	w  io.Writer
    23  }
    24  
    25  func (w *writer) Write(p []byte) (n int, err error) {
    26  	w.mx.Lock()
    27  	n, err = w.w.Write(p)
    28  	w.mx.Unlock()
    29  	return n, err
    30  }