From 40384ae21fc8bacbff40ed9d9bf30dca4c6f62d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Antonsson?= Date: Fri, 23 May 2014 11:33:06 +0200 Subject: [PATCH] =act #15265 Make TcpConnection handle Suspend/ResumeReading while waiting for Register --- akka-actor/src/main/scala/akka/io/TcpConnection.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/akka-actor/src/main/scala/akka/io/TcpConnection.scala b/akka-actor/src/main/scala/akka/io/TcpConnection.scala index 592a09f1ae..6557264dca 100644 --- a/akka-actor/src/main/scala/akka/io/TcpConnection.scala +++ b/akka-actor/src/main/scala/akka/io/TcpConnection.scala @@ -55,10 +55,16 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha if (TraceLogging) log.debug("[{}] registered as connection handler", handler) val info = ConnectionInfo(registration, handler, keepOpenOnPeerClosed, useResumeWriting) - if (!pullMode) doRead(info, None) // immediately try reading + doRead(info, None) // immediately try reading, pullMode is handled by readingSuspended context.setReceiveTimeout(Duration.Undefined) context.become(connected(info)) + case ResumeReading ⇒ + readingSuspended = false + + case SuspendReading ⇒ + readingSuspended = true + case cmd: CloseCommand ⇒ val info = ConnectionInfo(registration, commander, keepOpenOnPeerClosed = false, useResumeWriting = false) handleClose(info, Some(sender()), cmd.event)