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 }