scala.concurrent.duration.DurationConversions.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scala-library Show documentation
Show all versions of scala-library Show documentation
Standard library for the Scala Programming Language
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala.concurrent.duration
import DurationConversions._
// Would be nice to limit the visibility of this trait a little bit,
// but it crashes scalac to do so.
trait DurationConversions extends Any {
protected def durationIn(unit: TimeUnit): FiniteDuration
def nanoseconds = durationIn(NANOSECONDS)
def nanos = nanoseconds
def nanosecond = nanoseconds
def nano = nanoseconds
def microseconds = durationIn(MICROSECONDS)
def micros = microseconds
def microsecond = microseconds
def micro = microseconds
def milliseconds = durationIn(MILLISECONDS)
def millis = milliseconds
def millisecond = milliseconds
def milli = milliseconds
def seconds = durationIn(SECONDS)
def second = seconds
def minutes = durationIn(MINUTES)
def minute = minutes
def hours = durationIn(HOURS)
def hour = hours
def days = durationIn(DAYS)
def day = days
def nanoseconds[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(nanoseconds)
def nanos[C](c: C)(implicit ev: Classifier[C]): ev.R = nanoseconds(c)
def nanosecond[C](c: C)(implicit ev: Classifier[C]): ev.R = nanoseconds(c)
def nano[C](c: C)(implicit ev: Classifier[C]): ev.R = nanoseconds(c)
def microseconds[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(microseconds)
def micros[C](c: C)(implicit ev: Classifier[C]): ev.R = microseconds(c)
def microsecond[C](c: C)(implicit ev: Classifier[C]): ev.R = microseconds(c)
def micro[C](c: C)(implicit ev: Classifier[C]): ev.R = microseconds(c)
def milliseconds[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(milliseconds)
def millis[C](c: C)(implicit ev: Classifier[C]): ev.R = milliseconds(c)
def millisecond[C](c: C)(implicit ev: Classifier[C]): ev.R = milliseconds(c)
def milli[C](c: C)(implicit ev: Classifier[C]): ev.R = milliseconds(c)
def seconds[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(seconds)
def second[C](c: C)(implicit ev: Classifier[C]): ev.R = seconds(c)
def minutes[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(minutes)
def minute[C](c: C)(implicit ev: Classifier[C]): ev.R = minutes(c)
def hours[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(hours)
def hour[C](c: C)(implicit ev: Classifier[C]): ev.R = hours(c)
def days[C](c: C)(implicit ev: Classifier[C]): ev.R = ev.convert(days)
def day[C](c: C)(implicit ev: Classifier[C]): ev.R = days(c)
}
/**
* This object just holds some cogs which make the DSL machine work, not for direct consumption.
*/
object DurationConversions {
trait Classifier[C] {
type R
def convert(d: FiniteDuration): R
}
implicit object spanConvert extends Classifier[span.type] {
type R = FiniteDuration
def convert(d: FiniteDuration) = d
}
implicit object fromNowConvert extends Classifier[fromNow.type] {
type R = Deadline
def convert(d: FiniteDuration) = Deadline.now + d
}
}