reconnect on failure

This commit is contained in:
Thibault Duplessis 2015-07-25 12:37:46 +02:00
parent db0c87ac05
commit 44b3476eb1
2 changed files with 5 additions and 7 deletions

View file

@ -15,7 +15,7 @@ private[relay] final class FICS(config: FICS.Config) extends Actor with Stash wi
var send: String => Unit = _
val telnet = context.actorOf(Props(classOf[Telnet], config.remote, self), name = "telnet")
val telnet = context.actorOf(Props(classOf[Telnet], () => config.remote, self), name = "telnet")
startWith(Connect, none)

View file

@ -6,13 +6,13 @@ import akka.util.ByteString
import java.net.InetSocketAddress
private[relay] final class Telnet(
remote: InetSocketAddress,
remote: () => InetSocketAddress,
listener: ActorRef) extends Actor {
import Tcp._
import context.system
IO(Tcp) ! Connect(remote, options = List(
IO(Tcp) ! Connect(remote(), options = List(
SO.TcpNoDelay(false)
))
@ -24,7 +24,7 @@ private[relay] final class Telnet(
listener ! "connect failed"
context stop self
case Connected(remote, local) =>
case Connected(_, local) =>
val connection = sender()
connection ! Register(self)
listener ! Telnet.Connection({ str =>
@ -52,8 +52,7 @@ private[relay] final class Telnet(
case "close" =>
connection ! Close
case _: ConnectionClosed =>
listener ! Telnet.Close
context stop self
sys error "Telnet connection has closed!"
}
}
}
@ -68,5 +67,4 @@ object Telnet {
case class BufferUntil(str: Option[String])
case object ConnectFailed
case object WriteFailed
case object Close
}