|  | @@ -12,8 +12,30 @@ type BytesToBufferReader struct {
 | 
											
												
													
														|  |  	buffer []byte
 |  |  	buffer []byte
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +func NewBytesToBufferReader(reader io.Reader) Reader {
 | 
											
												
													
														|  | 
 |  | +	return &BytesToBufferReader{
 | 
											
												
													
														|  | 
 |  | +		reader: reader,
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (r *BytesToBufferReader) readSmall() (MultiBuffer, error) {
 | 
											
												
													
														|  | 
 |  | +	b := New()
 | 
											
												
													
														|  | 
 |  | +	if err := b.Reset(ReadFrom(r.reader)); err != nil {
 | 
											
												
													
														|  | 
 |  | +		b.Release()
 | 
											
												
													
														|  | 
 |  | +		return nil, err
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if b.IsFull() {
 | 
											
												
													
														|  | 
 |  | +		r.buffer = make([]byte, 32*1024)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return NewMultiBufferValue(b), nil
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  // Read implements Reader.Read().
 |  |  // Read implements Reader.Read().
 | 
											
												
													
														|  |  func (r *BytesToBufferReader) Read() (MultiBuffer, error) {
 |  |  func (r *BytesToBufferReader) Read() (MultiBuffer, error) {
 | 
											
												
													
														|  | 
 |  | +	if r.buffer == nil {
 | 
											
												
													
														|  | 
 |  | +		return r.readSmall()
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	nBytes, err := r.reader.Read(r.buffer)
 |  |  	nBytes, err := r.reader.Read(r.buffer)
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		return nil, err
 |  |  		return nil, err
 |