31 lines
827 B
Go
31 lines
827 B
Go
package router
|
|
|
|
import "github.com/hashicorp/consul/agent/metadata"
|
|
|
|
// ServerTracker is called when Router is notified of a server being added or
|
|
// removed.
|
|
type ServerTracker interface {
|
|
NewRebalancer(dc string) func()
|
|
AddServer(*metadata.Server)
|
|
RemoveServer(*metadata.Server)
|
|
}
|
|
|
|
// Rebalancer is called periodically to re-order the servers so that the load on the
|
|
// servers is evenly balanced.
|
|
type Rebalancer func()
|
|
|
|
// NoOpServerTracker is a ServerTracker that does nothing. Used when gRPC is not
|
|
// enabled.
|
|
type NoOpServerTracker struct{}
|
|
|
|
// Rebalance does nothing
|
|
func (NoOpServerTracker) NewRebalancer(string) func() {
|
|
return func() {}
|
|
}
|
|
|
|
// AddServer does nothing
|
|
func (NoOpServerTracker) AddServer(*metadata.Server) {}
|
|
|
|
// RemoveServer does nothing
|
|
func (NoOpServerTracker) RemoveServer(*metadata.Server) {}
|