Separated routing into its own method which is called from cluster.Send(). This allows users of the package to test whether or not a message should be delivered to the current Node or not.
Beginning to switch from channels to RWMutexes and refactor the joining algorithm.
Stop considering nodes that are already in the leafset as not inserted.
Start insinuating the neighborhood set. Keep counters for state table versions.
Switch to bson-encoding messages. Start to fix how node state is tracked.
Continuing to implement new joining algorithm. Check for empty nodes before inserting. Modify stateMask to be exported and to allow filtering specific rows and columns of the routing table.
go fmt .
Stub out announcing presence and repairing state tables.
Add filtering to the routingtable.list method. Flesh out stubs of repair and announce methods.
Finished new join algorithm. Passes all existing unit tests, needs new unit tests and integrations tests.
Protect against race conditions around node proximities.
Clear proximity cache every hour.
Switched back to JSON. Added some de-duplication to message sending. Fixed errors that were causing a race condition endless loop.
Prevent initial 'race condition' reporting.
Always persist the largest state table versions for nodes in the state tables. Fixes race condition.
Documented the algorithm Wendy follows.
Moved algorithm.md to docs folder. Adding missing documentation to the join algorithm.
Expose GetIP and SendToIP. Various bugfixes. Added benchmarks for leafset.
Support auto-configured ports from the OS, as per @unit3's suggestion (#17 and #18).
Added integration tests. Merged in the auto-assigned port fix.