private NettyHandshakeServer CreateHandshakeServer(SocketChannel channel) { HandshakeServer handshakeServer = new HandshakeServer(_applicationProtocolRepository, _modifierProtocolRepository, new SimpleNettyChannel(channel, _log) ); handshakeServer.ProtocolStackFuture().whenComplete((protocolStack, failure) => onHandshakeComplete(protocolStack, channel, failure)); channel.closeFuture().addListener(f => { try { channel.parent().pipeline().fireUserEventTriggered(new ServerHandshakeFinishedEvent_Closed(ToSocketAddress(channel))); } catch (RejectedExecutionException) { } }); return(new NettyHandshakeServer(handshakeServer)); }