github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/lib/readers/limited.go (about)

     1  package readers
     2  
     3  import "io"
     4  
     5  // LimitedReadCloser adds io.Closer to io.LimitedReader.  Create one with NewLimitedReadCloser
     6  type LimitedReadCloser struct {
     7  	*io.LimitedReader
     8  	io.Closer
     9  }
    10  
    11  // NewLimitedReadCloser returns a LimitedReadCloser wrapping rc to
    12  // limit it to reading limit bytes. If limit < 0 then it does not
    13  // wrap rc, it just returns it.
    14  func NewLimitedReadCloser(rc io.ReadCloser, limit int64) (lrc io.ReadCloser) {
    15  	if limit < 0 {
    16  		return rc
    17  	}
    18  	return &LimitedReadCloser{
    19  		LimitedReader: &io.LimitedReader{R: rc, N: limit},
    20  		Closer:        rc,
    21  	}
    22  }