Beispiel #1
0
void sender_poll_msgs(void* s)
{
    sender_t* me = s;
    msg_t* m;

    while ((m = llqueue_poll(me->inbox)))
    {
        switch (m->type)
        {
        case RAFT_MSG_APPENDENTRIES:
            raft_recv_appendentries(me->raft, m->sender, m->data);
            break;
        case RAFT_MSG_APPENDENTRIES_RESPONSE:
            raft_recv_appendentries_response(me->raft, m->sender, m->data);
            break;
        case RAFT_MSG_REQUESTVOTE:
            raft_recv_requestvote(me->raft, m->sender, m->data);
            break;
        case RAFT_MSG_REQUESTVOTE_RESPONSE:
            raft_recv_requestvote_response(me->raft, m->sender, m->data);
            break;
        case RAFT_MSG_ENTRY:
            raft_recv_entry(me->raft, m->sender, m->data);
            break;
        case RAFT_MSG_ENTRY_RESPONSE:
            //raft_recv_entry_response(me->raft, m->sender, m->data);
            break;

        }
    }
}
Beispiel #2
0
void TestRaft_server_increase_votes_for_me_when_receive_request_vote_response(
    CuTest * tc
    )
{
    void *r = raft_new();
    raft_add_node(r, (void*)1, 1);
    raft_add_node(r, (void*)2, 0);
    raft_set_current_term(r, 1);
    CuAssertTrue(tc, 0 == raft_get_nvotes_for_me(r));

    msg_requestvote_response_t rvr;
    memset(&rvr, 0, sizeof(msg_requestvote_response_t));
    rvr.term = 1;
    rvr.vote_granted = 1;
    raft_recv_requestvote_response(r, 1, &rvr);
    CuAssertTrue(tc, 1 == raft_get_nvotes_for_me(r));
}
Beispiel #3
0
int RaftConsensus::onReceivedRequestVoteResponse(const Connection::Ptr& pConnection, msg_requestvote_response_t& data)
{
  OSS::mutex_lock lock(_raftMutex);
  return raft_recv_requestvote_response(_raft, pConnection->getNode().node(), &data);
}