/* */ #ifndef _D_BT_ANNOUNCE_H_ #define _D_BT_ANNOUNCE_H_ #include "common.h" #include "SharedHandle.h" #include "a2time.h" #include namespace aria2 { class BtAnnounce { public: virtual ~BtAnnounce() {} /** * Returns true if announce is required. * Otherwise returns false. * * There are 4 announce timings: * 1) started: when a download just started. * 2) stopped: when the client quits. * 3) completed: when a download just completed. * 4) When a certain amount of time, aka announce interval, specified by * a tracker, is elapsed. */ virtual bool isAnnounceReady() = 0; /** * Returns announe URL with all necessary parameters included. */ virtual std::string getAnnounceUrl() = 0; /** * Tells that the announce process has just started. */ virtual void announceStart() = 0; /** * Tells that the announce succeeded. */ virtual void announceSuccess() = 0; /** * Tells that the announce failed. */ virtual void announceFailure() = 0; /** * Returns true if all announce attempt failed. */ virtual bool isAllAnnounceFailed() = 0; /** * Resets announce status. */ virtual void resetAnnounce() = 0; /** * Processes the repsponse from the tracker. */ virtual void processAnnounceResponse(const unsigned char* trackerResponse, size_t trackerResponseLength) = 0; /** * Returns true if no more announce is needed. */ virtual bool noMoreAnnounce() = 0; /** * Shuffles the URLs in each announce tier. */ virtual void shuffleAnnounce() = 0; virtual void overrideMinInterval(time_t interval) = 0; static const std::string FAILURE_REASON; static const std::string WARNING_MESSAGE; static const std::string TRACKER_ID; static const std::string INTERVAL; static const std::string MIN_INTERVAL; static const std::string COMPLETE; static const std::string INCOMPLETE; static const std::string PEERS; static const time_t DEFAULT_ANNOUNCE_INTERVAL = 120; }; typedef SharedHandle BtAnnounceHandle; } // namespace aria2 #endif // _D_BT_ANNOUNCE_H_