class ChannelInitializer implements ConnectionObserver {

    @Override
    public void connectionEstablished()
    {
        outboundMessageSender.initialiseOutboundChannel(transport.getWritableByteChannel());
        channelReaderExecutorService.execute(new Runnable()
        {
            @Override
            public void run()
            {
                final ReadableByteChannel readableByteChannel = transport.getReadableByteChannel();
                try
                {
                    inputStreamReader.blockingStart(readableByteChannel);
                }
                catch (RuntimeException e)
                {
                    LOGGER.error("Exception thrown while reading from stream, channel: " + readableByteChannel, e);
                }
            }
        });
        countDownLatch.countDown();
    }

    public  ChannelInitializer(final Transport transport, final ByteChannelReader inputStreamReader, final OutboundMessageHandler outboundMessageSender, Executor channelReaderExecutorService);

}