From bbe2a3beb7cd3aeaec3180afa73073c2f1e0425f Mon Sep 17 00:00:00 2001 From: Derek Williams Date: Mon, 21 Feb 2011 18:28:17 -0700 Subject: [PATCH] add Future.filter for use in for comprehensions --- akka-actor/src/main/scala/akka/dispatch/Future.scala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/akka-actor/src/main/scala/akka/dispatch/Future.scala b/akka-actor/src/main/scala/akka/dispatch/Future.scala index a4f2fb13d2..fca5cd2a2b 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Future.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Future.scala @@ -198,6 +198,12 @@ sealed trait Future[T] { f(optr.get) } + final def filter(p: T => Boolean): Future[T] = { + val f = new DefaultCompletableFuture[T](timeoutInNanos, NANOS) + onComplete (_.value.foreach(_.fold(f.completeWithException, r => f.complete(try { if (p(r)) Right(r) else Left(new MatchError(r)) } catch { case e => Left(e) })))) + f + } + /** * Returns the current result, throws the exception is one has been raised, else returns None */