summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/actors/scala/actors/Actor.scala4
-rw-r--r--src/actors/scala/actors/Future.scala10
2 files changed, 10 insertions, 4 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala
index df2ec1571b..3524f8cdb5 100644
--- a/src/actors/scala/actors/Actor.scala
+++ b/src/actors/scala/actors/Actor.scala
@@ -424,7 +424,9 @@ trait Actor extends OutputChannel[Any] {
/**
* Sends <code>msg</code> to this actor (asynchronous).
*/
- def !(msg: Any): Unit = send(msg, Actor.self.getReplyChannel)
+ def !(msg: Any): Unit = {
+ send(msg, Actor.self.getReplyChannel)
+ }
def forward(msg: Any): Unit = send(msg, Actor.sender.getReplyChannel)
diff --git a/src/actors/scala/actors/Future.scala b/src/actors/scala/actors/Future.scala
index 3ea87ae29d..f7f4220a15 100644
--- a/src/actors/scala/actors/Future.scala
+++ b/src/actors/scala/actors/Future.scala
@@ -12,8 +12,8 @@ package scala.actors
* @author Philipp Haller
*/
abstract class Future[T](val ch: InputChannel[Any]) extends Function0[T] {
+ protected var value: Option[T] = None
def isSet: boolean
- var value: Option[T] = None
}
/**
@@ -24,7 +24,7 @@ abstract class Future[T](val ch: InputChannel[Any]) extends Function0[T] {
*/
object Futures {
- def spawn[T](body: => T): Future[T] = {
+ def future[T](body: => T): Future[T] = {
case object Eval
val a = Actor.actor {
Actor.react {
@@ -34,7 +34,11 @@ object Futures {
a !! (Eval, { case any => any.asInstanceOf[T] })
}
- def alarm(t: long) = spawn { Thread.sleep(t) }
+ def alarm(t: long) = future {
+ Actor.reactWithin(t) {
+ case TIMEOUT => {}
+ }
+ }
def awaitEither[a, b](ft1: Future[a], ft2: Future[b]): Any = {
val FutCh1 = ft1.ch; val FutCh2 = ft2.ch