浏览代码

Change the way to receive resulting gids in addUri, addMetalink

Tatsuhiro Tsujikawa 12 年之前
父节点
当前提交
8940d2aafd
共有 4 个文件被更改,包括 32 次插入30 次删除
  1. 1 2
      examples/libaria2ex.cc
  2. 1 2
      examples/libaria2wx.cc
  3. 10 6
      src/aria2api.cc
  4. 20 20
      src/includes/aria2/aria2.h

+ 1 - 2
examples/libaria2ex.cc

@@ -54,8 +54,7 @@ int main()
   // Download files are stored in the current directory
   aria2::KeyVals options = { std::make_pair("dir", ".") };
   // Add URI
-  aria2::A2Gid gid;
-  aria2::addUri(session, gid, uris, options);
+  aria2::addUri(session, 0, uris, options);
   auto start = std::chrono::steady_clock::now();
   for(;;) {
     int rv = aria2::run(session, aria2::RUN_ONCE);

+ 1 - 2
examples/libaria2wx.cc

@@ -113,9 +113,8 @@ struct AddUriJob : public Job {
   {}
   virtual void execute(aria2::Session* session)
   {
-    aria2::A2Gid gid;
     // TODO check return value
-    aria2::addUri(session, gid, uris, options);
+    aria2::addUri(session, 0, uris, options);
   }
   std::vector<std::string> uris;
   aria2::KeyVals options;

+ 10 - 6
src/aria2api.cc

@@ -226,7 +226,7 @@ void addRequestGroup(const SharedHandle<RequestGroup>& group,
 } // namespace
 
 int addUri(Session* session,
-           A2Gid& gid,
+           A2Gid* gid,
            const std::vector<std::string>& uris,
            const KeyVals& options,
            int position)
@@ -246,14 +246,16 @@ int addUri(Session* session,
                            /* ignoreForceSeq = */ true,
                            /* ignoreLocalPath = */ true);
   if(!result.empty()) {
-    gid = result.front()->getGID();
     addRequestGroup(result.front(), e, position);
+    if(gid) {
+      *gid = result.front()->getGID();
+    }
   }
   return 0;
 }
 
 int addMetalink(Session* session,
-                std::vector<A2Gid>& gids,
+                std::vector<A2Gid>* gids,
                 const std::string& metalinkFile,
                 const KeyVals& options,
                 int position)
@@ -278,9 +280,11 @@ int addMetalink(Session* session,
     } else {
       e->getRequestGroupMan()->addReservedGroup(result);
     }
-    for(std::vector<SharedHandle<RequestGroup> >::const_iterator i =
-          result.begin(), eoi = result.end(); i != eoi; ++i) {
-      gids.push_back((*i)->getGID());
+    if(gids) {
+      for(std::vector<SharedHandle<RequestGroup> >::const_iterator i =
+            result.begin(), eoi = result.end(); i != eoi; ++i) {
+        (*gids).push_back((*i)->getGID());
+      }
     }
   }
   return 0;

+ 20 - 20
src/includes/aria2/aria2.h

@@ -138,33 +138,33 @@ A2Gid hexToGid(const std::string& hex);
 bool isNull(const A2Gid& gid);
 
 // Adds new HTTP(S)/FTP/BitTorrent Magnet URI.  On successful return,
-// the |gid| includes the GID of newly added download.  The |uris|
-// includes URI to be downloaded.  For BitTorrent Magnet URI, the
-// |uris| must have only one element and it should be BitTorrent
-// Magnet URI. URIs in uris must point to the same file. If you mix
-// other URIs which point to another file, aria2 does not complain but
-// download may fail. The |options| is a pair of option name and
-// value. If the |position| is not negative integer, the new download
-// is inserted at position in the waiting queue. If the |position| is
-// negative or the |position| is larger than the size of the queue, it
-// is appended at the end of the queue.  This function returns 0 if it
-// succeeds, or -1.
+// if the |gid| is not NULL, the GID of added download will be
+// assigned to the |*gid|.  The |uris| includes URI to be downloaded.
+// For BitTorrent Magnet URI, the |uris| must have only one element
+// and it should be BitTorrent Magnet URI. URIs in uris must point to
+// the same file. If you mix other URIs which point to another file,
+// aria2 does not complain but download may fail. The |options| is a
+// pair of option name and value. If the |position| is not negative
+// integer, the new download is inserted at position in the waiting
+// queue. If the |position| is negative or the |position| is larger
+// than the size of the queue, it is appended at the end of the queue.
+// This function returns 0 if it succeeds, or -1.
 int addUri(Session* session,
-           A2Gid& gid,
+           A2Gid* gid,
            const std::vector<std::string>& uris,
            const KeyVals& options,
            int position = -1);
 
 // Adds Metalink download. The path to Metalink file is specified by
-// the |metalinkFile|.  On successful return, the GID of added
-// download is appended to the |gids|. The |options| is a pair of
-// option name and value. If the |position| is not negative integer,
-// the new download is inserted at position in the waiting queue. If
-// the |position| is negative or the |position| is larger than the
-// size of the queue, it is appended at the end of the queue. This
-// function returns 0 if it succeeds, or -1.
+// the |metalinkFile|.  On successful return, if the |gids| is not
+// NULL, the GIDs of added downloads are appended to the |*gids|. The
+// |options| is a pair of option name and value. If the |position| is
+// not negative integer, the new download is inserted at position in
+// the waiting queue. If the |position| is negative or the |position|
+// is larger than the size of the queue, it is appended at the end of
+// the queue. This function returns 0 if it succeeds, or -1.
 int addMetalink(Session* session,
-                std::vector<A2Gid>& gids,
+                std::vector<A2Gid>* gids,
                 const std::string& metalinkFile,
                 const KeyVals& options,
                 int position = -1);