summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraleksandar <aleksandar@lampmac14.epfl.ch>2012-01-12 15:41:53 +0100
committeraleksandar <aleksandar@lampmac14.epfl.ch>2012-01-12 15:41:53 +0100
commit7a6d66399eab9e29b0e4270b1c7e47c20471c91d (patch)
treea702515173b190aaba9fbdc5c2080a165d2500bd
parentaa568432a102287881a2a524f340926c1698165b (diff)
downloadscala-7a6d66399eab9e29b0e4270b1c7e47c20471c91d.tar.gz
scala-7a6d66399eab9e29b0e4270b1c7e47c20471c91d.tar.bz2
scala-7a6d66399eab9e29b0e4270b1c7e47c20471c91d.zip
Refactor blockable to awaitable on several places.
-rw-r--r--src/library/scala/concurrent/Awaitable.scala2
-rw-r--r--src/library/scala/concurrent/ExecutionContext.scala2
-rw-r--r--src/library/scala/concurrent/Future.scala4
-rw-r--r--src/library/scala/concurrent/default/TaskImpl.scala6
4 files changed, 8 insertions, 6 deletions
diff --git a/src/library/scala/concurrent/Awaitable.scala b/src/library/scala/concurrent/Awaitable.scala
index 85546718d2..52fd3b9516 100644
--- a/src/library/scala/concurrent/Awaitable.scala
+++ b/src/library/scala/concurrent/Awaitable.scala
@@ -17,7 +17,7 @@ import scala.util.Timeout
trait Awaitable[+T] {
@implicitNotFound(msg = "Waiting must be done by calling `await(timeout) b`, where `b` is the `Awaitable` object.")
- def await(timeout: Timeout)(implicit canblock: CanBlock): T
+ def await(timeout: Timeout)(implicit canawait: CanAwait): T
}
diff --git a/src/library/scala/concurrent/ExecutionContext.scala b/src/library/scala/concurrent/ExecutionContext.scala
index 2de080a822..ebeeca995e 100644
--- a/src/library/scala/concurrent/ExecutionContext.scala
+++ b/src/library/scala/concurrent/ExecutionContext.scala
@@ -10,7 +10,7 @@ import scala.concurrent.forkjoin.{ ForkJoinPool, RecursiveTask => FJTask, Recurs
trait ExecutionContext {
- protected implicit object CanBlockEvidence extends CanBlock
+ protected implicit object CanAwaitEvidence extends CanAwait
def execute(runnable: Runnable): Unit
diff --git a/src/library/scala/concurrent/Future.scala b/src/library/scala/concurrent/Future.scala
index bb1612876c..ada6736132 100644
--- a/src/library/scala/concurrent/Future.scala
+++ b/src/library/scala/concurrent/Future.scala
@@ -344,5 +344,7 @@ object Future {
p.future
}
-
+
+ @inline def apply[T](body: =>T)(implicit executor: ExecutionContext): Future[T] = executor.future(body)
+
}
diff --git a/src/library/scala/concurrent/default/TaskImpl.scala b/src/library/scala/concurrent/default/TaskImpl.scala
index dac6400b45..52d2ea8cfb 100644
--- a/src/library/scala/concurrent/default/TaskImpl.scala
+++ b/src/library/scala/concurrent/default/TaskImpl.scala
@@ -122,7 +122,7 @@ private[concurrent] class PromiseImpl[T](context: ExecutionContextImpl)
}
}
- def await(timeout: Timeout)(implicit canblock: scala.concurrent.CanBlock): T = getState match {
+ def await(timeout: Timeout)(implicit canawait: scala.concurrent.CanAwait): T = getState match {
case Success(res) => res
case Failure(t) => throw t
case _ =>
@@ -196,7 +196,7 @@ private[concurrent] class TaskImpl[T](context: ExecutionContextImpl, body: => T)
def tryCancel(): Unit =
tryUnfork()
- def await(timeout: Timeout)(implicit canblock: CanBlock): T = {
+ def await(timeout: Timeout)(implicit canawait: CanAwait): T = {
join() // TODO handle timeout also
(updater.get(this): @unchecked) match {
case Success(r) => r
@@ -272,7 +272,7 @@ private[concurrent] final class ExecutionContextImpl extends ExecutionContext {
// TODO add exception handling here!
val mb = new ForkJoinPool.ManagedBlocker {
def block() = {
- res = b.await(timeout)(CanBlockEvidence)
+ res = b.await(timeout)(CanAwaitEvidence)
blockingDone = true
true
}