All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.twitter.conversions.common.quantity.scala Maven / Gradle / Ivy

The newest version!
package com.twitter.conversions.common

import com.twitter.common.quantity.{Amount, Time => CommonTime}
import com.twitter.conversions.time._
import com.twitter.util.Duration
import java.util.concurrent.TimeUnit
import scala.language.implicitConversions

object quantity {
  val COMMON_FOREVER: Duration = 0.millis

  class CommonDurationAdapter(d: Duration) {
    def toIntAmount: Amount[Integer, CommonTime] =
      Amount.of(d.inMillis.toInt, CommonTime.MILLISECONDS)

    def toLongAmount: Amount[java.lang.Long, CommonTime] =
      Amount.of(d.inMillis, CommonTime.MILLISECONDS)
  }

  /** Implicit conversion of Duration to CommonDuration */
  implicit def commonDuration(d: Duration): CommonDurationAdapter = new CommonDurationAdapter(d)

  class DurationAmountAdapter(a: Amount[java.lang.Long, CommonTime]) {
    def toDuration: Duration = Duration(a.getValue.longValue, translateUnit(a.getUnit))

    def translateUnit(unit: CommonTime): TimeUnit = unit match {
      case CommonTime.DAYS         => TimeUnit.DAYS
      case CommonTime.HOURS        => TimeUnit.HOURS
      case CommonTime.MINUTES      => TimeUnit.MINUTES
      case CommonTime.MICROSECONDS => TimeUnit.MICROSECONDS
      case CommonTime.MILLISECONDS => TimeUnit.MILLISECONDS
      case CommonTime.NANOSECONDS  => TimeUnit.NANOSECONDS
      case CommonTime.SECONDS      => TimeUnit.SECONDS
    }
  }

  /** Implicit conversion of Amount to DurationAmountAdapter */
  implicit def commonDuration(a: Amount[java.lang.Long, CommonTime]): DurationAmountAdapter =
    new DurationAmountAdapter(a)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy