github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/store/bufferedChecksumIndexInput.go (about)

     1  package store
     2  
     3  import (
     4  	"fmt"
     5  	"hash"
     6  	"hash/crc32"
     7  )
     8  
     9  /*
    10  Simple implementation of ChecksumIndexInput that wraps another input
    11  and delegates calls.
    12  */
    13  type BufferedChecksumIndexInput struct {
    14  	*ChecksumIndexInputImpl
    15  	main   IndexInput
    16  	digest hash.Hash32
    17  }
    18  
    19  func newBufferedChecksumIndexInput(main IndexInput) *BufferedChecksumIndexInput {
    20  	ans := &BufferedChecksumIndexInput{
    21  		main:   main,
    22  		digest: crc32.NewIEEE(),
    23  	}
    24  	ans.ChecksumIndexInputImpl = NewChecksumIndexInput(
    25  		fmt.Sprintf("BufferedChecksumIndexInput(%v)", main), ans)
    26  	return ans
    27  }
    28  
    29  func (in *BufferedChecksumIndexInput) ReadByte() (b byte, err error) {
    30  	if b, err = in.main.ReadByte(); err == nil {
    31  		in.digest.Write([]byte{b})
    32  	}
    33  	return
    34  }
    35  
    36  func (in *BufferedChecksumIndexInput) ReadBytes(p []byte) (err error) {
    37  	if err = in.main.ReadBytes(p); err == nil {
    38  		in.digest.Write(p)
    39  	}
    40  	return
    41  }
    42  
    43  func (in *BufferedChecksumIndexInput) Checksum() int64 {
    44  	return int64(in.digest.Sum32())
    45  }
    46  
    47  func (in *BufferedChecksumIndexInput) Close() error {
    48  	return in.main.Close()
    49  }
    50  
    51  func (in *BufferedChecksumIndexInput) FilePointer() int64 {
    52  	return in.main.FilePointer()
    53  }
    54  
    55  func (in *BufferedChecksumIndexInput) Length() int64 {
    56  	return in.main.Length()
    57  }
    58  
    59  func (in *BufferedChecksumIndexInput) Clone() IndexInput {
    60  	panic("not supported")
    61  }
    62  
    63  func (in *BufferedChecksumIndexInput) Slice(desc string, offset, length int64) (IndexInput, error) {
    64  	panic("not supported")
    65  }