All, I've made some heavy revisions based on feedback so far and have pushed publicly.
You can see the changes on master (or by pulling the 0.2.0 pre-release tagged version): mordil/nio-redis
For a diff, you can see the pull request
Here is an overview of the changes:
Renaming
Redismodule (Dispatch abstraction) has been changed toDispatchRedisRedisDataand references to it have been changed toRESPValueor justRESPNIORedis(the class) has been renamed toRedisDriver- Other
NIO*types have lost theNIOprefix RedisMessengeris nowRedisCommandHandlerNIORedis.ExecutionModelis nowRedisDriver.ThreadOwnershipModel
Public Interface
RESPDecoderandRESPEncoderare now public, as well as their respective parsing methods.RedisCommandHandleris now anopenclassisRunningandisClosedproperties are now immutable and publicRedisPipeline(formerlyNIORedisPipeline) now has acountproperty of how many commands have been queued.
Implementation
RedisCommandHandler(formerlyRedisMessenger) has been completely re-written as aChannelDuplexHandlerthat works more through protocol method invocations by NIO than before - while still providing a way to queue callbacks to receive Redis command responsesRedisPipelinehas been completely re-written to more directly work with NIOChannelby creating a new constructRedisCommandContextthat is used byRedisCommandHandler