mirror of
https://github.com/apernet/hysteria.git
synced 2025-04-03 20:47:38 +03:00
35 lines
783 B
Go
35 lines
783 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/apernet/hysteria/extras/utils"
|
|
)
|
|
|
|
// convBandwidth handles both string and int types for bandwidth.
|
|
// When using string, it will be parsed as a bandwidth string with units.
|
|
// When using int, it will be parsed as a raw bandwidth in bytes per second.
|
|
// It does NOT support float types.
|
|
func convBandwidth(bw interface{}) (uint64, error) {
|
|
switch bwT := bw.(type) {
|
|
case string:
|
|
return utils.StringToBps(bwT)
|
|
case int:
|
|
return uint64(bwT), nil
|
|
default:
|
|
return 0, fmt.Errorf("invalid type %T for bandwidth", bwT)
|
|
}
|
|
}
|
|
|
|
type configError struct {
|
|
Field string
|
|
Err error
|
|
}
|
|
|
|
func (e configError) Error() string {
|
|
return fmt.Sprintf("invalid config: %s: %s", e.Field, e.Err)
|
|
}
|
|
|
|
func (e configError) Unwrap() error {
|
|
return e.Err
|
|
}
|