From 9db01bed71e79416c2928a509ebe1373c3c2ba07 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 23 Jun 2013 12:14:17 +0900 Subject: [PATCH] DefaultBtAnnounce: Use non-owning raw pointer for downloadContext_ --- src/DefaultBtAnnounce.cc | 5 ++--- src/DefaultBtAnnounce.h | 5 ++--- src/RequestGroup.cc | 6 +++--- test/DefaultBtAnnounceTest.cc | 26 +++++++++++++++----------- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/DefaultBtAnnounce.cc b/src/DefaultBtAnnounce.cc index cafbd6d8..fb4800c0 100644 --- a/src/DefaultBtAnnounce.cc +++ b/src/DefaultBtAnnounce.cc @@ -58,9 +58,8 @@ namespace aria2 { DefaultBtAnnounce::DefaultBtAnnounce -(const std::shared_ptr& downloadContext, - const Option* option) - : downloadContext_(downloadContext), +(DownloadContext* downloadContext, const Option* option) + : downloadContext_{downloadContext}, trackers_(0), prevAnnounceTimer_(0), interval_(DEFAULT_ANNOUNCE_INTERVAL), diff --git a/src/DefaultBtAnnounce.h b/src/DefaultBtAnnounce.h index 5284a1e8..e4141a84 100644 --- a/src/DefaultBtAnnounce.h +++ b/src/DefaultBtAnnounce.h @@ -50,7 +50,7 @@ class Randomizer; class DefaultBtAnnounce : public BtAnnounce { private: - std::shared_ptr downloadContext_; + DownloadContext* downloadContext_; int trackers_; Timer prevAnnounceTimer_; time_t interval_; @@ -69,8 +69,7 @@ private: bool adjustAnnounceList(); public: - DefaultBtAnnounce(const std::shared_ptr& downloadContext, - const Option* option); + DefaultBtAnnounce(DownloadContext* downloadContext, const Option* option); virtual ~DefaultBtAnnounce(); diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index 74e028fc..51db87ea 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -343,15 +343,15 @@ void RequestGroup::createInitialCommand progressInfoFilePtr->setPeerStorage(peerStorage); } - DefaultBtAnnounce* btAnnouncePtr - (new DefaultBtAnnounce(downloadContext_, option_.get())); + auto btAnnouncePtr = new DefaultBtAnnounce(downloadContext_.get(), + option_.get()); + std::shared_ptr btAnnounce(btAnnouncePtr); btAnnouncePtr->setBtRuntime(btRuntime); btAnnouncePtr->setPieceStorage(pieceStorage_); btAnnouncePtr->setPeerStorage(peerStorage); btAnnouncePtr->setUserDefinedInterval (option_->getAsInt(PREF_BT_TRACKER_INTERVAL)); btAnnouncePtr->shuffleAnnounce(); - std::shared_ptr btAnnounce(btAnnouncePtr); assert(!btRegistry->get(gid_->getNumericId())); btRegistry->put diff --git a/test/DefaultBtAnnounceTest.cc b/test/DefaultBtAnnounceTest.cc index 1fc4c32e..1ccab552 100644 --- a/test/DefaultBtAnnounceTest.cc +++ b/test/DefaultBtAnnounceTest.cc @@ -151,7 +151,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce() setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -200,7 +200,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl() announceList->append(createAnnounceTier("http://localhost/announce")); setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -257,7 +257,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_withQuery() announceList->append(createAnnounceTier("http://localhost/announce?k=v")); setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -281,7 +281,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_externalIP() setAnnounceList(dctx_, announceList); option_->put(PREF_BT_EXTERNAL_IP, "192.168.1.1"); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -312,7 +312,7 @@ void DefaultBtAnnounceTest::testIsAllAnnounceFailed() announceList->append(createAnnounceTier("http://backup/announce")); setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -345,7 +345,7 @@ void DefaultBtAnnounceTest::testURLOrderInStoppedEvent() announceList->append(createAnnounceTier(vbegin(urls), vend(urls))); setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -376,7 +376,7 @@ void DefaultBtAnnounceTest::testURLOrderInCompletedEvent() announceList->append(createAnnounceTier(vbegin(urls), vend(urls))); setAnnounceList(dctx_, announceList); - DefaultBtAnnounce btAnnounce(dctx_, option_); + DefaultBtAnnounce btAnnounce(dctx_.get(), option_); btAnnounce.setPieceStorage(pieceStorage_); btAnnounce.setPeerStorage(peerStorage_); btAnnounce.setBtRuntime(btRuntime_); @@ -402,7 +402,9 @@ void DefaultBtAnnounceTest::testProcessAnnounceResponse_malformed() { try { std::string res = "i123e"; - DefaultBtAnnounce(dctx_, option_).processAnnounceResponse(reinterpret_cast(res.c_str()), res.size()); + DefaultBtAnnounce(dctx_.get(), option_) + .processAnnounceResponse + (reinterpret_cast(res.c_str()), res.size()); CPPUNIT_FAIL("exception must be thrown."); } catch(Exception& e) { std::cerr << e.stackTrace() << std::endl; @@ -413,7 +415,9 @@ void DefaultBtAnnounceTest::testProcessAnnounceResponse_failureReason() { try { std::string res = "d14:failure reason11:hello worlde"; - DefaultBtAnnounce(dctx_, option_).processAnnounceResponse(reinterpret_cast(res.c_str()), res.size()); + DefaultBtAnnounce(dctx_.get(), option_) + .processAnnounceResponse + (reinterpret_cast(res.c_str()), res.size()); CPPUNIT_FAIL("exception must be thrown."); } catch(Exception& e) { std::cerr << e.stackTrace() << std::endl; @@ -435,7 +439,7 @@ void DefaultBtAnnounceTest::testProcessAnnounceResponse() res += fromHex("100210354527354678541237324732171ae1"); res += "e"; - DefaultBtAnnounce an(dctx_, option_); + DefaultBtAnnounce an(dctx_.get(), option_); an.setPeerStorage(peerStorage_); an.setBtRuntime(btRuntime_); an.processAnnounceResponse(reinterpret_cast(res.c_str()), res.size()); @@ -465,7 +469,7 @@ void DefaultBtAnnounceTest::testProcessUDPTrackerResponse() 6890+i)); } req->reply = reply; - DefaultBtAnnounce an(dctx_, option_); + DefaultBtAnnounce an(dctx_.get(), option_); an.setPeerStorage(peerStorage_); an.setBtRuntime(btRuntime_); an.processUDPTrackerResponse(req);