Commit f1b9f401 authored by Willem Thiart's avatar Willem Thiart
Browse files

Add raft_clear

parent 08c63427
...@@ -327,6 +327,9 @@ raft_server_t* raft_new(); ...@@ -327,6 +327,9 @@ raft_server_t* raft_new();
* Frees all memory */ * Frees all memory */
void raft_free(raft_server_t* me); void raft_free(raft_server_t* me);
/** De-initialise Raft server. */
void raft_clear(raft_server_t* me);
/** Set callbacks and user data. /** Set callbacks and user data.
* *
* @param[in] funcs Callbacks * @param[in] funcs Callbacks
......
...@@ -9,6 +9,8 @@ void log_set_callbacks(log_t* me_, raft_cbs_t* funcs, void* raft); ...@@ -9,6 +9,8 @@ void log_set_callbacks(log_t* me_, raft_cbs_t* funcs, void* raft);
void log_free(log_t* me_); void log_free(log_t* me_);
void log_clear(log_t* me_);
/** /**
* Add entry to log. * Add entry to log.
* Don't add entry if we've already added this entry (based off ID) * Don't add entry if we've already added this entry (based off ID)
......
...@@ -87,6 +87,15 @@ void log_set_callbacks(log_t* me_, raft_cbs_t* funcs, void* raft) ...@@ -87,6 +87,15 @@ void log_set_callbacks(log_t* me_, raft_cbs_t* funcs, void* raft)
me->cb = funcs; me->cb = funcs;
} }
void log_clear(log_t* me_)
{
log_private_t* me = (log_private_t*)me_;
me->count = 0;
me->back = 0;
me->front = 0;
me->base = 0;
}
int log_append_entry(log_t* me_, raft_entry_t* c) int log_append_entry(log_t* me_, raft_entry_t* c)
{ {
log_private_t* me = (log_private_t*)me_; log_private_t* me = (log_private_t*)me_;
......
...@@ -71,6 +71,24 @@ void raft_free(raft_server_t* me_) ...@@ -71,6 +71,24 @@ void raft_free(raft_server_t* me_)
free(me_); free(me_);
} }
void raft_clear(raft_server_t* me_)
{
raft_server_private_t* me = (raft_server_private_t*)me_;
me->current_term = 0;
me->voted_for = -1;
me->timeout_elapsed = 0;
me->voting_cfg_change_log_idx = -1;
raft_set_state((raft_server_t*)me, RAFT_STATE_FOLLOWER);
me->current_leader = NULL;
me->commit_idx = 0;
me->last_applied_idx = 0;
me->num_nodes = 0;
me->node = NULL;
me->voting_cfg_change_log_idx = 0;
log_clear(me->log);
}
void raft_election_start(raft_server_t* me_) void raft_election_start(raft_server_t* me_)
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment