mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-28 07:36:38 +08:00
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package monitoring
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
ConfigTunnelQualityProbeIntervalSec = "monitor_tunnel_quality_interval_sec"
|
|
DefaultTunnelQualityProbeIntervalSec = 1
|
|
MinTunnelQualityProbeIntervalSec = 1
|
|
MaxTunnelQualityProbeIntervalSec = 3600
|
|
)
|
|
|
|
func TunnelQualityProbeIntervalSecondsFromConfigMap(cfg map[string]string) int {
|
|
if cfg == nil {
|
|
return DefaultTunnelQualityProbeIntervalSec
|
|
}
|
|
seconds, err := parseTunnelQualityProbeIntervalSeconds(cfg[ConfigTunnelQualityProbeIntervalSec])
|
|
if err != nil {
|
|
return DefaultTunnelQualityProbeIntervalSec
|
|
}
|
|
return seconds
|
|
}
|
|
|
|
func NormalizeTunnelQualityProbeIntervalSeconds(value string) (string, error) {
|
|
seconds, err := parseTunnelQualityProbeIntervalSeconds(value)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return strconv.Itoa(seconds), nil
|
|
}
|
|
|
|
func parseTunnelQualityProbeIntervalSeconds(value string) (int, error) {
|
|
trimmed := strings.TrimSpace(value)
|
|
if trimmed == "" {
|
|
return 0, fmt.Errorf("隧道质量探测间隔不能为空")
|
|
}
|
|
seconds, err := strconv.Atoi(trimmed)
|
|
if err != nil {
|
|
return 0, fmt.Errorf("隧道质量探测间隔必须是整数")
|
|
}
|
|
if seconds < MinTunnelQualityProbeIntervalSec || seconds > MaxTunnelQualityProbeIntervalSec {
|
|
return 0, fmt.Errorf(
|
|
"隧道质量探测间隔必须在 %d 到 %d 秒之间",
|
|
MinTunnelQualityProbeIntervalSec,
|
|
MaxTunnelQualityProbeIntervalSec,
|
|
)
|
|
}
|
|
return seconds, nil
|
|
}
|