diff options
Diffstat (limited to 'flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala')
-rw-r--r-- | flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala index 6b06206..c4401e7 100644 --- a/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala +++ b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala @@ -1,19 +1,33 @@ package com.github.jodersky.flow.samples.terminal import akka.actor._ +import java.io.BufferedReader +import java.io.InputStreamReader -case object Read -case class ConsoleInput(in: String) class ConsoleReader extends Actor { import context._ - + import ConsoleReader._ + def receive = { - case Read => read() + case Read => read() match { + case Some(input) => parent ! ConsoleInput(input) + case None => parent ! EOT + } } - - def read() = { - val in = Console.readLine() - parent ! ConsoleInput(in) + + def read(): Option[String] = { + val eot = 4 + val line = Console.readLine + if (line == ":q") None else Some(line) } +} + +object ConsoleReader { + + case object Read + + case object EOT + case class ConsoleInput(in: String) + }
\ No newline at end of file |