From 7a6d66399eab9e29b0e4270b1c7e47c20471c91d Mon Sep 17 00:00:00 2001 From: aleksandar Date: Thu, 12 Jan 2012 15:41:53 +0100 Subject: Refactor blockable to awaitable on several places. --- src/library/scala/concurrent/Awaitable.scala | 2 +- src/library/scala/concurrent/ExecutionContext.scala | 2 +- src/library/scala/concurrent/Future.scala | 4 +++- src/library/scala/concurrent/default/TaskImpl.scala | 6 +++--- 4 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') 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 } -- cgit v1.2.3