github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/store/checksum.go (about) 1 package store 2 3 import ( 4 // "hash" 5 // "hash/crc32" 6 "github.com/balzaczyy/golucene/core/util" 7 ) 8 9 // store/ChecksumIndexInput.java 10 11 /* 12 Extension of IndexInput, computing checksum as it goes. 13 Callers can retrieve the checksum via Checksum(). 14 */ 15 type ChecksumIndexInput interface { 16 IndexInput 17 Checksum() int64 18 } 19 20 type ChecksumIndexInputImplSPI interface { 21 util.DataReader 22 FilePointer() int64 23 } 24 25 type ChecksumIndexInputImpl struct { 26 *IndexInputImpl 27 spi ChecksumIndexInputImplSPI 28 } 29 30 func NewChecksumIndexInput(desc string, spi ChecksumIndexInputImplSPI) *ChecksumIndexInputImpl { 31 return &ChecksumIndexInputImpl{NewIndexInputImpl(desc, spi), spi} 32 } 33 34 func (in *ChecksumIndexInputImpl) Seek(pos int64) error { 35 skip := pos - in.spi.FilePointer() 36 assert2(skip >= 0, "ChecksumIndexInput cannot seek backwards") 37 return in.SkipBytes(skip) 38 }