/* */ #ifndef _D_BITTORRENT_HELPER_H_ #define _D_BITTORRENT_HELPER_H_ #include "common.h" #include #include #include #include "SharedHandle.h" #include "AnnounceTier.h" #include "BDE.h" #include "Util.h" namespace aria2 { class DownloadContext; class Randomizer; namespace bittorrent { extern const std::string INFO_HASH; extern const std::string MODE; extern const std::string PRIVATE; extern const std::string ANNOUNCE_LIST; extern const std::string NODES; extern const std::string HOSTNAME; extern const std::string PORT; extern const std::string NAME; extern const std::string SINGLE; extern const std::string MULTI; extern const std::string BITTORRENT; void load(const std::string& torrentFile, const SharedHandle& ctx, const std::string& overrideName = ""); void load(const std::string& torrentFile, const SharedHandle& ctx, const std::deque& uris, const std::string& overrideName = ""); void loadFromMemory(const unsigned char* content, size_t length, const SharedHandle& ctx, const std::string& defaultName, const std::string& overrideName = ""); void loadFromMemory(const unsigned char* content, size_t length, const SharedHandle& ctx, const std::deque& uris, const std::string& defaultName, const std::string& overrideName = ""); void loadFromMemory(const std::string& context, const SharedHandle& ctx, const std::string& defaultName, const std::string& overrideName = ""); void loadFromMemory(const std::string& context, const SharedHandle& ctx, const std::deque& uris, const std::string& defaultName, const std::string& overrideName = ""); // Generates Peer ID. BitTorrent specification says Peer ID is 20-byte // length. This function uses peerIdPrefix as a Peer ID and it is // less than 20bytes, random bytes are generated and appened to it. If // peerIdPrefix is larger than 20bytes, first 20bytes are used. std::string generatePeerId (const std::string& peerIdPrefix, const SharedHandle& randomizer); // Generates Peer ID and stores it in static variable. This function // uses generatePeerId(peerIdPrefix, randomizer) to produce Peer ID. const std::string& generateStaticPeerId (const std::string& peerIdPrefix, const SharedHandle& randomizer); // Returns Peer ID statically stored by generateStaticPeerId(). If // Peer ID is not stored yet, this function calls // generateStaticPeerId("-aria2-", randomizer) const unsigned char* getStaticPeerId(); // Set newPeerId as a static Peer ID. newPeerId must be 20-byte // length. void setStaticPeerId(const std::string& newPeerId); // Computes fast set index and stores them in fastset. void computeFastSet (std::vector& fastSet, const std::string& ipaddr, size_t numPieces, const unsigned char* infoHash, size_t fastSetSize); // Writes the detailed information about torrent loaded in dctx. void print(std::ostream& o, const SharedHandle& dctx); // Returns the value associated with INFO_HASH key in BITTORRENT // attribute. const unsigned char* getInfoHash(const SharedHandle& downloadContext); std::string getInfoHashString(const SharedHandle& downloadContext); } // namespace bittorrent } // namespace aria2 #endif // _D_BITTORRENT_HELPER_H_