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  }