/* */ #ifndef _D_DEFAULT_BT_ANNOUNCE_H_ #define _D_DEFAULT_BT_ANNOUNCE_H_ #include "BtAnnounce.h" #include "BtContext.h" #include "TimeA2.h" #include "AnnounceList.h" #include "Option.h" #include "Logger.h" #include "BtRuntime.h" #include "PieceStorage.h" #include "PeerStorage.h" class Randomizer; typedef SharedHandle RandomizerHandle; #define DEFAULT_ANNOUNCE_INTERVAL 1800 class DefaultBtAnnounce : public BtAnnounce { private: BtContextHandle btContext; int32_t trackers; Time prevAnnounceTime; int32_t interval; int32_t minInterval; int32_t complete; int32_t incomplete; AnnounceList announceList; string trackerId; string key; const Option* option; Logger* logger; RandomizerHandle _randomizer; BtRuntimeHandle btRuntime; PieceStorageHandle pieceStorage; PeerStorageHandle peerStorage; public: DefaultBtAnnounce(BtContextHandle btContext, const Option* option); virtual ~DefaultBtAnnounce(); void setBtRuntime(const BtRuntimeHandle& btRuntime) { this->btRuntime = btRuntime; } BtRuntimeHandle getBtRuntime() const { return btRuntime; } void setPieceStorage(const PieceStorageHandle& pieceStorage) { this->pieceStorage = pieceStorage; } PieceStorageHandle getPieceStorage() const { return pieceStorage; } void setPeerStorage(const PeerStorageHandle& peerStorage) { this->peerStorage = peerStorage; } PeerStorageHandle getPeerStorage() const { return peerStorage; } bool isDefaultAnnounceReady(); bool isStoppedAnnounceReady(); bool isCompletedAnnounceReady(); virtual bool isAnnounceReady(); virtual string getAnnounceUrl(); virtual void announceStart(); virtual void announceSuccess(); virtual void announceFailure(); virtual bool isAllAnnounceFailed(); virtual void resetAnnounce(); virtual void processAnnounceResponse(const char* trackerResponse, size_t trackerResponseLength); virtual bool noMoreAnnounce(); virtual void shuffleAnnounce(); void generateKey(); void setRandomizer(const RandomizerHandle& randomizer); }; #endif // _D_DEFAULT_BT_ANNOUNCE_H_