mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-24 19:30:06 +01:00
7f4fb34182
It is better developing vmctl tool in VictoriaMetrics repository, so it could be released together with the rest of vmutils tools such as vmalert, vmagent, vmbackup, vmrestore and vmauth.
33 lines
820 B
Go
33 lines
820 B
Go
package models // import "github.com/influxdata/influxdb/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)
|
|
}
|