glider/proxy/forwarder.go

50 lines
791 B
Go
Raw Normal View History

package proxy
import (
"strings"
)
// Forwarder is a forwarder
type Forwarder struct {
Dialer
addr string
disabled bool
failures int
priority int
weight int
}
// ForwarderFromURL returns a new forwarder
func ForwarderFromURL(s string) (*Forwarder, error) {
var d Dialer
var err error
for _, url := range strings.Split(s, ",") {
d, err = DialerFromURL(url, d)
if err != nil {
return nil, err
}
}
return &Forwarder{Dialer: d}, nil
}
// NewForwarder .
func NewForwarder(dialer Dialer) *Forwarder {
return &Forwarder{Dialer: dialer, addr: dialer.Addr()}
}
// Addr .
func (f *Forwarder) Addr() string {
return f.addr
}
// Enable .
func (f *Forwarder) Enable(b bool) {
f.disabled = !b
}
// Enabled .
func (f *Forwarder) Enabled() bool {
return !f.disabled
}