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())));
|
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)
|
void DefaultPeerStorage::addDroppedPeer(const std::shared_ptr<Peer>& peer)
|
||||||
{
|
{
|
||||||
// Make sure that no duplicated peer exists in droppedPeers_. If
|
// Make sure that no duplicated peer exists in droppedPeers_. If
|
||||||
|
|
|
@ -94,6 +94,9 @@ public:
|
||||||
virtual void
|
virtual void
|
||||||
addPeer(const std::vector<std::shared_ptr<Peer>>& peers) CXX11_OVERRIDE;
|
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();
|
const std::deque<std::shared_ptr<Peer>>& getUnusedPeers();
|
||||||
|
|
||||||
virtual const PeerSet& getUsedPeers() CXX11_OVERRIDE;
|
virtual const PeerSet& getUsedPeers() CXX11_OVERRIDE;
|
||||||
|
|
|
@ -136,8 +136,7 @@ bool PeerReceiveHandshakeCommand::executeInternal()
|
||||||
btRuntime->lessThanMaxPeers()) {
|
btRuntime->lessThanMaxPeers()) {
|
||||||
// TODO addPeer and checkoutPeer must be "atomic", in a sense
|
// TODO addPeer and checkoutPeer must be "atomic", in a sense
|
||||||
// that the added peer must be checked out.
|
// that the added peer must be checked out.
|
||||||
if (peerStorage->addPeer(getPeer()) &&
|
if (peerStorage->addAndCheckoutPeer(getPeer(), getCuid())) {
|
||||||
peerStorage->checkoutPeer(getCuid())) {
|
|
||||||
getDownloadEngine()->addCommand(make_unique<PeerInteractionCommand>(
|
getDownloadEngine()->addCommand(make_unique<PeerInteractionCommand>(
|
||||||
getCuid(), downloadContext->getOwnerRequestGroup(), getPeer(),
|
getCuid(), downloadContext->getOwnerRequestGroup(), getPeer(),
|
||||||
getDownloadEngine(), btRuntime, pieceStorage, peerStorage,
|
getDownloadEngine(), btRuntime, pieceStorage, peerStorage,
|
||||||
|
|
|
@ -67,6 +67,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void addPeer(const std::vector<std::shared_ptr<Peer>>& peers) = 0;
|
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.
|
* Returns the number of peers, including used and unused ones.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,6 +38,13 @@ public:
|
||||||
return unusedPeers;
|
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
|
virtual size_t countAllPeer() const CXX11_OVERRIDE
|
||||||
{
|
{
|
||||||
return unusedPeers.size() + usedPeers.size();
|
return unusedPeers.size() + usedPeers.size();
|
||||||
|
|
Loading…
Reference in New Issue