Add DownloadHandle::getInfohash() and getPieceLength()

pull/89/head
Tatsuhiro Tsujikawa 2013-05-10 21:51:41 +09:00
parent 1b6827b060
commit 1a953d5f93
2 changed files with 37 additions and 0 deletions

View File

@ -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;

View File

@ -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.
*/