mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-21 13:02:34 +02:00
42 lines
770 B
Go
42 lines
770 B
Go
package loadbalancer
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/yusing/go-proxy/internal/net/types"
|
|
U "github.com/yusing/go-proxy/internal/utils"
|
|
"github.com/yusing/go-proxy/internal/watcher/health"
|
|
)
|
|
|
|
type (
|
|
Server struct {
|
|
_ U.NoCopy
|
|
|
|
Name string
|
|
URL types.URL
|
|
Weight weightType
|
|
|
|
handler http.Handler
|
|
healthMon health.HealthMonitor
|
|
}
|
|
servers []*Server
|
|
)
|
|
|
|
func NewServer(name string, url types.URL, weight weightType, handler http.Handler, healthMon health.HealthMonitor) *Server {
|
|
srv := &Server{
|
|
Name: name,
|
|
URL: url,
|
|
Weight: weight,
|
|
handler: handler,
|
|
healthMon: healthMon,
|
|
}
|
|
return srv
|
|
}
|
|
|
|
func (srv *Server) String() string {
|
|
return srv.Name
|
|
}
|
|
|
|
func (srv *Server) IsHealthy() bool {
|
|
return srv.healthMon.IsHealthy()
|
|
}
|