示例#1
0
void ReplicatedLog::OnMessage(PaxosMessage& imsg)
{
    Log_Trace();
    bool processed;

    processed = false;
    if (imsg.type == PAXOS_PREPARE_REQUEST)
        processed = OnPrepareRequest(imsg);
    else if (imsg.IsPrepareResponse())
        processed = OnPrepareResponse(imsg);
    else if (imsg.type == PAXOS_PROPOSE_REQUEST)
        processed = OnProposeRequest(imsg);
    else if (imsg.IsProposeResponse())
        processed = OnProposeResponse(imsg);
    else if (imsg.IsLearn())
        processed = OnLearnChosen(imsg);
    else if (imsg.type == PAXOS_REQUEST_CHOSEN)
        processed = OnRequestChosen(imsg);
    else if (imsg.type == PAXOS_START_CATCHUP)
        processed = OnStartCatchup(imsg);
    else
        ASSERT_FAIL();

    if (processed)
        context->OnMessageProcessed();
}
示例#2
0
void PLeaseAcceptor::ProcessMsg(PLeaseMsg& msg_)
{
    msg = msg_;

    LOG_TRACE("ProcessMsg msg.paxosID: %llu, msg_: %llu",
              msg.paxosID, msg_.paxosID);
    assert (msg.paxosID == msg_.paxosID);
    if (msg.type == PLEASE_PREPARE_REQUEST)
        OnPrepareRequest();
    else if (msg.type == PLEASE_PROPOSE_REQUEST)
        OnProposeRequest();
    else
        ASSERT_FAIL();
}
示例#3
0
void ReplicatedLog::OnMessage(PaxosMessage& imsg)
{
    Log_Trace();
    
    if (imsg.type == PAXOS_PREPARE_REQUEST)
        OnPrepareRequest(imsg);
    else if (imsg.IsPrepareResponse())
        OnPrepareResponse(imsg);
    else if (imsg.type == PAXOS_PROPOSE_REQUEST)
        OnProposeRequest(imsg);
    else if (imsg.IsProposeResponse())
        OnProposeResponse(imsg);
    else if (imsg.IsLearn())
        OnLearnChosen(imsg);
    else if (imsg.type == PAXOS_REQUEST_CHOSEN)
        OnRequestChosen(imsg);
    else if (imsg.type == PAXOS_START_CATCHUP)
        OnStartCatchup(imsg);
    else
        ASSERT_FAIL();
}