|
Play Framework/Scala example source code file (Promise.scala)
The Promise.scala Play Framework example source code
/*
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package play.api.libs.concurrent
import scala.language.higherKinds
import play.core._
import play.api._
import scala.concurrent.duration.{ FiniteDuration, Duration }
import java.util.concurrent.{ TimeUnit }
import scala.concurrent.{ Future, ExecutionContext, Promise => SPromise }
import scala.collection.mutable.Builder
import scala.collection._
import scala.collection.generic.CanBuildFrom
import java.util.concurrent.TimeoutException
import play.core.Execution.internalContext
import scala.util.Try
import scala.util.control.NonFatal
/**
* useful helper methods to create and compose Promises
*/
object Promise {
/**
* Constructs a Future which will contain value "message" after the given duration elapses.
* This is useful only when used in conjunction with other Promises
* @param message message to be displayed
* @param duration duration for the scheduled promise
* @return a scheduled promise
*/
def timeout[A](message: => A, duration: scala.concurrent.duration.Duration)(implicit ec: ExecutionContext): Future[A] = {
timeout(message, duration.toMillis)
}
/**
* Constructs a Future which will contain value "message" after the given duration elapses.
* This is useful only when used in conjunction with other Promises
* @param message message to be displayed
* @param duration duration for the scheduled promise
* @return a scheduled promise
*/
def timeout[A](message: => A, duration: Long, unit: TimeUnit = TimeUnit.MILLISECONDS)(implicit ec: ExecutionContext): Future[A] = {
val p = SPromise[A]()
import play.api.Play.current
Akka.system.scheduler.scheduleOnce(FiniteDuration(duration, unit)) {
p.complete(Try(message))
}
p.future
}
}
Other Play Framework source code examplesHere is a short list of links related to this Play Framework Promise.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.