in platform/consensus/ordering/pbft/consensus_manager_pbft.cpp [186:254]
int ConsensusManagerPBFT::InternalConsensusCommit(
std::unique_ptr<Context> context, std::unique_ptr<Request> request) {
// LOG(INFO) << "recv impl type:" << request->type() << " "
// << "sender id:" << request->sender_id()<<" seq:"<<request->seq();
switch (request->type()) {
case Request::TYPE_CLIENT_REQUEST:
if (config_.IsPerformanceRunning()) {
return performance_manager_->StartEval();
}
return response_manager_->NewUserRequest(std::move(context),
std::move(request));
case Request::TYPE_RESPONSE:
if (config_.IsPerformanceRunning()) {
return performance_manager_->ProcessResponseMsg(std::move(context),
std::move(request));
}
return response_manager_->ProcessResponseMsg(std::move(context),
std::move(request));
case Request::TYPE_NEW_TXNS: {
uint64_t proxy_id = request->proxy_id();
std::string hash = request->hash();
int ret = commitment_->ProcessNewRequest(std::move(context),
std::move(request));
if (ret == -3) {
LOG(ERROR) << "BAD RETURN";
std::pair<std::unique_ptr<Context>, std::unique_ptr<Request>>
request_complained;
{
std::lock_guard<std::mutex> lk(commitment_->rc_mutex_);
request_complained =
std::move(commitment_->request_complained_.front());
commitment_->request_complained_.pop();
}
AddComplainedRequest(std::move(request_complained.first),
std::move(request_complained.second));
view_change_manager_->AddComplaintTimer(proxy_id, hash);
}
return ret;
}
case Request::TYPE_PRE_PREPARE:
return commitment_->ProcessProposeMsg(std::move(context),
std::move(request));
case Request::TYPE_PREPARE:
return commitment_->ProcessPrepareMsg(std::move(context),
std::move(request));
case Request::TYPE_COMMIT:
return commitment_->ProcessCommitMsg(std::move(context),
std::move(request));
case Request::TYPE_CHECKPOINT:
return checkpoint_manager_->ProcessCheckPoint(std::move(context),
std::move(request));
case Request::TYPE_VIEWCHANGE:
return view_change_manager_->ProcessViewChange(std::move(context),
std::move(request));
case Request::TYPE_NEWVIEW:
return view_change_manager_->ProcessNewView(std::move(context),
std::move(request));
case Request::TYPE_QUERY:
return query_->ProcessQuery(std::move(context), std::move(request));
case Request::TYPE_REPLICA_STATE:
return query_->ProcessGetReplicaState(std::move(context),
std::move(request));
case Request::TYPE_CUSTOM_QUERY:
return query_->ProcessCustomQuery(std::move(context), std::move(request));
}
return 0;
}