It makes more sense to put the helper near class gossip_digest not class
gossip_digest_syn. The helper is used by class gossip_digest_ack as
well. The moving makes the including more clear.
Left some of the stuff I got tired of converting in #if 0. Most likely
I'll need them later, and convert them then.
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
The gossiped application state is a list of key/version pairs. The keys
come from the application_state enum in this patch.
This is a trivial conversion of the Java enum. It is possible we may need
to add more features to this enum class (Java enums have all sorts of weird
capabilities beyond C++ enums), but with any luck, we won't...
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
version_generator is a trivial class which keeps a global "version"
counter, starting with 0 and counting up on a single Cassandra node.
It is used by the gossip protocol to keep a version number for each
piece of state information, so a remote node which gets two pieces of
conflicting gossip can know which is the newer information.
In Cassandra, the counter is an atomic integer. In our implementation,
because there will be just a single gossiper per SMP machine, and the
gossiper will run on a single CPU, it can be a regular integer. But
this doesn't really help performance anyway (the version number changes
rarely, so performance of this code is insignifcant).
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>