mirror of
https://github.com/kemko/nomad.git
synced 2026-01-08 19:35:41 +03:00
Units defined and parsing
This commit is contained in:
198
plugins/shared/structs/units.go
Normal file
198
plugins/shared/structs/units.go
Normal file
@@ -0,0 +1,198 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user