75 lines
2.5 KiB
Go
75 lines
2.5 KiB
Go
|
package formatter
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/dustin/go-humanize"
|
||
|
"go.signoz.io/signoz/pkg/query-service/converter"
|
||
|
)
|
||
|
|
||
|
type dataRateFormatter struct {
|
||
|
}
|
||
|
|
||
|
func NewDataRateFormatter() Formatter {
|
||
|
return &dataRateFormatter{}
|
||
|
}
|
||
|
|
||
|
func (*dataRateFormatter) Name() string {
|
||
|
return "data_rate"
|
||
|
}
|
||
|
|
||
|
func (f *dataRateFormatter) Format(value float64, unit string) string {
|
||
|
switch unit {
|
||
|
case "binBps":
|
||
|
return humanize.IBytes(uint64(value)) + "/s"
|
||
|
case "Bps":
|
||
|
return humanize.Bytes(uint64(value)) + "/s"
|
||
|
case "binbps":
|
||
|
return humanize.IBytes(uint64(value*converter.BitPerSecond)) + "/s"
|
||
|
case "bps":
|
||
|
return humanize.Bytes(uint64(value*converter.BitPerSecond)) + "/s"
|
||
|
case "KiBs":
|
||
|
return humanize.IBytes(uint64(value*converter.KibibitPerSecond)) + "/s"
|
||
|
case "Kibits":
|
||
|
return humanize.IBytes(uint64(value*converter.KibibytePerSecond)) + "/s"
|
||
|
case "KBs":
|
||
|
return humanize.IBytes(uint64(value*converter.KilobitPerSecond)) + "/s"
|
||
|
case "Kbits":
|
||
|
return humanize.IBytes(uint64(value*converter.KilobytePerSecond)) + "/s"
|
||
|
case "MiBs":
|
||
|
return humanize.IBytes(uint64(value*converter.MebibitPerSecond)) + "/s"
|
||
|
case "Mibits":
|
||
|
return humanize.IBytes(uint64(value*converter.MebibytePerSecond)) + "/s"
|
||
|
case "MBs":
|
||
|
return humanize.IBytes(uint64(value*converter.MegabitPerSecond)) + "/s"
|
||
|
case "Mbits":
|
||
|
return humanize.IBytes(uint64(value*converter.MegabytePerSecond)) + "/s"
|
||
|
case "GiBs":
|
||
|
return humanize.IBytes(uint64(value*converter.GibibitPerSecond)) + "/s"
|
||
|
case "Gibits":
|
||
|
return humanize.IBytes(uint64(value*converter.GibibytePerSecond)) + "/s"
|
||
|
case "GBs":
|
||
|
return humanize.IBytes(uint64(value*converter.GigabitPerSecond)) + "/s"
|
||
|
case "Gbits":
|
||
|
return humanize.IBytes(uint64(value*converter.GigabytePerSecond)) + "/s"
|
||
|
case "TiBs":
|
||
|
return humanize.IBytes(uint64(value*converter.TebibitPerSecond)) + "/s"
|
||
|
case "Tibits":
|
||
|
return humanize.IBytes(uint64(value*converter.TebibytePerSecond)) + "/s"
|
||
|
case "TBs":
|
||
|
return humanize.IBytes(uint64(value*converter.TerabitPerSecond)) + "/s"
|
||
|
case "Tbits":
|
||
|
return humanize.IBytes(uint64(value*converter.TerabytePerSecond)) + "/s"
|
||
|
case "PiBs":
|
||
|
return humanize.IBytes(uint64(value*converter.PebibitPerSecond)) + "/s"
|
||
|
case "Pibits":
|
||
|
return humanize.IBytes(uint64(value*converter.PebibytePerSecond)) + "/s"
|
||
|
case "PBs":
|
||
|
return humanize.IBytes(uint64(value*converter.PetabitPerSecond)) + "/s"
|
||
|
case "Pbits":
|
||
|
return humanize.IBytes(uint64(value*converter.PetabytePerSecond)) + "/s"
|
||
|
}
|
||
|
// When unit is not matched, return the value as it is.
|
||
|
return fmt.Sprintf("%v", value)
|
||
|
}
|