Documentation ¶
Index ¶
- func Spec() config.PeerListSpec
- type List
- func (pl *List) Choose(ctx context.Context, req *transport.Request) (peer.Peer, func(error), error)
- func (pl *List) Introspect() introspection.ChooserStatus
- func (pl *List) IsRunning() bool
- func (pl *List) NotifyStatusChanged(pid peer.Identifier)
- func (pl *List) Start() error
- func (pl *List) Stop() error
- func (pl *List) Update(updates peer.ListUpdates) error
- type ListOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Spec ¶
func Spec() config.PeerListSpec
Spec returns a configuration specification for the round-robin peer list implementation, making it possible to select the least recently chosen peer with transports that use outbound peer list configuration (like HTTP).
cfg := config.New() cfg.MustRegisterPeerList(roundrobin.Spec())
This enables the round-robin peer list:
outbounds: otherservice: unary: http: url: https://host:port/rpc round-robin: peers: - 127.0.0.1:8080 - 127.0.0.1:8081
Types ¶
type List ¶
type List struct {
// contains filtered or unexported fields
}
List is a PeerList which rotates which peers are to be selected in a circle
func New ¶
func New(transport peer.Transport, opts ...ListOption) *List
New creates a new round robin PeerList
func (*List) Introspect ¶
func (pl *List) Introspect() introspection.ChooserStatus
Introspect returns a ChooserStatus with a summary of the Peers.
func (*List) NotifyStatusChanged ¶
func (pl *List) NotifyStatusChanged(pid peer.Identifier)
NotifyStatusChanged when the peer's status changes
type ListOption ¶
type ListOption func(*listConfig)
ListOption customizes the behavior of a roundrobin list.
func Capacity ¶
func Capacity(capacity int) ListOption
Capacity specifies the default capacity of the underlying data structures for this list
Defaults to 10.