Documentation ¶
Index ¶
- Variables
- func AbsInt(a int) int
- func ComputeDistance(a *coordinate.Coordinate, b *coordinate.Coordinate) float64
- func DurationMinusBuffer(intv time.Duration, buffer time.Duration, jitter int64) time.Duration
- func DurationMinusBufferDomain(intv time.Duration, buffer time.Duration, jitter int64) (min time.Duration, max time.Duration)
- func EnsurePath(path string, dir bool) error
- func GenerateCoordinate(rtt time.Duration) *coordinate.Coordinate
- func IsErrEOF(err error) bool
- func MaxInt(a, b int) int
- func MinInt(a, b int) int
- func RandomStagger(intv time.Duration) time.Duration
- func RateScaledInterval(rate float64, min time.Duration, n int) time.Duration
- func SeedMathRand()
- func SerfDefaultConfig() *serf.Config
- func StrContains(l []string, s string) bool
- type CoordinateSet
Constants ¶
This section is empty.
Variables ¶
var ( // SeededSecurely is set to true if a cryptographically secure seed // was used to initialize rand. When false, the start time is used // as a seed. SeededSecurely bool )
Functions ¶
func ComputeDistance ¶ added in v0.8.0
func ComputeDistance(a *coordinate.Coordinate, b *coordinate.Coordinate) float64
ComputeDistance returns the distance between the two network coordinates in seconds. If either of the coordinates is nil then this will return positive infinity.
func DurationMinusBuffer ¶ added in v0.7.0
DurationMinusBuffer returns a duration, minus a buffer and jitter subtracted from the duration. This function is used primarily for servicing Consul TTL Checks in advance of the TTL.
func DurationMinusBufferDomain ¶ added in v0.7.0
func DurationMinusBufferDomain(intv time.Duration, buffer time.Duration, jitter int64) (min time.Duration, max time.Duration)
DurationMinusBufferDomain returns the domain of valid durations from a call to DurationMinusBuffer. This function is used to check user specified input values to DurationMinusBuffer.
func EnsurePath ¶ added in v0.7.3
EnsurePath is used to make sure a path exists
func GenerateCoordinate ¶ added in v0.8.0
func GenerateCoordinate(rtt time.Duration) *coordinate.Coordinate
GenerateCoordinate creates a new coordinate with the given distance from the origin. This should only be used for tests.
func IsErrEOF ¶ added in v1.0.0
IsErrEOF returns true if we get an EOF error from the socket itself, or an EOF equivalent error from yamux.
func RandomStagger ¶
RandomStagger returns an interval between 0 and the duration
func RateScaledInterval ¶
RateScaledInterval is used to choose an interval to perform an action in order to target an aggregate number of actions per second across the whole cluster.
func SeedMathRand ¶
func SeedMathRand()
SeedMathRand provides weak, but guaranteed seeding, which is better than running with Go's default seed of 1. A call to SeedMathRand() is expected to be called via init(), but never a second time.
func SerfDefaultConfig ¶ added in v1.0.2
SerfDefaultConfig returns a Consul-flavored Serf default configuration, suitable as a basis for a LAN, WAN, segment, or area.
func StrContains ¶
StrContains checks if a list contains a string
Types ¶
type CoordinateSet ¶ added in v0.9.3
type CoordinateSet map[string]*coordinate.Coordinate
CoordinateSet holds all the coordinates for a given node, indexed by network segment name.
func (CoordinateSet) Intersect ¶ added in v0.9.3
func (cs CoordinateSet) Intersect(other CoordinateSet) (*coordinate.Coordinate, *coordinate.Coordinate)
Intersect tries to return a pair of coordinates which are compatible with the current set and a given set. We employ some special knowledge about network segments to avoid doing a full intersection, since this is in several hot paths. This might return nil for either coordinate in the output pair if an intersection cannot be found. The ComputeDistance function above is designed to deal with that.