Pārlūkot izejas kodu

FileEntry::getUris: Return std::vector<std::string>

Tatsuhiro Tsujikawa 11 gadi atpakaļ
vecāks
revīzija
9b54272190

+ 5 - 5
src/FileEntry.cc

@@ -115,10 +115,11 @@ int64_t FileEntry::gtoloff(int64_t goff) const
   return goff-offset_;
 }
 
-void FileEntry::getUris(std::vector<std::string>& uris) const
+std::vector<std::string> FileEntry::getUris() const
 {
-  uris.insert(uris.end(), spentUris_.begin(), spentUris_.end());
-  uris.insert(uris.end(), uris_.begin(), uris_.end());
+  std::vector<std::string> uris(std::begin(spentUris_), std::end(spentUris_));
+  uris.insert(std::end(uris), std::begin(uris_), std::end(uris_));
+  return uris;
 }
 
 namespace {
@@ -588,8 +589,7 @@ void writeFilePath
  bool memory)
 {
   if(entry->getPath().empty()) {
-    std::vector<std::string> uris;
-    entry->getUris(uris);
+    auto uris = entry->getUris();
     if(uris.empty()) {
       o << "n/a";
     } else {

+ 2 - 2
src/FileEntry.h

@@ -167,8 +167,8 @@ public:
 
   bool insertUri(const std::string& uri, size_t pos);
 
-  // Inserts uris_ and spentUris_ into uris.
-  void getUris(std::vector<std::string>& uris) const;
+  // Returns uris_ and spentUris_ in single std::vector<std::string>.
+  std::vector<std::string> getUris() const;
 
   void setContentType(std::string contentType);
 

+ 1 - 2
src/download_helper.cc

@@ -532,8 +532,7 @@ createMetadataInfoFromFirstFileEntry
   if(dctx->getFileEntries().empty()) {
     return nullptr;
   } else {
-    std::vector<std::string> uris;
-    dctx->getFileEntries()[0]->getUris(uris);
+    auto uris = dctx->getFileEntries()[0]->getUris();
     if(uris.empty()) {
       return nullptr;
     }

+ 24 - 24
test/DownloadHelperTest.cc

@@ -82,8 +82,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
     createRequestGroupForUri(result, option_, uris);
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> xuris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(xuris);
+    auto xuris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)6, xuris.size());
     for(size_t i = 0; i < 6; ++i) {
       CPPUNIT_ASSERT_EQUAL(uris[i%3], xuris[i]);
@@ -98,8 +98,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
     createRequestGroupForUri(result, option_, uris);
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> xuris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(xuris);
+    auto xuris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)5, xuris.size());
     for(size_t i = 0; i < 5; ++i) {
       CPPUNIT_ASSERT_EQUAL(uris[i%3], xuris[i]);
@@ -111,8 +111,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
     createRequestGroupForUri(result, option_, uris);
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> xuris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(xuris);
+    auto xuris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)3, xuris.size());
     for(size_t i = 0; i < 3; ++i) {
       CPPUNIT_ASSERT_EQUAL(uris[i%3], xuris[i]);
@@ -125,8 +125,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
     CPPUNIT_ASSERT_EQUAL((size_t)3, result.size());
     // for alpha server
     std::shared_ptr<RequestGroup> alphaGroup = result[0];
-    std::vector<std::string> alphaURIs;
-    alphaGroup->getDownloadContext()->getFirstFileEntry()->getUris(alphaURIs);
+    auto alphaURIs =
+      alphaGroup->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)2, alphaURIs.size());
     for(size_t i = 0; i < 2; ++i) {
       CPPUNIT_ASSERT_EQUAL(uris[0], alphaURIs[i]);
@@ -156,8 +156,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri_parameterized()
 
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> uris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
 
     CPPUNIT_ASSERT_EQUAL(std::string("http://alpha/file"), uris[0]);
@@ -190,8 +190,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri_BitTorrent()
 
     CPPUNIT_ASSERT_EQUAL((size_t)2, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> xuris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(xuris);
+    auto xuris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)3, xuris.size());
 
     CPPUNIT_ASSERT_EQUAL(uris[0], xuris[0]);
@@ -204,8 +204,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri_BitTorrent()
                          ctx->getBasePath());
 
     std::shared_ptr<RequestGroup> torrentGroup = result[1];
-    std::vector<std::string> auxURIs;
-    torrentGroup->getDownloadContext()->getFirstFileEntry()->getUris(auxURIs);
+    auto auxURIs =
+      torrentGroup->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT(auxURIs.empty());
     CPPUNIT_ASSERT_EQUAL(3, torrentGroup->getNumConcurrentCommand());
     std::shared_ptr<DownloadContext> btctx = torrentGroup->getDownloadContext();
@@ -242,8 +242,8 @@ void DownloadHelperTest::testCreateRequestGroupForUri_Metalink()
 #endif // !ENABLE_BITTORRENT
 
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> xuris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(xuris);
+    auto xuris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)3, xuris.size());
     for(size_t i = 0; i < 3; ++i) {
       CPPUNIT_ASSERT_EQUAL(uris[i], xuris[i]);
@@ -282,8 +282,8 @@ void DownloadHelperTest::testCreateRequestGroupForUriList()
   CPPUNIT_ASSERT_EQUAL((size_t)2, result.size());
 
   std::shared_ptr<RequestGroup> fileGroup = result[0];
-  std::vector<std::string> fileURIs;
-  fileGroup->getDownloadContext()->getFirstFileEntry()->getUris(fileURIs);
+  auto fileURIs =
+    fileGroup->getDownloadContext()->getFirstFileEntry()->getUris();
   CPPUNIT_ASSERT_EQUAL(std::string("http://alpha/file"), fileURIs[0]);
   CPPUNIT_ASSERT_EQUAL(std::string("http://bravo/file"), fileURIs[1]);
   CPPUNIT_ASSERT_EQUAL(std::string("http://charlie/file"), fileURIs[2]);
@@ -322,8 +322,8 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
 
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> uris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     // See -s option is ignored. See processRootDictionary() in
     // bittorrent_helper.cc
     CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
@@ -344,8 +344,8 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
 
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> uris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)0, uris.size());
   }
   option_->put(PREF_FORCE_SEQUENTIAL, A2_V_TRUE);
@@ -379,8 +379,8 @@ void DownloadHelperTest::testCreateRequestGroupForMetalink()
     CPPUNIT_ASSERT_EQUAL((size_t)5, result.size());
 #endif // !ENABLE_BITTORRENT
     std::shared_ptr<RequestGroup> group = result[0];
-    std::vector<std::string> uris;
-    group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris =
+      group->getDownloadContext()->getFirstFileEntry()->getUris();
     std::sort(uris.begin(), uris.end());
     CPPUNIT_ASSERT_EQUAL((size_t)2, uris.size());
     CPPUNIT_ASSERT_EQUAL(std::string("ftp://ftphost/aria2-0.5.2.tar.bz2"),

+ 8 - 16
test/Metalink2RequestGroupTest.cc

@@ -48,8 +48,7 @@ void Metalink2RequestGroupTest::testGenerate()
   // first file
   {
     std::shared_ptr<RequestGroup> rg = groups[0];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     std::sort(uris.begin(), uris.end());
     CPPUNIT_ASSERT_EQUAL((size_t)2, uris.size());
     CPPUNIT_ASSERT_EQUAL
@@ -71,8 +70,7 @@ void Metalink2RequestGroupTest::testGenerate()
   // second file
   {
     std::shared_ptr<RequestGroup> rg = groups[1];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)2, uris.size());
 
     const std::shared_ptr<DownloadContext>& dctx = rg->getDownloadContext();
@@ -92,8 +90,7 @@ void Metalink2RequestGroupTest::testGenerate()
   // fifth file <- downloading .torrent file
   {
     std::shared_ptr<RequestGroup> rg = groups[4];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL
       (std::string("http://host/torrent-http.integrated.torrent"), uris[0]);
@@ -111,8 +108,7 @@ void Metalink2RequestGroupTest::testGenerate()
 #else
     std::shared_ptr<RequestGroup> rg = groups[4];
 #endif // ENABLE_BITTORRENT
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL
       (std::string("http://host/torrent-http.integrated"), uris[0]);
@@ -149,8 +145,7 @@ void Metalink2RequestGroupTest::testGenerate_groupByMetaurl()
   // first RequestGroup is torrent for second RequestGroup
   {
     std::shared_ptr<RequestGroup> rg = groups[0];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL(std::string("http://torrent"), uris[0]);
   }
@@ -189,22 +184,19 @@ void Metalink2RequestGroupTest::testGenerate_groupByMetaurl()
 #else // !ENABLE_BITTORRENT
   {
     std::shared_ptr<RequestGroup> rg = groups[0];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL(std::string("http://file1p1"), uris[0]);
   }
   {
     std::shared_ptr<RequestGroup> rg = groups[1];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL(std::string("http://file2p1"), uris[0]);
   }
   {
     std::shared_ptr<RequestGroup> rg = groups[2];
-    std::vector<std::string> uris;
-    rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+    auto uris = rg->getDownloadContext()->getFirstFileEntry()->getUris();
     CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
     CPPUNIT_ASSERT_EQUAL(std::string("http://file3p1"), uris[0]);
   }