Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/orphanproofpool.cpp
Show All 13 Lines | void OrphanProofPool::trimToMaximumSize() { | ||||
auto &proofs_by_sequence = proofs.get<by_sequence>(); | auto &proofs_by_sequence = proofs.get<by_sequence>(); | ||||
auto it = proofs_by_sequence.begin(); | auto it = proofs_by_sequence.begin(); | ||||
while (nStakes > maxNumberOfStakes) { | while (nStakes > maxNumberOfStakes) { | ||||
nStakes -= (*it)->getStakes().size(); | nStakes -= (*it)->getStakes().size(); | ||||
it = proofs_by_sequence.erase(it); | it = proofs_by_sequence.erase(it); | ||||
} | } | ||||
} | } | ||||
bool OrphanProofPool::addProof(const std::shared_ptr<Proof> &proof) { | bool OrphanProofPool::addProof(const ProofRef &proof) { | ||||
size_t nStakesProof = proof->getStakes().size(); | size_t nStakesProof = proof->getStakes().size(); | ||||
if (!proofs.push_back(proof).second) { | if (!proofs.push_back(proof).second) { | ||||
return false; | return false; | ||||
} | } | ||||
nStakes += nStakesProof; | nStakes += nStakesProof; | ||||
trimToMaximumSize(); | trimToMaximumSize(); | ||||
return true; | return true; | ||||
} | } | ||||
bool OrphanProofPool::removeProof(const ProofId &proofId) { | bool OrphanProofPool::removeProof(const ProofId &proofId) { | ||||
auto &proofs_by_id = proofs.get<by_proofid>(); | auto &proofs_by_id = proofs.get<by_proofid>(); | ||||
auto it = proofs_by_id.find(proofId); | auto it = proofs_by_id.find(proofId); | ||||
if (it == proofs_by_id.end()) { | if (it == proofs_by_id.end()) { | ||||
return false; | return false; | ||||
} | } | ||||
nStakes -= (*it)->getStakes().size(); | nStakes -= (*it)->getStakes().size(); | ||||
proofs_by_id.erase(it); | proofs_by_id.erase(it); | ||||
return true; | return true; | ||||
} | } | ||||
std::shared_ptr<Proof> OrphanProofPool::getProof(const ProofId &proofId) const { | ProofRef OrphanProofPool::getProof(const ProofId &proofId) const { | ||||
auto &proofs_by_proofid = proofs.get<by_proofid>(); | auto &proofs_by_proofid = proofs.get<by_proofid>(); | ||||
auto it = proofs_by_proofid.find(proofId); | auto it = proofs_by_proofid.find(proofId); | ||||
return it == proofs_by_proofid.end() ? nullptr : *it; | return it == proofs_by_proofid.end() ? nullptr : *it; | ||||
} | } | ||||
void OrphanProofPool::rescan(PeerManager &peerManager) { | void OrphanProofPool::rescan(PeerManager &peerManager) { | ||||
ProofContainer last_gen_proofs = std::move(proofs); | ProofContainer last_gen_proofs = std::move(proofs); | ||||
proofs.clear(); | proofs.clear(); | ||||
Show All 15 Lines |