in platform/consensus/ordering/common/framework/performance_manager.cpp [216:269]
int PerformanceManager::DoBatch(
const std::vector<std::unique_ptr<QueueItem>>& batch_req) {
auto new_request = comm::NewRequest(Request::TYPE_NEW_TXNS, Request(),
config_.GetSelfInfo().id());
if (new_request == nullptr) {
return -2;
}
BatchUserRequest batch_request;
for (size_t i = 0; i < batch_req.size(); ++i) {
BatchUserRequest::UserRequest* req = batch_request.add_user_requests();
*req->mutable_request() = *batch_req[i]->user_request.get();
req->set_id(i);
}
batch_request.set_local_id(local_id_++);
{
int idx = batch_request.local_id() % response_set_size_;
std::unique_lock<std::mutex> lk(response_lock_[idx]);
response_[idx][batch_request.local_id()]++;
}
batch_request.set_proxy_id(config_.GetSelfInfo().id());
batch_request.set_createtime(GetCurrentTime());
batch_request.SerializeToString(new_request->mutable_data());
if (verifier_) {
auto signature_or = verifier_->SignMessage(new_request->data());
if (!signature_or.ok()) {
LOG(ERROR) << "Sign message fail";
return -2;
}
*new_request->mutable_data_signature() = *signature_or;
}
new_request->set_hash(SignatureVerifier::CalculateHash(new_request->data()));
new_request->set_proxy_id(config_.GetSelfInfo().id());
new_request->set_user_seq(batch_request.local_id());
SendMessage(*new_request);
global_stats_->BroadCastMsg();
send_num_++;
sum_ += batch_req.size();
if (total_num_++ == 1000000) {
stop_ = true;
LOG(WARNING) << "total num is done:" << total_num_;
}
if (total_num_ % 1000 == 0) {
LOG(WARNING) << "total num is :" << total_num_;
}
global_stats_->IncClientCall();
return 0;
}