Add documentation to ReplicatorEntry
Move OLogToReplicatorEntryCodec to its own file in c5db-olog
Remove extraneous println from OLogToReplicatorEntryCodec
Add a test of ReplicatorEntry decoding
Add a getAvailableModulePorts method to ModuleServer, and implement it in all implementations; also, deprecate getModules (because it is synchronous and there is an async alternative)
Change BeaconService to handle its own Fiber management, and to interact with the module port assignments on the fiber only.
Rename StandaloneReplicatorTest to C5GeneralizedReplicationServiceTest to agree with the class being tested
Remove redundant test method from C5GeneralizedReplicationServiceTest
Fix that C5GeneralizedReplicationService was not starting the replicator it created
Greatly reduce the responsibilities of class C5GeneralizedReplicationService, rendering it only the minimum necessary adapter to correctly implement interface GeneralizedReplicationService, and having all dependent modules created and handled externally. Change the test code (back) to handle this.
Implement a new method on GeneralizedReplicator, isAvailableFuture(), by which users can be notified that the replicator is ready for use; test now passes
Add an exception handler for SimpleC5ModuleListener, so that exceptions thrown by failing modules are not lost
BeaconService and ReplicatorService to fail if unable to bind to their respective ports
Improve error logging in ReplicatorService and BeaconService; also, check the channel futures returned by netty write calls for failure
Add test of 3-replicator-quorum
Fix problem in ReplicatorService where fiber may have been disposed and nulled out before it can be used to help shut down netty
Change GeneralizedReplicator interface so it returns the seqNum as soon as possible, rather than waiting until after the replication has completed.
Repair failing OLogShimTest; required changing the OLogShimTest to use GeneralizedReplicator, and simplifying the OLogShim constructor
Repair BasicTableCreationTest, which was failing because its assumptions about the methods invoked against the mocked Replicator were incorrect
Enable fsync (i.e., FileChannel#force(true)) for QuorumDelegatingLog