mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-17 02:48:57 -07:00
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
|
/*
|
||
|
|
||
|
Package rollinghash implements rolling versions of some hashes
|
||
|
|
||
|
*/
|
||
|
package rollinghash
|
||
|
|
||
|
import "hash"
|
||
|
|
||
|
type Roller interface {
|
||
|
// Roll updates the hash of a rolling window from the entering byte.
|
||
|
// A copy of the window is internally kept from the last Write().
|
||
|
// This copy is updated along with the internal state of the checksum
|
||
|
// in order to determine the new hash very quickly.
|
||
|
Roll(b byte)
|
||
|
}
|
||
|
|
||
|
// rollinghash.Hash extends hash.Hash by adding the method Roll. A
|
||
|
// rollinghash.Hash can be updated byte by byte, by specifying which byte
|
||
|
// enters the window.
|
||
|
type Hash interface {
|
||
|
hash.Hash
|
||
|
Roller
|
||
|
}
|
||
|
|
||
|
// rollinghash.Hash32 extends hash.Hash by adding the method Roll. A
|
||
|
// rollinghash.Hash32 can be updated byte by byte, by specifying which
|
||
|
// byte enters the window.
|
||
|
type Hash32 interface {
|
||
|
hash.Hash32
|
||
|
Roller
|
||
|
}
|
||
|
|
||
|
// rollinghash.Hash64 extends hash.Hash by adding the method Roll. A
|
||
|
// rollinghash.Hash64 can be updated byte by byte, by specifying which
|
||
|
// byte enters the window.
|
||
|
type Hash64 interface {
|
||
|
hash.Hash64
|
||
|
Roller
|
||
|
}
|