mirror of https://github.com/aria2/aria2
Fix frequent interested/not interested message transmission
parent
570d46725f
commit
41df1607f6
|
@ -69,29 +69,6 @@ void BtInterestedMessage::doReceivedAction()
|
|||
}
|
||||
}
|
||||
|
||||
bool BtInterestedMessage::sendPredicate() const
|
||||
{
|
||||
return !getPeer()->amInterested();
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct ThisProgressUpdate : public ProgressUpdate {
|
||||
ThisProgressUpdate(std::shared_ptr<Peer> peer) : peer(std::move(peer)) {}
|
||||
virtual void update(size_t length, bool complete) CXX11_OVERRIDE
|
||||
{
|
||||
if (complete) {
|
||||
peer->amInterested(true);
|
||||
}
|
||||
}
|
||||
std::shared_ptr<Peer> peer;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<ProgressUpdate> BtInterestedMessage::getProgressUpdate()
|
||||
{
|
||||
return make_unique<ThisProgressUpdate>(getPeer());
|
||||
}
|
||||
|
||||
void BtInterestedMessage::setPeerStorage(PeerStorage* peerStorage)
|
||||
{
|
||||
peerStorage_ = peerStorage;
|
||||
|
|
|
@ -59,10 +59,6 @@ public:
|
|||
|
||||
virtual void doReceivedAction() CXX11_OVERRIDE;
|
||||
|
||||
virtual bool sendPredicate() const CXX11_OVERRIDE;
|
||||
|
||||
virtual std::unique_ptr<ProgressUpdate> getProgressUpdate() CXX11_OVERRIDE;
|
||||
|
||||
void setPeerStorage(PeerStorage* peerStorage);
|
||||
};
|
||||
|
||||
|
|
|
@ -65,29 +65,6 @@ void BtNotInterestedMessage::doReceivedAction()
|
|||
}
|
||||
}
|
||||
|
||||
bool BtNotInterestedMessage::sendPredicate() const
|
||||
{
|
||||
return getPeer()->amInterested();
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct ThisProgressUpdate : public ProgressUpdate {
|
||||
ThisProgressUpdate(std::shared_ptr<Peer> peer) : peer(std::move(peer)) {}
|
||||
virtual void update(size_t length, bool complete) CXX11_OVERRIDE
|
||||
{
|
||||
if (complete) {
|
||||
peer->amInterested(false);
|
||||
}
|
||||
}
|
||||
std::shared_ptr<Peer> peer;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<ProgressUpdate> BtNotInterestedMessage::getProgressUpdate()
|
||||
{
|
||||
return make_unique<ThisProgressUpdate>(getPeer());
|
||||
}
|
||||
|
||||
void BtNotInterestedMessage::setPeerStorage(PeerStorage* peerStorage)
|
||||
{
|
||||
peerStorage_ = peerStorage;
|
||||
|
|
|
@ -59,10 +59,6 @@ public:
|
|||
|
||||
virtual void doReceivedAction() CXX11_OVERRIDE;
|
||||
|
||||
virtual bool sendPredicate() const CXX11_OVERRIDE;
|
||||
|
||||
virtual std::unique_ptr<ProgressUpdate> getProgressUpdate() CXX11_OVERRIDE;
|
||||
|
||||
void setPeerStorage(PeerStorage* peerStorage);
|
||||
};
|
||||
|
||||
|
|
|
@ -363,6 +363,7 @@ void DefaultBtInteractive::decideInterest()
|
|||
if (pieceStorage_->hasMissingPiece(peer_)) {
|
||||
if (!peer_->amInterested()) {
|
||||
A2_LOG_DEBUG(fmt(MSG_PEER_INTERESTED, cuid_));
|
||||
peer_->amInterested(true);
|
||||
dispatcher_->addMessageToQueue(
|
||||
messageFactory_->createInterestedMessage());
|
||||
}
|
||||
|
@ -370,6 +371,7 @@ void DefaultBtInteractive::decideInterest()
|
|||
else {
|
||||
if (peer_->amInterested()) {
|
||||
A2_LOG_DEBUG(fmt(MSG_PEER_NOT_INTERESTED, cuid_));
|
||||
peer_->amInterested(false);
|
||||
dispatcher_->addMessageToQueue(
|
||||
messageFactory_->createNotInterestedMessage());
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@ class BtInterestedMessageTest : public CppUnit::TestFixture {
|
|||
CPPUNIT_TEST(testCreate);
|
||||
CPPUNIT_TEST(testCreateMessage);
|
||||
CPPUNIT_TEST(testDoReceivedAction);
|
||||
CPPUNIT_TEST(testOnSendComplete);
|
||||
CPPUNIT_TEST(testToString);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
|
@ -25,7 +24,6 @@ public:
|
|||
void testCreate();
|
||||
void testCreateMessage();
|
||||
void testDoReceivedAction();
|
||||
void testOnSendComplete();
|
||||
void testToString();
|
||||
};
|
||||
|
||||
|
@ -90,18 +88,6 @@ void BtInterestedMessageTest::testDoReceivedAction()
|
|||
CPPUNIT_ASSERT_EQUAL(1, peerStorage->getNumChokeExecuted());
|
||||
}
|
||||
|
||||
void BtInterestedMessageTest::testOnSendComplete()
|
||||
{
|
||||
BtInterestedMessage msg;
|
||||
std::shared_ptr<Peer> peer(new Peer("host", 6969));
|
||||
peer->allocateSessionResource(1_k, 1_m);
|
||||
msg.setPeer(peer);
|
||||
CPPUNIT_ASSERT(!peer->amInterested());
|
||||
std::shared_ptr<ProgressUpdate> pu(msg.getProgressUpdate());
|
||||
pu->update(0, true);
|
||||
CPPUNIT_ASSERT(peer->amInterested());
|
||||
}
|
||||
|
||||
void BtInterestedMessageTest::testToString()
|
||||
{
|
||||
BtInterestedMessage msg;
|
||||
|
|
|
@ -17,7 +17,6 @@ class BtNotInterestedMessageTest : public CppUnit::TestFixture {
|
|||
CPPUNIT_TEST(testCreate);
|
||||
CPPUNIT_TEST(testCreateMessage);
|
||||
CPPUNIT_TEST(testDoReceivedAction);
|
||||
CPPUNIT_TEST(testOnSendComplete);
|
||||
CPPUNIT_TEST(testToString);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
|
@ -25,7 +24,6 @@ public:
|
|||
void testCreate();
|
||||
void testCreateMessage();
|
||||
void testDoReceivedAction();
|
||||
void testOnSendComplete();
|
||||
void testToString();
|
||||
};
|
||||
|
||||
|
@ -91,19 +89,6 @@ void BtNotInterestedMessageTest::testDoReceivedAction()
|
|||
CPPUNIT_ASSERT_EQUAL(1, peerStorage->getNumChokeExecuted());
|
||||
}
|
||||
|
||||
void BtNotInterestedMessageTest::testOnSendComplete()
|
||||
{
|
||||
std::shared_ptr<Peer> peer(new Peer("host", 6969));
|
||||
peer->allocateSessionResource(1_k, 1_m);
|
||||
peer->amInterested(true);
|
||||
BtNotInterestedMessage msg;
|
||||
msg.setPeer(peer);
|
||||
CPPUNIT_ASSERT(peer->amInterested());
|
||||
std::shared_ptr<ProgressUpdate> pu(msg.getProgressUpdate());
|
||||
pu->update(0, true);
|
||||
CPPUNIT_ASSERT(!peer->amInterested());
|
||||
}
|
||||
|
||||
void BtNotInterestedMessageTest::testToString()
|
||||
{
|
||||
BtNotInterestedMessage msg;
|
||||
|
|
Loading…
Reference in New Issue