summaryrefslogtreecommitdiff
path: root/docs/examples/actors/Joins.scala
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/actors/Joins.scala')
-rw-r--r--docs/examples/actors/Joins.scala16
1 files changed, 7 insertions, 9 deletions
diff --git a/docs/examples/actors/Joins.scala b/docs/examples/actors/Joins.scala
index 29ff220709..85105ec178 100644
--- a/docs/examples/actors/Joins.scala
+++ b/docs/examples/actors/Joins.scala
@@ -3,11 +3,11 @@ package examples.actors
import scala.actors.Actor._
abstract class Producer[T] extends Iterator[T] {
-
- protected def produce(x: T): unit = coordinator !? HasValue(x)
+ protected def produce(x: T): unit = coordinator ! HasValue(x)
protected def produceValues: unit
- def hasNext: boolean = { setCurrent(); !current.isEmpty }
+ def hasNext = { setCurrent(); !current.isEmpty }
+
def next: T = {
setCurrent()
val res = current.get
@@ -16,7 +16,8 @@ abstract class Producer[T] extends Iterator[T] {
}
private var current: Option[T] = null
- private def setCurrent() = if (current == null) current = (coordinator !? Next).asInstanceOf[Option[T]]
+ private def setCurrent() =
+ if (current == null) current = (coordinator !? Next).asInstanceOf[Option[T]]
private case class HasValue(value: T)
private case object Next
@@ -24,26 +25,23 @@ abstract class Producer[T] extends Iterator[T] {
private case object Continue
private val coordinator = actor {
- while (true) {
+ while (true)
receive {
case Next =>
reply {
receive {
case HasValue(v) =>
- reply()
Some(v)
case Done =>
None
}
}
}
- }
}
actor {
produceValues
- coordinator !? Done
- ()
+ coordinator ! Done
}
}