summaryrefslogtreecommitdiff
path: root/src/actors
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2006-12-05 20:15:25 +0000
committerPhilipp Haller <hallerp@gmail.com>2006-12-05 20:15:25 +0000
commit7806f3f00f7889170f5ddf84a7c0140b2248a735 (patch)
tree43eaebbb0f0de759ec4d1fb4418aff7f988da582 /src/actors
parent80eb08f5a1de98ebbec0e989928d665c7061c07c (diff)
downloadscala-7806f3f00f7889170f5ddf84a7c0140b2248a735.tar.gz
scala-7806f3f00f7889170f5ddf84a7c0140b2248a735.tar.bz2
scala-7806f3f00f7889170f5ddf84a7c0140b2248a735.zip
Fixed type error in Channel
Diffstat (limited to 'src/actors')
-rw-r--r--src/actors/scala/actors/Channel.scala28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/actors/scala/actors/Channel.scala b/src/actors/scala/actors/Channel.scala
index 3d8c8cab11..cae5f3d1b9 100644
--- a/src/actors/scala/actors/Channel.scala
+++ b/src/actors/scala/actors/Channel.scala
@@ -39,7 +39,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
Actor.selfs.get(currentThread).asInstanceOf[Actor]
}
- private var received: Msg = _
+ private var received: Option[Msg] = None
private[actors] val waitingForNone = (m: Msg) => false
private[actors] var waitingFor: Msg => boolean = waitingForNone
@@ -54,7 +54,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
receiver.tick()
if (waitingFor(msg) && ((waitingForSender eq null) ||
(waitingForSender == sender))) {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
waitingFor = waitingForNone
waitingForSender = null
@@ -130,7 +130,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor(p._1)
}) match {
case Some(Pair(msg, sender)) => {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
}
case None => {
@@ -145,7 +145,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
isSuspended = false
waitingFor = waitingForNone
}
- val result = f(received)
+ val result = f(received.get)
receiver.popSender()
result
}
@@ -174,7 +174,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor(p._1) && p._2 == r
}) match {
case Some(Pair(msg, sender)) => {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
}
case None => {
@@ -190,7 +190,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor = waitingForNone
waitingForSender = null
}
- val result = f(received)
+ val result = f(received.get)
receiver.popSender()
result
}
@@ -230,17 +230,17 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor(p._1)
}) match {
case Some(Pair(msg, sender)) => {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
}
case None => {
// acquire lock because we might call wait()
this.synchronized {
isSuspended = true
-// received = null Note: I had to disable this, as it is not type-correct!
+ received = None
receiver.suspendActorFor(msec)
Debug.info("received: "+received)
- if (received == null) {
+ if (received.isEmpty) {
Debug.info("no message received after "+msec+" millis")
if (f.isDefinedAt(TIMEOUT)) {
Debug.info("executing TIMEOUT action")
@@ -258,7 +258,7 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
isSuspended = false
waitingFor = waitingForNone
}
- val result = f(received)
+ val result = f(received.get)
receiver.popSender()
result
}
@@ -289,10 +289,10 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor(p._1)
}) match {
case Some(Pair(msg, sender)) => {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
waitingFor = waitingForNone
- receiver.scheduleActor(f, received)
+ receiver.scheduleActor(f, received.get)
}
case None => {
this.synchronized {
@@ -334,10 +334,10 @@ class Channel[Msg] extends InputChannel[Msg] with OutputChannel[Msg] {
waitingFor(p._1)
}) match {
case Some(Pair(msg, sender)) => {
- received = msg
+ received = Some(msg)
receiver.pushSender(sender)
waitingFor = waitingForNone
- receiver.scheduleActor(f, received)
+ receiver.scheduleActor(f, received.get)
}
case None => {
this.synchronized {