diff options
author | aleksandar <aleksandar@lampmac14.epfl.ch> | 2012-01-12 15:41:53 +0100 |
---|---|---|
committer | aleksandar <aleksandar@lampmac14.epfl.ch> | 2012-01-12 15:41:53 +0100 |
commit | 7a6d66399eab9e29b0e4270b1c7e47c20471c91d (patch) | |
tree | a702515173b190aaba9fbdc5c2080a165d2500bd | |
parent | aa568432a102287881a2a524f340926c1698165b (diff) | |
download | scala-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.scala | 2 | ||||
-rw-r--r-- | src/library/scala/concurrent/ExecutionContext.scala | 2 | ||||
-rw-r--r-- | src/library/scala/concurrent/Future.scala | 4 | ||||
-rw-r--r-- | src/library/scala/concurrent/default/TaskImpl.scala | 6 |
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 } |