2023-06-06 18:29:56 +05:30
package converter
const (
// base 10 (SI prefixes)
BitPerSecond float64 = 1e0
KilobitPerSecond = BitPerSecond * 1e3
MegabitPerSecond = BitPerSecond * 1e6
GigabitPerSecond = BitPerSecond * 1e9
TerabitPerSecond = BitPerSecond * 1e12
PetabitPerSecond = BitPerSecond * 1e15
ExabitPerSecond = BitPerSecond * 1e18
ZettabitPerSecond = BitPerSecond * 1e21
YottabitPerSecond = BitPerSecond * 1e24
BytePerSecond = BitPerSecond * 8
KilobytePerSecond = BytePerSecond * 1e3
MegabytePerSecond = BytePerSecond * 1e6
GigabytePerSecond = BytePerSecond * 1e9
TerabytePerSecond = BytePerSecond * 1e12
PetabytePerSecond = BytePerSecond * 1e15
ExabytePerSecond = BytePerSecond * 1e18
ZettabytePerSecond = BytePerSecond * 1e21
YottabytePerSecond = BytePerSecond * 1e24
// base 2 (IEC prefixes)
KibibitPerSecond = BitPerSecond * 1024
MebibitPerSecond = KibibitPerSecond * 1024
GibibitPerSecond = MebibitPerSecond * 1024
TebibitPerSecond = GibibitPerSecond * 1024
PebibitPerSecond = TebibitPerSecond * 1024
ExbibitPerSecond = PebibitPerSecond * 1024
ZebibitPerSecond = ExbibitPerSecond * 1024
YobibitPerSecond = ZebibitPerSecond * 1024
KibibytePerSecond = BytePerSecond * 1024
MebibytePerSecond = KibibytePerSecond * 1024
GibibytePerSecond = MebibytePerSecond * 1024
TebibytePerSecond = GibibytePerSecond * 1024
PebibytePerSecond = TebibytePerSecond * 1024
ExbibytePerSecond = PebibytePerSecond * 1024
ZebibytePerSecond = ExbibytePerSecond * 1024
YobibytePerSecond = ZebibytePerSecond * 1024
)
// dataRateConverter is a Converter implementation for data rates
type dataRateConverter struct {
}
func NewDataRateConverter ( ) Converter {
return & dataRateConverter { }
}
2023-08-16 14:22:40 +05:30
func ( * dataRateConverter ) Name ( ) string {
return "data_rate"
}
2023-06-06 18:29:56 +05:30
func FromDataRateUnit ( u Unit ) float64 {
// See https://github.com/SigNoz/signoz/blob/5a81f5f90b34845f5b4b3bdd46acf29d04bf3987/frontend/src/container/NewWidget/RightContainer/dataFormatCategories.ts#L62-L85
switch u {
case "binBps" : // bytes/sec(IEC)
return BytePerSecond
case "Bps" : // bytes/sec(SI)
return BytePerSecond
case "binbps" : // bits/sec(IEC)
return BitPerSecond
case "bps" : // bits/sec(SI)
return BitPerSecond
case "KiBs" : // kibibytes/sec
return KibibytePerSecond
case "Kibits" : // kibibits/sec
return KibibitPerSecond
case "KBs" : // kilobytes/sec
return KilobytePerSecond
case "Kbits" : // kilobits/sec
return KilobitPerSecond
case "MiBs" : // mebibytes/sec
return MebibytePerSecond
case "Mibits" : // mebibits/sec
return MebibitPerSecond
case "MBs" : // megabytes/sec
return MegabytePerSecond
case "Mbits" : // megabits/sec
return MegabitPerSecond
case "GiBs" : // gibibytes/sec
return GibibytePerSecond
case "Gibits" : // gibibits/sec
return GibibitPerSecond
case "GBs" : // gigabytes/sec
return GigabytePerSecond
case "Gbits" : // gigabits/sec
return GigabitPerSecond
case "TiBs" : // tebibytes/sec
return TebibytePerSecond
case "Tibits" : // tebibits/sec
return TebibitPerSecond
case "TBs" : // terabytes/sec
return TerabytePerSecond
case "Tbits" : // terabits/sec
return TerabitPerSecond
case "PiBs" : // pebibytes/sec
return PebibytePerSecond
case "Pibits" : // pebibits/sec
return PebibitPerSecond
case "PBs" : // petabytes/sec
return PetabytePerSecond
case "Pbits" : // petabits/sec
return PetabitPerSecond
default :
return 1
}
}
func ( c * dataRateConverter ) Convert ( v Value , to Unit ) Value {
return Value {
F : v . F * FromDataRateUnit ( v . U ) / FromDataRateUnit ( to ) ,
U : to ,
}
}