Files
EdgeCommon/pkg/serverconfigs/shared/size_capacity.go

46 lines
1.1 KiB
Go
Raw Normal View History

2020-09-13 19:27:47 +08:00
package shared
2020-09-16 09:09:31 +08:00
import "encoding/json"
2020-09-13 19:27:47 +08:00
type SizeCapacityUnit = string
const (
SizeCapacityUnitByte SizeCapacityUnit = "byte"
SizeCapacityUnitKB SizeCapacityUnit = "kb"
SizeCapacityUnitMB SizeCapacityUnit = "mb"
SizeCapacityUnitGB SizeCapacityUnit = "gb"
SizeCapacityUnitTB SizeCapacityUnit = "tb"
SizeCapacityUnitPB SizeCapacityUnit = "pb"
2020-09-13 19:27:47 +08:00
)
type SizeCapacity struct {
Count int64 `json:"count" yaml:"count"`
Unit SizeCapacityUnit `json:"unit" yaml:"unit"`
}
func (this *SizeCapacity) Bytes() int64 {
if this.Count < 0 {
return -1
}
2020-09-13 19:27:47 +08:00
switch this.Unit {
case SizeCapacityUnitByte:
return this.Count
case SizeCapacityUnitKB:
return this.Count * 1024
case SizeCapacityUnitMB:
return this.Count * 1024 * 1024
case SizeCapacityUnitGB:
return this.Count * 1024 * 1024 * 1024
case SizeCapacityUnitTB:
return this.Count * 1024 * 1024 * 1024 * 1024
case SizeCapacityUnitPB:
return this.Count * 1024 * 1024 * 1024 * 1024 * 1024
2020-09-13 19:27:47 +08:00
default:
return this.Count
}
}
2020-09-16 09:09:31 +08:00
func (this *SizeCapacity) AsJSON() ([]byte, error) {
return json.Marshal(this)
}