diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-12-11 19:56:22 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-12-11 19:56:22 +0100 |
commit | 3bfd83971ec48102fd1e711236f5a313c6a1ce3e (patch) | |
tree | a75d929d7fc7e2c0ac4b5e620a4019a4936abeeb /docs/examples/pilib/elasticBuffer.scala | |
parent | e1c6dd965aa4249f715bbb2832df182cc5505853 (diff) | |
parent | 9cdbe28c00b39c51ae9afe3066c8b44a6e5f6f96 (diff) | |
download | scala-3bfd83971ec48102fd1e711236f5a313c6a1ce3e.tar.gz scala-3bfd83971ec48102fd1e711236f5a313c6a1ce3e.tar.bz2 scala-3bfd83971ec48102fd1e711236f5a313c6a1ce3e.zip |
Merge commit '9cdbe28' into merge/2.10.x-to-master
Conflicts:
build.examples.xml
build.xml
docs/examples/actors/pingpong.scala
docs/examples/fors.scala
docs/examples/iterators.scala
docs/examples/jolib/Ref.scala
docs/examples/jolib/parallelOr.scala
docs/examples/monads/callccInterpreter.scala
docs/examples/monads/directInterpreter.scala
docs/examples/monads/errorInterpreter.scala
docs/examples/monads/simpleInterpreter.scala
docs/examples/monads/stateInterpreter.scala
docs/examples/parsing/ArithmeticParser.scala
docs/examples/patterns.scala
docs/examples/pilib/elasticBuffer.scala
docs/examples/pilib/handover.scala
docs/examples/pilib/piNat.scala
docs/examples/typeinf.scala
src/build/pack.xml
Diffstat (limited to 'docs/examples/pilib/elasticBuffer.scala')
-rw-r--r-- | docs/examples/pilib/elasticBuffer.scala | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/docs/examples/pilib/elasticBuffer.scala b/docs/examples/pilib/elasticBuffer.scala deleted file mode 100644 index c173735dbb..0000000000 --- a/docs/examples/pilib/elasticBuffer.scala +++ /dev/null @@ -1,77 +0,0 @@ -package examples.pilib - -object elasticBuffer { - - import scala.concurrent.pilib._ - - /** - * Recursive type for channels that carry a "String" channel and - * an object of the type we define. - */ - class MetaChan extends Chan[Tuple2[Chan[String], MetaChan]] - - def Buffer(put: Chan[String], get: Chan[String]): Unit = { - - /** - * An empty buffer cell, ready to pass on (o,r) to the left. - */ - def Bl(i:Chan[String], l: MetaChan, - o: Chan[String], r: MetaChan): unit = - choice ( - l((o,r)) * (System.out.println("Removed one cell.")), - i * (inp => Cl(i, l, o, r, inp)) - ) - - /** - * A buffer cell containing a value, ready to receive (o,r) from the right. - */ - def Cl(i: Chan[String], l: MetaChan, - o: Chan[String], r: MetaChan, content: String): Unit = - choice ( - o(content) * (Bl(i,l,o,r)), - i * (inp => Dl(i,l,o,r,content, inp)), - r * ( { case (newo, newr) => Cl(i,l,newo,newr,content) }) - ) - - /** - * Two joined buffer cells, of type Cl - */ - def Dl(i: Chan[String], l: MetaChan, - o: Chan[String], r: MetaChan, - content: String, inp: String): Unit = { - val newlr = new MetaChan - val newio = new Chan[String] - spawn < Cl(i, l, newio, newlr, inp) | Cl(newio, newlr, o, r, content) > - } - - // l and r channels for the leftmost and rightmost cell, respectively. - val unused1 = new MetaChan - val unused2 = new MetaChan - - Bl(put, unused1, get, unused2) - } - - val random = new java.util.Random() - - def Producer(n: int, put: Chan[String]): Unit = { - Thread.sleep(1 + random.nextInt(1000)) - val msg = "object " + n - put.write(msg) - System.out.println("Producer gave " + msg) - Producer(n + 1, put) - } - - def Consumer(get: Chan[String]): Unit = { - Thread.sleep(1 + random.nextInt(1000)) - val msg = get.read - System.out.println("Consumer took " + msg) - Consumer(get) - } - - def main(args: Array[String]): Unit = { - val put = new Chan[String] - val get = new Chan[String] - spawn < Producer(0, put) | Consumer(get) | Buffer(put, get) > - } - -} |