Crc32c re-implementation with Convenience functions

- Sum32([]byte) --> uint32
   - Sum(io.Reader) --> uint32, error
This commit is contained in:
Harshavardhana
2015-02-27 12:49:49 -08:00
parent 1786408bcc
commit 8ce9b84b69
4 changed files with 184 additions and 52 deletions

View File

@@ -23,11 +23,25 @@ import (
var castanagoliTable = crc32.MakeTable(crc32.Castagnoli)
func Crc32c(buffer []byte) (uint32, error) {
func Sum32(buffer []byte) uint32 {
crc := crc32.New(castanagoliTable)
if len(buffer) <= 0 {
return 0, errors.New("input buffer cannot be null")
}
crc.Reset()
crc.Write(buffer)
return crc.Sum32(), nil
return crc.Sum32()
}
func Sum(reader io.Reader) (uint32, error) {
h := New()
var err error
for err == nil {
length := 0
byteBuffer := make([]byte, 1024*1024)
length, err = reader.Read(byteBuffer)
byteBuffer = byteBuffer[0:length]
h.Write(byteBuffer)
}
if err != io.EOF {
return nil, err
}
return h.Sum32(), nil
}