Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/peermanager.cpp
Show First 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | uint64_t PeerManager::compact() { | ||||
// Shrink the vector to the expected size. | // Shrink the vector to the expected size. | ||||
while (slots.size() > peers.size()) { | while (slots.size() > peers.size()) { | ||||
slots.pop_back(); | slots.pop_back(); | ||||
} | } | ||||
uint64_t prevStop = 0; | uint64_t prevStop = 0; | ||||
uint32_t i = 0; | uint32_t i = 0; | ||||
for (auto it = peers.begin(); it != peers.end(); it++) { | for (auto it = peers.begin(); it != peers.end(); it++) { | ||||
slots[i] = Slot(prevStop, it->score, it->peerid); | slots[i] = Slot(prevStop, it->getScore(), it->peerid); | ||||
prevStop = slots[i].getStop(); | prevStop = slots[i].getStop(); | ||||
peers.modify(it, [&](Peer &p) { p.index = i++; }); | peers.modify(it, [&](Peer &p) { p.index = i++; }); | ||||
} | } | ||||
const uint64_t saved = slotCount - prevStop; | const uint64_t saved = slotCount - prevStop; | ||||
slotCount = prevStop; | slotCount = prevStop; | ||||
fragmentation = 0; | fragmentation = 0; | ||||
Show All 27 Lines | bool PeerManager::verify() const { | ||||
for (const auto &p : peers) { | for (const auto &p : peers) { | ||||
// The index must point to a slot refering to this peer. | // The index must point to a slot refering to this peer. | ||||
if (p.index >= slots.size() || slots[p.index].getPeerId() != p.peerid) { | if (p.index >= slots.size() || slots[p.index].getPeerId() != p.peerid) { | ||||
return false; | return false; | ||||
} | } | ||||
// If the score do not match, same thing. | // If the score do not match, same thing. | ||||
if (slots[p.index].getScore() != p.score) { | if (slots[p.index].getScore() != p.getScore()) { | ||||
return false; | return false; | ||||
} | } | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
PeerId selectPeerImpl(const std::vector<Slot> &slots, const uint64_t slot, | PeerId selectPeerImpl(const std::vector<Slot> &slots, const uint64_t slot, | ||||
▲ Show 20 Lines • Show All 57 Lines • Show Last 20 Lines |