From ae84ff26e2ded61e19d38ddbd23bcbdb0279cc8a Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 5 Jul 2013 22:40:29 +0900 Subject: [PATCH] AbstractSingleDiskAdaptor: Use std::unique_ptr for diskWriter_ --- src/AbstractSingleDiskAdaptor.cc | 4 +-- src/AbstractSingleDiskAdaptor.h | 6 ++-- src/BtPostDownloadHandler.cc | 9 +++--- test/BtDependencyTest.cc | 32 +++++++++++----------- test/DirectDiskAdaptorTest.cc | 26 +++++++++--------- test/PieceTest.cc | 9 +++--- test/UTMetadataDataExtensionMessageTest.cc | 8 ++++-- test/WrDiskCacheEntryTest.cc | 11 ++++---- test/WrDiskCacheTest.cc | 9 +++--- 9 files changed, 60 insertions(+), 54 deletions(-) diff --git a/src/AbstractSingleDiskAdaptor.cc b/src/AbstractSingleDiskAdaptor.cc index 197f00db..90c82ee0 100644 --- a/src/AbstractSingleDiskAdaptor.cc +++ b/src/AbstractSingleDiskAdaptor.cc @@ -188,9 +188,9 @@ void AbstractSingleDiskAdaptor::cutTrailingGarbage() } void AbstractSingleDiskAdaptor::setDiskWriter -(const std::shared_ptr& diskWriter) +(std::unique_ptr diskWriter) { - diskWriter_ = diskWriter; + diskWriter_ = std::move(diskWriter); } void AbstractSingleDiskAdaptor::setTotalLength(int64_t totalLength) diff --git a/src/AbstractSingleDiskAdaptor.h b/src/AbstractSingleDiskAdaptor.h index 6a6ea3de..0a23e84a 100644 --- a/src/AbstractSingleDiskAdaptor.h +++ b/src/AbstractSingleDiskAdaptor.h @@ -44,7 +44,7 @@ class FileAllocationIterator; class AbstractSingleDiskAdaptor : public DiskAdaptor { private: - std::shared_ptr diskWriter_; + std::unique_ptr diskWriter_; int64_t totalLength_; bool readOnly_; public: @@ -89,9 +89,9 @@ public: virtual const std::string& getFilePath() = 0; - void setDiskWriter(const std::shared_ptr& diskWriter); + void setDiskWriter(std::unique_ptr diskWriter); - const std::shared_ptr& getDiskWriter() const + const std::unique_ptr& getDiskWriter() const { return diskWriter_; } diff --git a/src/BtPostDownloadHandler.cc b/src/BtPostDownloadHandler.cc index 9c432192..05d09f2e 100644 --- a/src/BtPostDownloadHandler.cc +++ b/src/BtPostDownloadHandler.cc @@ -73,11 +73,10 @@ void BtPostDownloadHandler::getNextRequestGroups requestGroup->getFirstFilePath().c_str())); std::shared_ptr torrent; if(requestGroup->inMemoryDownload()) { - const std::shared_ptr& dw = - std::static_pointer_cast - (requestGroup->getPieceStorage()->getDiskAdaptor())->getDiskWriter(); - const std::shared_ptr& bdw = - std::static_pointer_cast(dw); + auto& dw = static_cast + (requestGroup->getPieceStorage()->getDiskAdaptor().get()) + ->getDiskWriter(); + auto bdw = static_cast(dw.get()); int error = bdw->finalize(); if(error == 0) { torrent = bdw->getResult(); diff --git a/test/BtDependencyTest.cc b/test/BtDependencyTest.cc index 9a3c1e72..84676567 100644 --- a/test/BtDependencyTest.cc +++ b/test/BtDependencyTest.cc @@ -181,14 +181,16 @@ void BtDependencyTest::testResolve_metadata() std::shared_ptr dependee = createDependee(option_, "metadata", 0); - std::shared_ptr diskAdaptor(new DirectDiskAdaptor()); - std::shared_ptr diskWriter(new ByteArrayDiskWriter()); - diskAdaptor->setDiskWriter(diskWriter); - diskWriter->setString - ("d4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e" - "6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCC" - "e"); - std::shared_ptr pieceStorage(new MockPieceStorage()); + auto diskAdaptor = std::make_shared(); + { + auto diskWriter = make_unique(); + diskWriter->setString + ("d4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e" + "6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCC" + "e"); + diskAdaptor->setDiskWriter(std::move(diskWriter)); + } + auto pieceStorage = std::make_shared(); pieceStorage->setDiskAdaptor(diskAdaptor); pieceStorage->setDownloadFinished(true); dependee->setPieceStorage(pieceStorage); @@ -206,9 +208,8 @@ void BtDependencyTest::testResolve_metadata() void BtDependencyTest::testResolve_loadError() { - std::shared_ptr dependant = createDependant(option_); - std::shared_ptr dependee = - createDependee(option_, "notExist", 40); + auto dependant = createDependant(option_); + auto dependee = createDependee(option_, "notExist", 40); dependee->getPieceStorage()->markAllPiecesDone(); BtDependency dep(dependant.get(), dependee); @@ -222,8 +223,8 @@ void BtDependencyTest::testResolve_loadError() void BtDependencyTest::testResolve_dependeeFailure() { - std::shared_ptr dependant = createDependant(option_); - std::shared_ptr dependee = createDependee(option_, "notExist", 40); + auto dependant = createDependant(option_); + auto dependee = createDependee(option_, "notExist", 40); BtDependency dep(dependant.get(), dependee); CPPUNIT_ASSERT(dep.resolve()); @@ -237,9 +238,8 @@ void BtDependencyTest::testResolve_dependeeFailure() void BtDependencyTest::testResolve_dependeeInProgress() { std::string filename = A2_TEST_DIR"/single.torrent"; - std::shared_ptr dependant = createDependant(option_); - std::shared_ptr dependee = - createDependee(option_, filename, File(filename).size()); + auto dependant = createDependant(option_); + auto dependee = createDependee(option_, filename, File(filename).size()); dependee->increaseNumCommand(); BtDependency dep(dependant.get(), dependee); diff --git a/test/DirectDiskAdaptorTest.cc b/test/DirectDiskAdaptorTest.cc index 8e65dadc..a9aad1ad 100644 --- a/test/DirectDiskAdaptorTest.cc +++ b/test/DirectDiskAdaptorTest.cc @@ -33,17 +33,13 @@ CPPUNIT_TEST_SUITE_REGISTRATION(DirectDiskAdaptorTest); void DirectDiskAdaptorTest::testCutTrailingGarbage() { std::string dir = A2_TEST_OUT_DIR; - std::shared_ptr entry - (new FileEntry(dir+"/aria2_DirectDiskAdaptorTest_testCutTrailingGarbage", - 256, 0)); + auto entry = std::make_shared + (dir+"/aria2_DirectDiskAdaptorTest_testCutTrailingGarbage", + 256, 0); createFile(entry->getPath(), entry->getLength()+100); - - std::vector > fileEntries; - fileEntries.push_back(entry); - + auto fileEntries = std::vector>{entry}; DirectDiskAdaptor adaptor; - adaptor.setDiskWriter - (std::shared_ptr(new DefaultDiskWriter(entry->getPath()))); + adaptor.setDiskWriter(make_unique(entry->getPath())); adaptor.setTotalLength(entry->getLength()); adaptor.setFileEntries(fileEntries.begin(), fileEntries.end()); adaptor.openFile(); @@ -56,10 +52,14 @@ void DirectDiskAdaptorTest::testCutTrailingGarbage() void DirectDiskAdaptorTest::testWriteCache() { - std::shared_ptr adaptor(new DirectDiskAdaptor()); - std::shared_ptr dw(new ByteArrayDiskWriter()); - adaptor->setDiskWriter(dw); - WrDiskCacheEntry cache(adaptor); + auto adaptor = std::make_shared(); + ByteArrayDiskWriter* dw; + { + auto sdw = make_unique(); + dw = sdw.get(); + adaptor->setDiskWriter(std::move(sdw)); + } + WrDiskCacheEntry cache{adaptor}; std::string data1(4096, '1'), data2(4094, '2'); cache.cacheData(createDataCell(5, data1.c_str())); cache.cacheData(createDataCell(5+data1.size(), data2.c_str())); diff --git a/test/PieceTest.cc b/test/PieceTest.cc index 6f9b9cf3..7037548d 100644 --- a/test/PieceTest.cc +++ b/test/PieceTest.cc @@ -28,13 +28,14 @@ class PieceTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE_END(); private: std::shared_ptr adaptor_; - std::shared_ptr writer_; + ByteArrayDiskWriter* writer_; public: void setUp() { - adaptor_.reset(new DirectDiskAdaptor()); - writer_.reset(new ByteArrayDiskWriter()); - adaptor_->setDiskWriter(writer_); + adaptor_ = std::make_shared(); + auto dw = make_unique(); + writer_ = dw.get(); + adaptor_->setDiskWriter(std::move(dw)); } void testCompleteBlock(); diff --git a/test/UTMetadataDataExtensionMessageTest.cc b/test/UTMetadataDataExtensionMessageTest.cc index a2388bc9..1b6f0a14 100644 --- a/test/UTMetadataDataExtensionMessageTest.cc +++ b/test/UTMetadataDataExtensionMessageTest.cc @@ -66,8 +66,12 @@ void UTMetadataDataExtensionMessageTest::testToString() void UTMetadataDataExtensionMessageTest::testDoReceivedAction() { auto diskAdaptor = std::make_shared(); - auto diskWriter = std::make_shared(); - diskAdaptor->setDiskWriter(diskWriter); + ByteArrayDiskWriter* diskWriter; + { + auto dw = make_unique(); + diskWriter = dw.get(); + diskAdaptor->setDiskWriter(std::move(dw)); + } auto pieceStorage = make_unique(); pieceStorage->setDiskAdaptor(diskAdaptor); auto tracker = make_unique(); diff --git a/test/WrDiskCacheEntryTest.cc b/test/WrDiskCacheEntryTest.cc index 996cee62..4798bbb6 100644 --- a/test/WrDiskCacheEntryTest.cc +++ b/test/WrDiskCacheEntryTest.cc @@ -19,13 +19,14 @@ class WrDiskCacheEntryTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE_END(); std::shared_ptr adaptor_; - std::shared_ptr writer_; + ByteArrayDiskWriter* writer_; public: void setUp() { - adaptor_.reset(new DirectDiskAdaptor()); - writer_.reset(new ByteArrayDiskWriter()); - adaptor_->setDiskWriter(writer_); + adaptor_ = std::make_shared(); + auto dw = make_unique(); + writer_ = dw.get(); + adaptor_->setDiskWriter(std::move(dw)); } void testWriteToDisk(); @@ -48,7 +49,7 @@ void WrDiskCacheEntryTest::testWriteToDisk() void WrDiskCacheEntryTest::testAppend() { WrDiskCacheEntry e(adaptor_); - WrDiskCacheEntry::DataCell* cell = new WrDiskCacheEntry::DataCell(); + auto cell = new WrDiskCacheEntry::DataCell{}; cell->goff = 0; size_t capacity = 6; size_t offset = 2; diff --git a/test/WrDiskCacheTest.cc b/test/WrDiskCacheTest.cc index b668ee91..03889ff5 100644 --- a/test/WrDiskCacheTest.cc +++ b/test/WrDiskCacheTest.cc @@ -17,13 +17,14 @@ class WrDiskCacheTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE_END(); std::shared_ptr adaptor_; - std::shared_ptr writer_; + ByteArrayDiskWriter* writer_; public: void setUp() { - adaptor_.reset(new DirectDiskAdaptor()); - writer_.reset(new ByteArrayDiskWriter()); - adaptor_->setDiskWriter(writer_); + adaptor_ = std::make_shared(); + auto dw = make_unique(); + writer_ = dw.get(); + adaptor_->setDiskWriter(std::move(dw)); } void testAdd();