package models // import "github.com/influxdata/platform/models" // from stdlib hash/fnv/fnv.go const ( prime64 = 1099511628211 offset64 = 14695981039346656037 ) // InlineFNV64a is an alloc-free port of the standard library's fnv64a. // See https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function. type InlineFNV64a uint64 // NewInlineFNV64a returns a new instance of InlineFNV64a. func NewInlineFNV64a() InlineFNV64a { return offset64 } // Write adds data to the running hash. func (s *InlineFNV64a) Write(data []byte) (int, error) { hash := uint64(*s) for _, c := range data { hash ^= uint64(c) hash *= prime64 } *s = InlineFNV64a(hash) return len(data), nil } // Sum64 returns the uint64 of the current resulting hash. func (s *InlineFNV64a) Sum64() uint64 { return uint64(*s) }