diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-06-27 16:06:21 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-06-27 16:06:21 +0200 |
commit | f21d2de9405d5dd36f108a380f558cab930c1205 (patch) | |
tree | f612d87ab811ed203a8050e2da9fedfff7bbc06d /samples | |
parent | f0a76248141f6992d2a3622572f86810abfd07b5 (diff) | |
download | akka-serial-f21d2de9405d5dd36f108a380f558cab930c1205.tar.gz akka-serial-f21d2de9405d5dd36f108a380f558cab930c1205.tar.bz2 akka-serial-f21d2de9405d5dd36f108a380f558cab930c1205.zip |
add error management
Diffstat (limited to 'samples')
-rw-r--r-- | samples/rwc/src/main/scala/com/github/jodersky/flow/example/Main.scala | 19 | ||||
-rw-r--r-- | samples/rwc/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala | 14 |
2 files changed, 14 insertions, 19 deletions
diff --git a/samples/rwc/src/main/scala/com/github/jodersky/flow/example/Main.scala b/samples/rwc/src/main/scala/com/github/jodersky/flow/example/Main.scala index 985513b..518efc2 100644 --- a/samples/rwc/src/main/scala/com/github/jodersky/flow/example/Main.scala +++ b/samples/rwc/src/main/scala/com/github/jodersky/flow/example/Main.scala @@ -1,20 +1,15 @@ package com.github.jodersky.flow package example -import scala.concurrent.ExecutionContext.Implicits.global -import scala.util.Success -import scala.util.Try -import com.github.jodersky.flow.Serial -import com.github.jodersky.flow.Serial._ import akka.actor.ActorSystem import akka.actor.Props -import akka.io.IO +import akka.actor.actorRef2Scala import akka.util.ByteString -import com.github.jodersky.flow.internal.InternalSerial object Main { def main(args: Array[String]): Unit = { + /*val isInt = Try(args(1).toInt) match { case Success(_) => true; case _ => false } if (!(args.length == 2 && isInt)) { println("invalid parameters") @@ -25,18 +20,18 @@ object Main { val port = "/dev/ttyACM0" val baud = 115200 - // InternalSerial.debug(true) - + // InternalSerial.debug(true) + implicit val system = ActorSystem("flow") val serial = system.actorOf(Props(classOf[SerialHandler], port, baud), name = "serial-handler") - + readLine() serial ! ByteString("hello back".getBytes()) - + readLine() serial ! "close" readLine() - + system.shutdown() } }
\ No newline at end of file diff --git a/samples/rwc/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala b/samples/rwc/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala index ddcde8d..e616763 100644 --- a/samples/rwc/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala +++ b/samples/rwc/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala @@ -24,23 +24,23 @@ class SerialHandler(port: String, baud: Int) extends Actor with ActorLogging { case Opened(port) => { log.info(s"Port ${port} is now open.") - context watch sender context become opened(sender) } } def opened(operator: ActorRef): Receive = { - case Terminated(`operator`) => { - log.info("operator down, handler exiting") - context.stop(self) - } + case Received(data) => { log.info("Received data: " + formatData(data)) log.info("As string: " + new String(data.toArray, "UTF-8")) } case Wrote(data) => log.info("Got ACK for writing data: " + formatData(data)) - case Closed => { - log.info("Operator closed, exiting handler.") + case Closed(None) => { + log.info("Operator closed normally, exiting handler.") + context stop self + } + case Closed(Some(ex)) => { + log.info("Operator crashed, exiting handler.") context stop self } case "close" => { |