77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package rabbitmq_amqp
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
UnitMb string = "mb"
|
|
UnitKb string = "kb"
|
|
UnitGb string = "gb"
|
|
UnitTb string = "tb"
|
|
kilobytesMultiplier = 1000
|
|
megabytesMultiplier = 1000 * 1000
|
|
gigabytesMultiplier = 1000 * 1000 * 1000
|
|
terabytesMultiplier = 1000 * 1000 * 1000 * 1000
|
|
)
|
|
|
|
func CapacityBytes(value int64) int64 {
|
|
return int64(value)
|
|
}
|
|
|
|
func CapacityKB(value int64) int64 {
|
|
return int64(value * kilobytesMultiplier)
|
|
}
|
|
|
|
func CapacityMB(value int64) int64 {
|
|
return int64(value * megabytesMultiplier)
|
|
}
|
|
|
|
func CapacityGB(value int64) int64 {
|
|
return int64(value * gigabytesMultiplier)
|
|
}
|
|
|
|
func CapacityTB(value int64) int64 {
|
|
return int64(value * terabytesMultiplier)
|
|
}
|
|
|
|
func CapacityFrom(value string) (int64, error) {
|
|
if value == "" || value == "0" {
|
|
return 0, nil
|
|
}
|
|
|
|
match, err := regexp.Compile("^((kb|mb|gb|tb))")
|
|
if err != nil {
|
|
return 0,
|
|
fmt.Errorf("Capacity, invalid unit size format:%s", value)
|
|
}
|
|
|
|
foundUnitSize := strings.ToLower(value[len(value)-2:])
|
|
|
|
if match.MatchString(foundUnitSize) {
|
|
|
|
size, err := strconv.Atoi(value[:len(value)-2])
|
|
if err != nil {
|
|
return 0, fmt.Errorf("Capacity, Invalid number format: %s", value)
|
|
}
|
|
switch foundUnitSize {
|
|
case UnitKb:
|
|
return CapacityKB(int64(size)), nil
|
|
|
|
case UnitMb:
|
|
return CapacityMB(int64(size)), nil
|
|
|
|
case UnitGb:
|
|
return CapacityGB(int64(size)), nil
|
|
|
|
case UnitTb:
|
|
return CapacityTB(int64(size)), nil
|
|
}
|
|
}
|
|
|
|
return 0, fmt.Errorf("Capacity, Invalid unit size format: %s", value)
|
|
}
|