aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java')
-rw-r--r--framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java
new file mode 100644
index 00000000..d49ed7b5
--- /dev/null
+++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/DataRateUnit.java
@@ -0,0 +1,64 @@
+package org.onlab.util;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Data rate unit.
+ */
+@Beta
+public enum DataRateUnit {
+ /**
+ * Bit per second.
+ */
+ BPS(1L),
+ /**
+ * Kilobit per second.
+ * (Decimal/SI)
+ */
+ KBPS(1_000L),
+ /**
+ * Megabit per second.
+ * (Decimal/SI)
+ */
+ MBPS(1_000_000L),
+ /**
+ * Gigabit per second.
+ * (Decimal/SI)
+ */
+ GBPS(1_000_000_000L);
+
+ private final long multiplier;
+
+ DataRateUnit(long multiplier) {
+ this.multiplier = multiplier;
+ }
+
+ /**
+ * Returns the multiplier to use, when converting value of this unit to bps.
+ *
+ * @return multiplier
+ */
+ public long multiplier() {
+ return multiplier;
+ }
+
+ /**
+ * Converts given value in this unit to bits per seconds.
+ *
+ * @param v data rate value
+ * @return {@code v} in bits per seconds
+ */
+ public long toBitsPerSecond(long v) {
+ return v * multiplier;
+ }
+
+ /**
+ * Converts given value in this unit to bits per seconds.
+ *
+ * @param v data rate value
+ * @return {@code v} in bits per seconds
+ */
+ public double toBitsPerSecond(double v) {
+ return v * multiplier;
+ }
+}