mirror of https://github.com/aria2/aria2
Fix warning "Cannot fid peer ... in usedPeers_"
parent
f7cbbfd209
commit
4df7b540a2
|
@ -160,6 +160,16 @@ void DefaultPeerStorage::addPeer(
|
|||
static_cast<unsigned long>(unusedPeers_.size())));
|
||||
}
|
||||
|
||||
std::shared_ptr<Peer>
|
||||
DefaultPeerStorage::addAndCheckoutPeer(const std::shared_ptr<Peer>& peer,
|
||||
cuid_t cuid)
|
||||
{
|
||||
unusedPeers_.push_front(peer);
|
||||
addUniqPeer(peer);
|
||||
|
||||
return checkoutPeer(cuid);
|
||||
}
|
||||
|
||||
void DefaultPeerStorage::addDroppedPeer(const std::shared_ptr<Peer>& peer)
|
||||
{
|
||||
// Make sure that no duplicated peer exists in droppedPeers_. If
|
||||
|
|
|
@ -94,6 +94,9 @@ public:
|
|||
virtual void
|
||||
addPeer(const std::vector<std::shared_ptr<Peer>>& peers) CXX11_OVERRIDE;
|
||||
|
||||
std::shared_ptr<Peer> addAndCheckoutPeer(const std::shared_ptr<Peer>& peer,
|
||||
cuid_t cuid);
|
||||
|
||||
const std::deque<std::shared_ptr<Peer>>& getUnusedPeers();
|
||||
|
||||
virtual const PeerSet& getUsedPeers() CXX11_OVERRIDE;
|
||||
|
|
|
@ -136,8 +136,7 @@ bool PeerReceiveHandshakeCommand::executeInternal()
|
|||
btRuntime->lessThanMaxPeers()) {
|
||||
// TODO addPeer and checkoutPeer must be "atomic", in a sense
|
||||
// that the added peer must be checked out.
|
||||
if (peerStorage->addPeer(getPeer()) &&
|
||||
peerStorage->checkoutPeer(getCuid())) {
|
||||
if (peerStorage->addAndCheckoutPeer(getPeer(), getCuid())) {
|
||||
getDownloadEngine()->addCommand(make_unique<PeerInteractionCommand>(
|
||||
getCuid(), downloadContext->getOwnerRequestGroup(), getPeer(),
|
||||
getDownloadEngine(), btRuntime, pieceStorage, peerStorage,
|
||||
|
|
|
@ -67,6 +67,12 @@ public:
|
|||
*/
|
||||
virtual void addPeer(const std::vector<std::shared_ptr<Peer>>& peers) = 0;
|
||||
|
||||
/**
|
||||
* Adds new peer, and checkout it atomically.
|
||||
*/
|
||||
virtual std::shared_ptr<Peer>
|
||||
addAndCheckoutPeer(const std::shared_ptr<Peer>& peer, cuid_t cuid) = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of peers, including used and unused ones.
|
||||
*/
|
||||
|
|
|
@ -38,6 +38,13 @@ public:
|
|||
return unusedPeers;
|
||||
}
|
||||
|
||||
virtual std::shared_ptr<Peer>
|
||||
addAndCheckoutPeer(const std::shared_ptr<Peer>& peer, cuid_t cuid)
|
||||
{
|
||||
unusedPeers.push_back(peer);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual size_t countAllPeer() const CXX11_OVERRIDE
|
||||
{
|
||||
return unusedPeers.size() + usedPeers.size();
|
||||
|
|
Loading…
Reference in New Issue