|
|
@@ -9,20 +9,23 @@ import (
|
|
|
// BytesToBufferReader is a Reader that adjusts its reading speed automatically.
|
|
|
type BytesToBufferReader struct {
|
|
|
reader io.Reader
|
|
|
- buffer *Buffer
|
|
|
+ buffer []byte
|
|
|
}
|
|
|
|
|
|
// Read implements Reader.Read().
|
|
|
func (r *BytesToBufferReader) Read() (MultiBuffer, error) {
|
|
|
- if err := r.buffer.Reset(ReadFrom(r.reader)); err != nil {
|
|
|
+ nBytes, err := r.reader.Read(r.buffer)
|
|
|
+ if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
mb := NewMultiBuffer()
|
|
|
- for !r.buffer.IsEmpty() {
|
|
|
+ p := r.buffer[:nBytes]
|
|
|
+ for len(p) > 0 {
|
|
|
b := New()
|
|
|
- b.AppendSupplier(ReadFrom(r.buffer))
|
|
|
+ nBytes, _ := b.Write(p)
|
|
|
mb.Append(b)
|
|
|
+ p = p[nBytes:]
|
|
|
}
|
|
|
return mb, nil
|
|
|
}
|