mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 17:35:40 +08:00
50 lines
791 B
Go
50 lines
791 B
Go
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
|
|
}
|