mirror of https://github.com/ethereum/go-ethereum
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
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
|
|
}
|
|
}
|
|
|