/* * Copyright 2015-present Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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; } }