Commit 36daccba authored by Willem Thiart's avatar Willem Thiart
Browse files

Add raft_get_my_node

parent 547e6175
......@@ -475,6 +475,10 @@ int raft_recv_entry(raft_server_t* me,
* @return server's node ID; -1 if it doesn't know what it is */
int raft_get_nodeid(raft_server_t* me);
/**
* @return the server's node */
raft_node_t* raft_get_my_node(raft_server_t *me_);
/**
* @return currently configured election timeout in milliseconds */
int raft_get_election_timeout(raft_server_t* me);
......
......@@ -33,7 +33,10 @@ void raft_set_request_timeout(raft_server_t* me_, int millisec)
int raft_get_nodeid(raft_server_t* me_)
{
return raft_node_get_id(((raft_server_private_t*)me_)->node);
raft_server_private_t* me = (raft_server_private_t*)me_;
if (!me->node)
return -1;
return raft_node_get_id(me->node);
}
int raft_get_election_timeout(raft_server_t* me_)
......@@ -151,6 +154,18 @@ raft_node_t* raft_get_node(raft_server_t *me_, int nodeid)
return NULL;
}
raft_node_t* raft_get_my_node(raft_server_t *me_)
{
raft_server_private_t* me = (raft_server_private_t*)me_;
int i;
for (i = 0; i < me->num_nodes; i++)
if (raft_get_nodeid(me_) == raft_node_get_id(me->nodes[i]))
return me->nodes[i];
return NULL;
}
raft_node_t* raft_get_node_from_idx(raft_server_t* me_, const int idx)
{
raft_server_private_t* me = (raft_server_private_t*)me_;
......
......@@ -22,6 +22,14 @@ void TestRaft_server_voted_for_records_who_we_voted_for(CuTest * tc)
CuAssertTrue(tc, 2 == raft_get_voted_for(r));
}
void TestRaft_server_get_my_node(CuTest * tc)
{
void *r = raft_new();
raft_node_t* me = raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0);
CuAssertTrue(tc, me == raft_get_my_node(r));
}
void TestRaft_server_idx_starts_at_1(CuTest * tc)
{
void *r = raft_new();
......
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