github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/pack/io.go (about)

     1  package pack
     2  
     3  import "io"
     4  
     5  // OffsetReaderAt transforms an io.ReaderAt into an io.Reader by beginning and
     6  // advancing all reads at the given offset.
     7  type OffsetReaderAt struct {
     8  	// r is the data source for this instance of *OffsetReaderAt.
     9  	r io.ReaderAt
    10  
    11  	// o if the number of bytes read from the underlying data source, "r".
    12  	// It is incremented upon reads.
    13  	o int64
    14  }
    15  
    16  // Read implements io.Reader.Read by reading into the given []byte, "p" from the
    17  // last known offset provided to the OffsetReaderAt.
    18  //
    19  // It returns any error encountered from the underlying data stream, and
    20  // advances the reader forward by "n", the number of bytes read from the
    21  // underlying data stream.
    22  func (r *OffsetReaderAt) Read(p []byte) (n int, err error) {
    23  	n, err = r.r.ReadAt(p, r.o)
    24  	r.o += int64(n)
    25  
    26  	return n, err
    27  }