struct raft_fsm — Application state machine

The FSM struct defines the interface that the application’s state machine must implement in order to be replicated by Raft.

Data types

struct raft_fsm

Hold pointers to an actual implementation of the FSM interface.

Public members

void* data

Space for user-defined arbitrary data. C-Raft does not use and does not touch this field.

int version

API version implemented by this instance. Currently 1.

int (*apply)(struct raft_fsm *fsm, const struct raft_buffer *buf, void **result)

Apply a committed RAFT_COMMAND entry to the state machine.

int (*snapshot)(struct raft_fsm *fsm, struct raft_buffer *bufs[], unsigned *n_bufs)

Take a snapshot of the state machine.

int (*restore)(struct raft_fsm *fsm, struct raft_buffer *buf)

Restore a snapshot of the state machine.