mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-19 00:04:12 +00:00
1cf6747d06
Former-commit-id: 6a2a7c34e451465eae5d78f76e310e36a412d848 [formerly 6294fcfb3a206061cc8f9309f945f9b0c5a332a2] Former-commit-id: e2d352442cc4b45620454ac6ece0f8d3d564ed11
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
// ConsistencyLevel represent a required replication criteria before a write can
|
|
// be returned as successful.
|
|
//
|
|
// The consistency level is handled in open-source InfluxDB but only applicable to clusters.
|
|
type ConsistencyLevel int
|
|
|
|
const (
|
|
// ConsistencyLevelAny allows for hinted handoff, potentially no write happened yet.
|
|
ConsistencyLevelAny ConsistencyLevel = iota
|
|
|
|
// ConsistencyLevelOne requires at least one data node acknowledged a write.
|
|
ConsistencyLevelOne
|
|
|
|
// ConsistencyLevelQuorum requires a quorum of data nodes to acknowledge a write.
|
|
ConsistencyLevelQuorum
|
|
|
|
// ConsistencyLevelAll requires all data nodes to acknowledge a write.
|
|
ConsistencyLevelAll
|
|
)
|
|
|
|
var (
|
|
// ErrInvalidConsistencyLevel is returned when parsing the string version
|
|
// of a consistency level.
|
|
ErrInvalidConsistencyLevel = errors.New("invalid consistency level")
|
|
)
|
|
|
|
// ParseConsistencyLevel converts a consistency level string to the corresponding ConsistencyLevel const.
|
|
func ParseConsistencyLevel(level string) (ConsistencyLevel, error) {
|
|
switch strings.ToLower(level) {
|
|
case "any":
|
|
return ConsistencyLevelAny, nil
|
|
case "one":
|
|
return ConsistencyLevelOne, nil
|
|
case "quorum":
|
|
return ConsistencyLevelQuorum, nil
|
|
case "all":
|
|
return ConsistencyLevelAll, nil
|
|
default:
|
|
return 0, ErrInvalidConsistencyLevel
|
|
}
|
|
}
|