private StreamTcp.IncomingConnection ConnectionFor(Tcp.Connected connected, IActorRef connection) { _connectionFlowsAwaitingInitialization.IncrementAndGet(); var tcpFlow = Flow.FromGraph(new IncomingConnectionStage(connection, connected.RemoteAddress, _stage._halfClose)) .Via(new Detacher <ByteString>()) // must read ahead for proper completions .MapMaterializedValue(unit => { _connectionFlowsAwaitingInitialization.DecrementAndGet(); return(unit); }); // FIXME: Previous code was wrong, must add new tests var handler = tcpFlow; if (_stage._idleTimeout.HasValue) { handler = tcpFlow.Join(TcpIdleTimeout.Create(_stage._idleTimeout.Value, connected.RemoteAddress)); } return(new StreamTcp.IncomingConnection(connected.LocalAddress, connected.RemoteAddress, handler)); }
protected override void Shutdown() { Stops.IncrementAndGet(); base.Shutdown(); }