package srnd import ( "bytes" "io" ) type LineWriter struct { w io.Writer limit int64 } func NewLineWriter(w io.Writer, limit int64) *LineWriter { return &LineWriter{ w: w, limit: limit, } } func (l *LineWriter) Write(data []byte) (n int, err error) { n = len(data) data = bytes.Replace(data, []byte{13, 10}, []byte{10}, -1) _, err = l.w.Write(data) l.limit -= int64(n) if l.limit <= 0 { err = ErrOversizedMessage } return }