C implementation of the Raft Consensus protocol, BSD licensed
See raft.h for full documentation.
A CRaft user needs to implement all the functions in raft_cbs_t.
Networking is out of scope for this project. The implementor will need to do all the plumbing. Currently, this is done by:
- Implementing all the callbacks within raft_cbs_t; and
- Calling raft_recv_* functions with msg_* message structs
There are no dependencies, however https://github.com/willemt/linked-List-queue is required for testing.
$make tests
- Member changes
- Log compaction
- More scenario tests (ie. more varied network partition scenarios)
- Usage example