 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  var Precedences = struct { // Required terminators should always be used in preference to non-required terminators // Example: The current active node in an active/passive setup. If the strategy determintes // that the current active has failed, it will drop the precedence and mark some other // terminator as Required Required Precedence // Default precedence is where terminators start Default Precedence // Failed means this terminator should only be used if all other terminators are also in a failed state // Example: A strategy might move a terminator to Failed if three dials in a row fail Failed Precedence // Unknown means this terminator was likely recently removed and should not be used unknown Precedence }{ Required: &precedence{ name: "required", minCost: requireMinCost, maxCost: defaultMinCost - 1, }, Default: &precedence{ name: "default", minCost: defaultMinCost, maxCost: failedMinCost - 1, }, Failed: &precedence{ name: "failed", minCost: failedMinCost, maxCost: unknownMinCost - 1, }, // contains filtered or unexported fields }
Precedences define the precedence levels
Functions ¶
This section is empty.
Types ¶
type CostedTerminator ¶
type CostedTerminator interface {
	Terminator
	GetRouteCost() uint32
}
    func GetRelatedTerminators ¶
func GetRelatedTerminators(list []CostedTerminator) []CostedTerminator
In a list which is sorted by precedence, returns the terminators which have the same precedence as that of the first entry in the list
type Costs ¶
type Costs interface {
	SetPrecedenceChangeHandler(f func(terminatorId string, precedence Precedence))
	ClearCost(terminatorId string)
	SetPrecedence(terminatorId string, precedence Precedence)
	SetDynamicCost(terminatorId string, weight uint16)
	UpdateDynamicCost(terminatorId string, updateF func(uint16) uint16)
	GetDynamicCost(terminatorId string) uint16
}
    func GlobalCosts ¶
func GlobalCosts() Costs
type DefaultEventVisitor ¶
type DefaultEventVisitor struct{}
    func (DefaultEventVisitor) VisitCircuitRemoved ¶ added in v0.16.92
func (visitor DefaultEventVisitor) VisitCircuitRemoved(TerminatorEvent)
func (DefaultEventVisitor) VisitDialFailed ¶
func (visitor DefaultEventVisitor) VisitDialFailed(TerminatorEvent)
func (DefaultEventVisitor) VisitDialSucceeded ¶
func (visitor DefaultEventVisitor) VisitDialSucceeded(TerminatorEvent)
type EventVisitor ¶
type EventVisitor interface {
	VisitDialFailed(event TerminatorEvent)
	VisitDialSucceeded(event TerminatorEvent)
	VisitCircuitRemoved(event TerminatorEvent)
}
    type FailureCosts ¶
type FailureCosts interface {
	Failure(terminatorId string) uint16
	Success(terminatorId string) uint16
	Clear(terminatorId string)
	CreditOverTime(credit uint8, period time.Duration) *time.Ticker
}
    func NewFailureCosts ¶
func NewFailureCosts(maxFailureCost uint16, failureCost uint8, successCredit uint8) FailureCosts
type Precedence ¶
type Precedence interface {
	fmt.Stringer
	IsFailed() bool
	IsDefault() bool
	IsRequired() bool
	Unbias(cost uint32) uint32
	GetBiasedCost(cost uint32) uint32
	// contains filtered or unexported methods
}
    func GetPrecedenceForName ¶ added in v0.13.0
func GetPrecedenceForName(name string) Precedence
type Registry ¶
type Registry interface {
	RegisterFactory(factory Factory)
	GetStrategy(name string) (Strategy, error)
}
    func GlobalRegistry ¶
func GlobalRegistry() Registry
type Stats ¶
type Stats interface {
	GetCost() uint32
	GetPrecedence() Precedence
}
    type Strategy ¶
type Strategy interface {
	Select(terminators []CostedTerminator) (CostedTerminator, error)
	HandleTerminatorChange(event StrategyChangeEvent) error
	NotifyEvent(event TerminatorEvent)
}
    type StrategyChangeEvent ¶
type StrategyChangeEvent interface {
	GetServiceId() string
	GetCurrent() []Terminator
	GetAdded() []Terminator
	GetChanged() []Terminator
	GetRemoved() []Terminator
}
    func NewStrategyChangeEvent ¶
func NewStrategyChangeEvent(serviceId string, current, added, changed, removed []Terminator) StrategyChangeEvent
type Terminator ¶
type Terminator interface {
	GetId() string
	GetPrecedence() Precedence
	GetCost() uint16
	GetServiceId() string
	GetInstanceId() string
	GetRouterId() string
	GetBinding() string
	GetAddress() string
	GetPeerData() PeerData
	GetCreatedAt() time.Time
	GetHostId() string
}
    func TList ¶
func TList(terminators ...Terminator) []Terminator
type TerminatorEvent ¶
type TerminatorEvent interface {
	GetTerminator() Terminator
	Accept(visitor EventVisitor)
}
    func NewCircuitRemoved ¶ added in v0.16.92
func NewCircuitRemoved(terminator Terminator) TerminatorEvent
func NewDialFailedEvent ¶
func NewDialFailedEvent(terminator Terminator) TerminatorEvent
func NewDialSucceeded ¶
func NewDialSucceeded(terminator Terminator) TerminatorEvent
 Click to show internal directories. 
   Click to hide internal directories.