Renamed abstract Dispatcher class to BaseLifecycleDispatcher to be more consistent with its base class, the BaseDispatcher.
Added a simple $ helper to make it less code to do a String.format() in topic strings. Now you can succinctly format topic strings like `$("%s:%s", namespace, topic)`.
Reflect new name of BaseLifecycleDispatcher superclass.
Added reconnect accept logic into a dispatch to the Netty event loop to do the accept on the "next tick" to avoid a potential race condition with connection consumers.
Default to BlockingWaitStrategy to avoid potential high CPU in some situations. BusySpin and Yielding wait strategies can be utilized by creating a RingBufferDispatcher with those specifications.
Tweak ProcessorThroughputTests to measure raw producer throughput.
Tweak ProcessorThroughputTests to measure raw producer throughput.
Ensure that read idle does not fire when data's being read

The IdleStateHandler that is added to the pipeline to handle read
idle timeouts was being added as the last handler. Crucially, this
places it after NettyTcpConnectionChannelInboundHandler which does
not pass read events any further down the pipeline, thereby preventing
read events from reaching the IdleStateHandler. This meant that
IdleStateHandler's channelRead method was never being driven causing
it to timeout prematurely.

This problem has been addressed by using addFirst() to add the
IdleStateHandler to the start of the pipeline. This ensures that
it's positioned before NettyTcpConnectionChannelInboundHandler,
receives read events and therefore has its channelRead method driven
as required.

The IdleStateHandler used for write idle timeouts is left in its
position at the end of the pipeline where it will see write events.

The all idle timeout for both the read idle and write idle state
handlers has been set to zero to disable it. The all idle timeout
results in an ALL_IDLE event being fired, but only READ_IDLE and
WRITE_IDLE events were being acted upon.

Unit tests have been added to ensure that read idle does not fire
when data is being read from the connection and that write idle does
not fire when data is being written to the connection.
Merge pull request #166 from wilkinsona/idle-timeouts

Ensure that read idle does not fire when data's being read
Fixes #167 Reverses the order in which the EventHandler and ExceptionHandler are assigned so that a default ExceptionHandler isn't used as it apparently is if you set the EventHandlers first.
Added SSL and Netty ChannelPipeline support to TcpClient and TcpServer.

Added a special subclass of ServerSocketOptions called NettyServerSocketOptions which provides a hook for configuring the ChannelPipeline via Consumer. Added a test case to cover using a Netty decoder.

Added a new options class called SslOptions which allows you to specify SSL parameters like the keystore file, password, TrustManager password, or even give a Supplier<TrustManager[]> for configuring your own TrustManagers (which is used in testing to enable "trust all" for clients so they don't error out on self-signed certificates). Also added a special SSLEngineSupplier that is used to create the SSLEngine for passing into the Netty handler. This could be reused in other implementations or anywhere an SSLEngine is needed. Also updated tests to check SSL support. Rolled the JsonCodec POJO test into the SSL test to check sending POJOs via JSON over SSL (probably useful for clustering).
Tweak path to keystore file for running on CI servers.
Ensure SslOptions test the keystore file path. Tweak tests for failure to read them.
Trying to figure out the correct path to use for keystore files on the build servers.
Trying to figure out the correct path to use for keystore files on the build servers.
Trying to figure out the correct path to use for keystore files on the build servers.
add include environment in groovy dsl, refactor to lazy build reactors on read (allow deferred overriding with inclusion)
change helper visibility on spring
default empty string for @Selector
Add MetaProperties to ReactorBuilder