github.com/nsqio/nsq@v1.3.0/internal/writers/boundary_buffered_writer.go (about)

     1  package writers
     2  
     3  import (
     4  	"bufio"
     5  	"io"
     6  )
     7  
     8  type BoundaryBufferedWriter struct {
     9  	bw *bufio.Writer
    10  }
    11  
    12  func NewBoundaryBufferedWriter(w io.Writer, size int) *BoundaryBufferedWriter {
    13  	return &BoundaryBufferedWriter{
    14  		bw: bufio.NewWriterSize(w, size),
    15  	}
    16  }
    17  
    18  func (b *BoundaryBufferedWriter) Write(p []byte) (int, error) {
    19  	if len(p) > b.bw.Available() {
    20  		err := b.bw.Flush()
    21  		if err != nil {
    22  			return 0, err
    23  		}
    24  	}
    25  	return b.bw.Write(p)
    26  }
    27  
    28  func (b *BoundaryBufferedWriter) Flush() error {
    29  	return b.bw.Flush()
    30  }