Refactor network to a top-level module

This commit is contained in:
9seconds
2021-03-14 21:43:30 +03:00
parent 37a78bd1c3
commit f8ad90c845
25 changed files with 231 additions and 192 deletions
+37
View File
@@ -0,0 +1,37 @@
package network
import (
"net/url"
"strconv"
"time"
)
func newProxyDialer(baseDialer Dialer, proxyURL *url.URL) Dialer {
params := proxyURL.Query()
var (
openThreshold uint32 = ProxyDialerOpenThreshold
halfOpenTimeout = ProxyDialerHalfOpenTimeout
resetFailuresTimeout = ProxyDialerResetFailuresTimeout
)
if param := params.Get("open_threshold"); param != "" {
if intNum, err := strconv.ParseUint(param, 10, 32); err == nil {
openThreshold = uint32(intNum)
}
}
if param := params.Get("half_open_timeout"); param != "" {
if dur, err := time.ParseDuration(param); err == nil && dur > 0 {
halfOpenTimeout = dur
}
}
if param := params.Get("reset_failures_timeout"); param != "" {
if dur, err := time.ParseDuration(param); err == nil && dur > 0 {
resetFailuresTimeout = dur
}
}
return newCircuitBreakerDialer(baseDialer, openThreshold, halfOpenTimeout, resetFailuresTimeout)
}