summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2006-10-02 15:29:29 +0000
committerPhilipp Haller <hallerp@gmail.com>2006-10-02 15:29:29 +0000
commit6c710d403e147a81eeb739e20aba07ba47c45b70 (patch)
treeca301ea58b9a9eb4ec403e4f94cc8b06b3ef9af2
parent942bb16fc5543c5876c4870e3de4bcc49ea9610f (diff)
downloadscala-6c710d403e147a81eeb739e20aba07ba47c45b70.tar.gz
scala-6c710d403e147a81eeb739e20aba07ba47c45b70.tar.bz2
scala-6c710d403e147a81eeb739e20aba07ba47c45b70.zip
Added method for defining an actor with a (type...
Added method for defining an actor with a (typed) input channel.
-rw-r--r--src/actors/scala/actors/Actor.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala
index 4397032b60..f6dc77d672 100644
--- a/src/actors/scala/actors/Actor.scala
+++ b/src/actors/scala/actors/Actor.scala
@@ -28,6 +28,15 @@ object Actor {
actor
}
+ def actor[a](ch: Channel[a])(body: => Unit): ActorThread = synchronized {
+ val actor = new ActorThread {
+ def act() = body
+ }
+ ch.receiver = actor
+ actor.start()
+ actor
+ }
+
def reactor(body: => Unit): Reactor = synchronized {
val reactor = new Reactor {
def act() = body
@@ -272,7 +281,7 @@ class ActorProxy(t: Thread) extends ThreadedActor {
def act(): Unit = {}
def exit(reason: String): Unit = {
exitReason = reason
- Thread.currentThread().interrupt()
+ t.interrupt()
}
}