Explorar o código

Add DownloadHandle::getInfohash() and getPieceLength()

Tatsuhiro Tsujikawa %!s(int64=12) %!d(string=hai) anos
pai
achega
1a953d5f93
Modificáronse 2 ficheiros con 37 adicións e 0 borrados
  1. 28 0
      src/aria2api.cc
  2. 9 0
      src/includes/aria2/aria2.h

+ 28 - 0
src/aria2api.cc

@@ -58,6 +58,10 @@
 #include "RpcMethodImpl.h"
 #include "console.h"
 #include "KeepRunningCommand.h"
+#include "A2STR.h"
+#ifdef ENABLE_BITTORRENT
+# include "bittorrent_helper.h"
+#endif // ENABLE_BITTORRENT
 
 namespace aria2 {
 
@@ -507,6 +511,22 @@ struct RequestGroupDH : public DownloadHandle {
   {
     return ts.uploadSpeed;
   }
+  virtual const std::string& getInfoHash()
+  {
+#ifdef ENABLE_BITTORRENT
+    if(group->getDownloadContext()->hasAttribute(CTX_ATTR_BT)) {
+      SharedHandle<TorrentAttribute> torrentAttrs =
+        bittorrent::getTorrentAttrs(group->getDownloadContext());
+      return torrentAttrs->infoHash;
+    }
+#endif // ENABLE_BITTORRENT
+    return A2STR::NIL;
+  }
+  virtual size_t getPieceLength()
+  {
+    const SharedHandle<DownloadContext>& dctx = group->getDownloadContext();
+    return dctx->getPieceLength();
+  }
   virtual size_t getNumPieces()
   {
     return group->getDownloadContext()->getNumPieces();
@@ -603,6 +623,14 @@ struct DownloadResultDH : public DownloadHandle {
   {
     return 0;
   }
+  virtual const std::string& getInfoHash()
+  {
+    return dr->infoHash;
+  }
+  virtual size_t getPieceLength()
+  {
+    return dr->pieceLength;
+  }
   virtual size_t getNumPieces()
   {
     return dr->numPieces;

+ 9 - 0
src/includes/aria2/aria2.h

@@ -460,6 +460,15 @@ public:
    * Returns upload speed of this download measured in bytes/sec.
    */
   virtual int getUploadSpeed() = 0;
+  /**
+   * Returns 20 bytes InfoHash if BitTorrent transfer is
+   * involved. Otherwise the empty string is returned.
+   */
+  virtual const std::string& getInfoHash() = 0;
+  /**
+   * Returns piece length in bytes.
+   */
+  virtual size_t getPieceLength() = 0;
   /**
    * Returns the number of pieces.
    */