From 1a953d5f9394cd03e128aabb9b59eda62023fc9e Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 10 May 2013 21:51:41 +0900 Subject: [PATCH] Add DownloadHandle::getInfohash() and getPieceLength() --- src/aria2api.cc | 28 ++++++++++++++++++++++++++++ src/includes/aria2/aria2.h | 9 +++++++++ 2 files changed, 37 insertions(+) diff --git a/src/aria2api.cc b/src/aria2api.cc index a23e0fea..87555929 100644 --- a/src/aria2api.cc +++ b/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 torrentAttrs = + bittorrent::getTorrentAttrs(group->getDownloadContext()); + return torrentAttrs->infoHash; + } +#endif // ENABLE_BITTORRENT + return A2STR::NIL; + } + virtual size_t getPieceLength() + { + const SharedHandle& 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; diff --git a/src/includes/aria2/aria2.h b/src/includes/aria2/aria2.h index 8f0500d2..97130e25 100644 --- a/src/includes/aria2/aria2.h +++ b/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. */