Files
nomad/plugins/shared/structs/units.go
2018-10-11 23:30:28 -07:00

199 lines
3.5 KiB
Go

package structs.
var (
UnitIndex = make(map[string]*Unit, len(binarySIBytes)+len(decimalSIBytes)+len(binarySIByteRates)+len(decimalSIByteRates)+len(watts)+len(hertz))
binarySIBytes = []*Unit{
&Unit{
Name: "KiB",
Base: UnitByte,
Multiplier: 1 << 10,
},
&Unit{
Name: "MiB",
Base: UnitByte,
Multiplier: 1 << 20,
},
&Unit{
Name: "GiB",
Base: UnitByte,
Multiplier: 1 << 30,
},
&Unit{
Name: "TiB",
Base: UnitByte,
Multiplier: 1 << 40,
},
&Unit{
Name: "PiB",
Base: UnitByte,
Multiplier: 1 << 50,
},
&Unit{
Name: "EiB",
Base: UnitByte,
Multiplier: 1 << 60,
},
}
decimalSIBytes = []*Unit{
&Unit{
Name: "kB",
Base: UnitByte,
Multiplier: Pow(1000, 1),
},
&Unit{
Name: "KB", // Alternative name for kB
Base: UnitByte,
Multiplier: Pow(1000, 1),
},
&Unit{
Name: "MB",
Base: UnitByte,
Multiplier: Pow(1000, 2),
},
&Unit{
Name: "GB",
Base: UnitByte,
Multiplier: Pow(1000, 3),
},
&Unit{
Name: "TB",
Base: UnitByte,
Multiplier: Pow(1000, 4),
},
&Unit{
Name: "PB",
Base: UnitByte,
Multiplier: Pow(1000, 5),
},
&Unit{
Name: "EB",
Base: UnitByte,
Multiplier: Pow(1000, 6),
},
}
binarySIByteRates = []*Unit{
&Unit{
Name: "KiB/s",
Base: UnitByteRate,
Multiplier: 1 << 10,
},
&Unit{
Name: "MiB/s",
Base: UnitByteRate,
Multiplier: 1 << 20,
},
&Unit{
Name: "GiB/s",
Base: UnitByteRate,
Multiplier: 1 << 30,
},
&Unit{
Name: "TiB/s",
Base: UnitByteRate,
Multiplier: 1 << 40,
},
&Unit{
Name: "PiB/s",
Base: UnitByteRate,
Multiplier: 1 << 50,
},
&Unit{
Name: "EiB/s",
Base: UnitByteRate,
Multiplier: 1 << 60,
},
}
decimalSIByteRates = []*Unit{
&Unit{
Name: "kB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 1),
},
&Unit{
Name: "KB/s", // Alternative name for kB/s
Base: UnitByteRate,
Multiplier: Pow(1000, 1),
},
&Unit{
Name: "MB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 2),
},
&Unit{
Name: "GB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 3),
},
&Unit{
Name: "TB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 4),
},
&Unit{
Name: "PB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 5),
},
&Unit{
Name: "EB/s",
Base: UnitByteRate,
Multiplier: Pow(1000, 6),
},
}
hertz = []*Unit{
&Unit{
Name: "MHz",
Base: UnitHertz,
Multiplier: Pow(1000, 1),
},
&Unit{
Name: "GHz",
Base: UnitHertz,
Multiplier: Pow(1000, 3),
},
}
watts = []*Unit{
&Unit{
Name: "mW",
Base: UnitWatt,
Multiplier: Pow(10, 3),
InverseMultiplier: true,
},
&Unit{
Name: "W",
Base: UnitWatt,
Multiplier: 1,
},
&Unit{
Name: "kW",
Base: UnitWatt,
Multiplier: Pow(10, 3),
},
&Unit{
Name: "MW",
Base: UnitWatt,
Multiplier: Pow(10, 6),
},
&Unit{
Name: "GW",
Base: UnitWatt,
Multiplier: Pow(10, 9),
},
}
)
func init() {
// Build the index
for _, units := range [][]*Unit{binarySIBytes, decimalSIBytes, binarySIByteRates, decimalSIByteRates, watts, hertz} {
for _, unit := range units {
UnitIndex[unit.Name] = unit
}
}
}