summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--example/src/main/scala/example/main.scala27
-rw-r--r--shared/src/main/scala/escale/api.scala3
-rw-r--r--shared/src/test/scala/escale/SyntaxTest.scala4
3 files changed, 20 insertions, 14 deletions
diff --git a/example/src/main/scala/example/main.scala b/example/src/main/scala/example/main.scala
index a8470a2..473cce0 100644
--- a/example/src/main/scala/example/main.scala
+++ b/example/src/main/scala/example/main.scala
@@ -21,7 +21,7 @@ object Main extends App {
val p2 = async {
var a = 0
- while ({a = await(ch.take()); a} < 5) {
+ while ({ a = await(ch.take()); a } < 5) {
println(a)
}
}
@@ -53,7 +53,7 @@ object SelectTest extends App {
val r = async {
await(Channel.select(ch, t)) match {
- case (`t`, _) => println("timeout")
+ case (`t`, _) => println("timeout")
case (`ch`, value: Int) => await(out.put(value.toString)),
}
await(out.take())
@@ -63,7 +63,6 @@ object SelectTest extends App {
}
-
object Select2Test extends App {
val ch = Channel[Int](0)
@@ -78,18 +77,26 @@ object Select2Test extends App {
// }
Channel.select2(
- t -> {u: Unit => println("timeout")},
- ch -> {v: Int => println(v); out.put(v.toString); ()}
+ t -> { u: Unit =>
+ println("timeout")
+ },
+ ch -> { v: Int =>
+ println(v); out.put(v.toString); ()
+ }
)
val r = async {
- await(Channel.select2(
- t -> {u: Unit => println("timeout")},
- out -> {s: String => println(s)}
- ))
+ await(
+ Channel.select2(
+ t -> { u: Unit =>
+ println("timeout")
+ },
+ out -> { s: String =>
+ println(s)
+ }
+ ))
}
Await.result(r, 10.seconds)
println(r)
-
}
diff --git a/shared/src/main/scala/escale/api.scala b/shared/src/main/scala/escale/api.scala
index ac475ae..8a72cea 100644
--- a/shared/src/main/scala/escale/api.scala
+++ b/shared/src/main/scala/escale/api.scala
@@ -5,6 +5,7 @@ import scala.annotation.tailrec
import scala.collection.mutable
import scala.concurrent.{Future, Promise}
+// https://vimeo.com/100518968
class Channel[A](capacity: Int) {
require(capacity >= 0, "capacity must be >= 0")
import Channel._
@@ -88,8 +89,6 @@ object Channel {
c
}
- //def select(ops: Op[_]*): Unit = ???
-
def select(channels: Channel[_]*): Future[(Channel[_], Any)] = {
val flag = new Flag
val result = Promise[(Channel[_], Any)]
diff --git a/shared/src/test/scala/escale/SyntaxTest.scala b/shared/src/test/scala/escale/SyntaxTest.scala
index fffcbe9..6225839 100644
--- a/shared/src/test/scala/escale/SyntaxTest.scala
+++ b/shared/src/test/scala/escale/SyntaxTest.scala
@@ -30,8 +30,8 @@ object SyntaxTest extends TestSuite {
val Ch1 = chan[Int]()
val Ch2 = chan[Int]()
- go {/*Thread.sleep(1);*/ Ch1 !< 1}
- go {/*Thread.sleep(1);*/ Ch2 !< 1}
+ go {Thread.sleep(1); Ch1 !< 1}
+ go {Thread.sleep(1); Ch2 !< 1}
select(Ch1, Ch2) match {
case (Ch1, _) => "ch1 was first"