2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Renamed member variables
	* src/DefaultBtAnnounce.cc
	* src/DefaultBtAnnounce.h
pull/1/head
Tatsuhiro Tsujikawa 2010-06-12 03:13:16 +00:00
parent ded040666e
commit 465502299b
3 changed files with 108 additions and 102 deletions

View File

@ -1,3 +1,9 @@
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Renamed member variables
* src/DefaultBtAnnounce.cc
* src/DefaultBtAnnounce.h
2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-06-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Made protected member variable private. Added accessor funcs. Made protected member variable private. Added accessor funcs.

View File

@ -60,16 +60,18 @@ DefaultBtAnnounce::DefaultBtAnnounce
(const SharedHandle<DownloadContext>& downloadContext, (const SharedHandle<DownloadContext>& downloadContext,
const Option* option): const Option* option):
_downloadContext(downloadContext), _downloadContext(downloadContext),
trackers(0), _trackers(0),
prevAnnounceTimer(0), _prevAnnounceTimer(0),
interval(DEFAULT_ANNOUNCE_INTERVAL), _interval(DEFAULT_ANNOUNCE_INTERVAL),
minInterval(DEFAULT_ANNOUNCE_INTERVAL), _minInterval(DEFAULT_ANNOUNCE_INTERVAL),
_userDefinedInterval(0), _userDefinedInterval(0),
complete(0), _complete(0),
incomplete(0), _incomplete(0),
announceList(downloadContext->getAttribute(bittorrent::BITTORRENT)[bittorrent::ANNOUNCE_LIST]), _announceList
option(option), (downloadContext->getAttribute
logger(LogFactory::getInstance()), (bittorrent::BITTORRENT)[bittorrent::ANNOUNCE_LIST]),
_option(option),
_logger(LogFactory::getInstance()),
_randomizer(SimpleRandomizer::getInstance()) _randomizer(SimpleRandomizer::getInstance())
{} {}
@ -78,23 +80,23 @@ DefaultBtAnnounce::~DefaultBtAnnounce() {
bool DefaultBtAnnounce::isDefaultAnnounceReady() { bool DefaultBtAnnounce::isDefaultAnnounceReady() {
return return
(trackers == 0 && (_trackers == 0 &&
prevAnnounceTimer. _prevAnnounceTimer.
difference(global::wallclock) >= (_userDefinedInterval==0? difference(global::wallclock) >= (_userDefinedInterval==0?
minInterval:_userDefinedInterval) && _minInterval:_userDefinedInterval) &&
!announceList.allTiersFailed()); !_announceList.allTiersFailed());
} }
bool DefaultBtAnnounce::isStoppedAnnounceReady() { bool DefaultBtAnnounce::isStoppedAnnounceReady() {
return (trackers == 0 && return (_trackers == 0 &&
btRuntime->isHalt() && _btRuntime->isHalt() &&
announceList.countStoppedAllowedTier()); _announceList.countStoppedAllowedTier());
} }
bool DefaultBtAnnounce::isCompletedAnnounceReady() { bool DefaultBtAnnounce::isCompletedAnnounceReady() {
return (trackers == 0 && return (_trackers == 0 &&
pieceStorage->allDownloadFinished() && _pieceStorage->allDownloadFinished() &&
announceList.countCompletedAllowedTier()); _announceList.countCompletedAllowedTier());
} }
bool DefaultBtAnnounce::isAnnounceReady() { bool DefaultBtAnnounce::isAnnounceReady() {
@ -113,34 +115,34 @@ static bool uriHasQuery(const std::string& uri)
std::string DefaultBtAnnounce::getAnnounceUrl() { std::string DefaultBtAnnounce::getAnnounceUrl() {
if(isStoppedAnnounceReady()) { if(isStoppedAnnounceReady()) {
if(!announceList.currentTierAcceptsStoppedEvent()) { if(!_announceList.currentTierAcceptsStoppedEvent()) {
announceList.moveToStoppedAllowedTier(); _announceList.moveToStoppedAllowedTier();
} }
announceList.setEvent(AnnounceTier::STOPPED); _announceList.setEvent(AnnounceTier::STOPPED);
} else if(isCompletedAnnounceReady()) { } else if(isCompletedAnnounceReady()) {
if(!announceList.currentTierAcceptsCompletedEvent()) { if(!_announceList.currentTierAcceptsCompletedEvent()) {
announceList.moveToCompletedAllowedTier(); _announceList.moveToCompletedAllowedTier();
} }
announceList.setEvent(AnnounceTier::COMPLETED); _announceList.setEvent(AnnounceTier::COMPLETED);
} else if(isDefaultAnnounceReady()) { } else if(isDefaultAnnounceReady()) {
// If download completed before "started" event is sent to a tracker, // If download completed before "started" event is sent to a tracker,
// we change the event to something else to prevent us from // we change the event to something else to prevent us from
// sending "completed" event. // sending "completed" event.
if(pieceStorage->allDownloadFinished() && if(_pieceStorage->allDownloadFinished() &&
announceList.getEvent() == AnnounceTier::STARTED) { _announceList.getEvent() == AnnounceTier::STARTED) {
announceList.setEvent(AnnounceTier::STARTED_AFTER_COMPLETION); _announceList.setEvent(AnnounceTier::STARTED_AFTER_COMPLETION);
} }
} else { } else {
return A2STR::NIL; return A2STR::NIL;
} }
unsigned int numWant = 50; unsigned int numWant = 50;
if(!btRuntime->lessThanMinPeers() || btRuntime->isHalt()) { if(!_btRuntime->lessThanMinPeers() || _btRuntime->isHalt()) {
numWant = 0; numWant = 0;
} }
TransferStat stat = peerStorage->calculateStat(); TransferStat stat = _peerStorage->calculateStat();
uint64_t left = uint64_t left =
pieceStorage->getTotalLength()-pieceStorage->getCompletedLength(); _pieceStorage->getTotalLength()-_pieceStorage->getCompletedLength();
std::string uri = announceList.getAnnounce(); std::string uri = _announceList.getAnnounce();
uri += uriHasQuery(uri) ? "&" : "?"; uri += uriHasQuery(uri) ? "&" : "?";
uri += "info_hash="; uri += "info_hash=";
uri += util::torrentPercentEncode(bittorrent::getInfoHash(_downloadContext), uri += util::torrentPercentEncode(bittorrent::getInfoHash(_downloadContext),
@ -163,59 +165,59 @@ std::string DefaultBtAnnounce::getAnnounceUrl() {
uri += "&numwant="; uri += "&numwant=";
uri += util::uitos(numWant); uri += util::uitos(numWant);
uri += "&no_peer_id=1"; uri += "&no_peer_id=1";
if(btRuntime->getListenPort() > 0) { if(_btRuntime->getListenPort() > 0) {
uri += "&port="; uri += "&port=";
uri += util::uitos(btRuntime->getListenPort()); uri += util::uitos(_btRuntime->getListenPort());
} }
std::string event = announceList.getEventString(); std::string event = _announceList.getEventString();
if(!event.empty()) { if(!event.empty()) {
uri += "&event="; uri += "&event=";
uri += event; uri += event;
} }
if(!trackerId.empty()) { if(!_trackerId.empty()) {
uri += "&trackerid="+util::torrentPercentEncode(trackerId); uri += "&trackerid="+util::torrentPercentEncode(_trackerId);
} }
if(option->getAsBool(PREF_BT_REQUIRE_CRYPTO)) { if(_option->getAsBool(PREF_BT_REQUIRE_CRYPTO)) {
uri += "&requirecrypto=1"; uri += "&requirecrypto=1";
} else { } else {
uri += "&supportcrypto=1"; uri += "&supportcrypto=1";
} }
if(!option->blank(PREF_BT_EXTERNAL_IP)) { if(!_option->blank(PREF_BT_EXTERNAL_IP)) {
uri += "&ip="; uri += "&ip=";
uri += option->get(PREF_BT_EXTERNAL_IP); uri += _option->get(PREF_BT_EXTERNAL_IP);
} }
return uri; return uri;
} }
void DefaultBtAnnounce::announceStart() { void DefaultBtAnnounce::announceStart() {
trackers++; ++_trackers;
} }
void DefaultBtAnnounce::announceSuccess() { void DefaultBtAnnounce::announceSuccess() {
trackers = 0; _trackers = 0;
announceList.announceSuccess(); _announceList.announceSuccess();
} }
void DefaultBtAnnounce::announceFailure() { void DefaultBtAnnounce::announceFailure() {
trackers = 0; _trackers = 0;
announceList.announceFailure(); _announceList.announceFailure();
} }
bool DefaultBtAnnounce::isAllAnnounceFailed() { bool DefaultBtAnnounce::isAllAnnounceFailed() {
return announceList.allTiersFailed(); return _announceList.allTiersFailed();
} }
void DefaultBtAnnounce::resetAnnounce() { void DefaultBtAnnounce::resetAnnounce() {
prevAnnounceTimer = global::wallclock; _prevAnnounceTimer = global::wallclock;
announceList.resetTier(); _announceList.resetTier();
} }
void void
DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse, DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse,
size_t trackerResponseLength) size_t trackerResponseLength)
{ {
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Now processing tracker response."); _logger->debug("Now processing tracker response.");
} }
const BDE dict = const BDE dict =
bencode::decode(trackerResponse, trackerResponseLength); bencode::decode(trackerResponse, trackerResponseLength);
@ -229,69 +231,67 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse,
} }
const BDE& warn = dict[BtAnnounce::WARNING_MESSAGE]; const BDE& warn = dict[BtAnnounce::WARNING_MESSAGE];
if(warn.isString()) { if(warn.isString()) {
logger->warn(MSG_TRACKER_WARNING_MESSAGE, warn.s().c_str()); _logger->warn(MSG_TRACKER_WARNING_MESSAGE, warn.s().c_str());
} }
const BDE& tid = dict[BtAnnounce::TRACKER_ID]; const BDE& tid = dict[BtAnnounce::TRACKER_ID];
if(tid.isString()) { if(tid.isString()) {
trackerId = tid.s(); _trackerId = tid.s();
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Tracker ID:%s", trackerId.c_str()); _logger->debug("Tracker ID:%s", _trackerId.c_str());
} }
} }
const BDE& ival = dict[BtAnnounce::INTERVAL]; const BDE& ival = dict[BtAnnounce::INTERVAL];
if(ival.isInteger() && ival.i() > 0) { if(ival.isInteger() && ival.i() > 0) {
interval = ival.i(); _interval = ival.i();
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Interval:%d", interval); _logger->debug("Interval:%d", _interval);
} }
} }
const BDE& mival = dict[BtAnnounce::MIN_INTERVAL]; const BDE& mival = dict[BtAnnounce::MIN_INTERVAL];
if(mival.isInteger() && mival.i() > 0) { if(mival.isInteger() && mival.i() > 0) {
minInterval = mival.i(); _minInterval = mival.i();
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Min interval:%d", minInterval); _logger->debug("Min interval:%d", _minInterval);
}
if(minInterval > interval) {
minInterval = interval;
} }
_minInterval = std::min(_minInterval, _interval);
} else { } else {
// Use interval as a minInterval if minInterval is not supplied. // Use interval as a minInterval if minInterval is not supplied.
minInterval = interval; _minInterval = _interval;
} }
const BDE& comp = dict[BtAnnounce::COMPLETE]; const BDE& comp = dict[BtAnnounce::COMPLETE];
if(comp.isInteger()) { if(comp.isInteger()) {
complete = comp.i(); _complete = comp.i();
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Complete:%d", complete); _logger->debug("Complete:%d", _complete);
} }
} }
const BDE& incomp = dict[BtAnnounce::INCOMPLETE]; const BDE& incomp = dict[BtAnnounce::INCOMPLETE];
if(incomp.isInteger()) { if(incomp.isInteger()) {
incomplete = incomp.i(); _incomplete = incomp.i();
if(logger->debug()) { if(_logger->debug()) {
logger->debug("Incomplete:%d", incomplete); _logger->debug("Incomplete:%d", _incomplete);
} }
} }
const BDE& peerData = dict[BtAnnounce::PEERS]; const BDE& peerData = dict[BtAnnounce::PEERS];
if(peerData.isNone()) { if(peerData.isNone()) {
logger->info(MSG_NO_PEER_LIST_RECEIVED); _logger->info(MSG_NO_PEER_LIST_RECEIVED);
} else { } else {
if(!btRuntime->isHalt() && btRuntime->lessThanMinPeers()) { if(!_btRuntime->isHalt() && _btRuntime->lessThanMinPeers()) {
std::vector<SharedHandle<Peer> > peers; std::vector<SharedHandle<Peer> > peers;
PeerListProcessor().extractPeer(peerData, std::back_inserter(peers)); PeerListProcessor().extractPeer(peerData, std::back_inserter(peers));
peerStorage->addPeer(peers); _peerStorage->addPeer(peers);
} }
} }
} }
bool DefaultBtAnnounce::noMoreAnnounce() { bool DefaultBtAnnounce::noMoreAnnounce() {
return (trackers == 0 && return (_trackers == 0 &&
btRuntime->isHalt() && _btRuntime->isHalt() &&
!announceList.countStoppedAllowedTier()); !_announceList.countStoppedAllowedTier());
} }
void DefaultBtAnnounce::shuffleAnnounce() { void DefaultBtAnnounce::shuffleAnnounce() {
announceList.shuffle(); _announceList.shuffle();
} }
void DefaultBtAnnounce::setRandomizer(const RandomizerHandle& randomizer) void DefaultBtAnnounce::setRandomizer(const RandomizerHandle& randomizer)
@ -301,22 +301,22 @@ void DefaultBtAnnounce::setRandomizer(const RandomizerHandle& randomizer)
void DefaultBtAnnounce::setBtRuntime(const BtRuntimeHandle& btRuntime) void DefaultBtAnnounce::setBtRuntime(const BtRuntimeHandle& btRuntime)
{ {
this->btRuntime = btRuntime; _btRuntime = btRuntime;
} }
void DefaultBtAnnounce::setPieceStorage(const PieceStorageHandle& pieceStorage) void DefaultBtAnnounce::setPieceStorage(const PieceStorageHandle& pieceStorage)
{ {
this->pieceStorage = pieceStorage; _pieceStorage = pieceStorage;
} }
void DefaultBtAnnounce::setPeerStorage(const PeerStorageHandle& peerStorage) void DefaultBtAnnounce::setPeerStorage(const PeerStorageHandle& peerStorage)
{ {
this->peerStorage = peerStorage; _peerStorage = peerStorage;
} }
void DefaultBtAnnounce::overrideMinInterval(time_t interval) void DefaultBtAnnounce::overrideMinInterval(time_t interval)
{ {
minInterval = interval; _minInterval = interval;
} }
} // namespace aria2 } // namespace aria2

View File

@ -52,21 +52,21 @@ class Randomizer;
class DefaultBtAnnounce : public BtAnnounce { class DefaultBtAnnounce : public BtAnnounce {
private: private:
SharedHandle<DownloadContext> _downloadContext; SharedHandle<DownloadContext> _downloadContext;
unsigned int trackers; unsigned int _trackers;
Timer prevAnnounceTimer; Timer _prevAnnounceTimer;
time_t interval; time_t _interval;
time_t minInterval; time_t _minInterval;
time_t _userDefinedInterval; time_t _userDefinedInterval;
unsigned int complete; unsigned int _complete;
unsigned int incomplete; unsigned int _incomplete;
AnnounceList announceList; AnnounceList _announceList;
std::string trackerId; std::string _trackerId;
const Option* option; const Option* _option;
Logger* logger; Logger* _logger;
SharedHandle<Randomizer> _randomizer; SharedHandle<Randomizer> _randomizer;
SharedHandle<BtRuntime> btRuntime; SharedHandle<BtRuntime> _btRuntime;
SharedHandle<PieceStorage> pieceStorage; SharedHandle<PieceStorage> _pieceStorage;
SharedHandle<PeerStorage> peerStorage; SharedHandle<PeerStorage> _peerStorage;
public: public:
DefaultBtAnnounce(const SharedHandle<DownloadContext>& downloadContext, DefaultBtAnnounce(const SharedHandle<DownloadContext>& downloadContext,
const Option* option); const Option* option);
@ -77,21 +77,21 @@ public:
const SharedHandle<BtRuntime>& getBtRuntime() const const SharedHandle<BtRuntime>& getBtRuntime() const
{ {
return btRuntime; return _btRuntime;
} }
void setPieceStorage(const SharedHandle<PieceStorage>& pieceStorage); void setPieceStorage(const SharedHandle<PieceStorage>& pieceStorage);
const SharedHandle<PieceStorage>& getPieceStorage() const const SharedHandle<PieceStorage>& getPieceStorage() const
{ {
return pieceStorage; return _pieceStorage;
} }
void setPeerStorage(const SharedHandle<PeerStorage>& peerStorage); void setPeerStorage(const SharedHandle<PeerStorage>& peerStorage);
const SharedHandle<PeerStorage>& getPeerStorage() const const SharedHandle<PeerStorage>& getPeerStorage() const
{ {
return peerStorage; return _peerStorage;
} }
bool isDefaultAnnounceReady(); bool isDefaultAnnounceReady();
@ -127,27 +127,27 @@ public:
time_t getInterval() const time_t getInterval() const
{ {
return interval; return _interval;
} }
time_t getMinInterval() const time_t getMinInterval() const
{ {
return minInterval; return _minInterval;
} }
unsigned int getComplete() const unsigned int getComplete() const
{ {
return complete; return _complete;
} }
unsigned int getIncomplete() const unsigned int getIncomplete() const
{ {
return incomplete; return _incomplete;
} }
const std::string& getTrackerID() const const std::string& getTrackerID() const
{ {
return trackerId; return _trackerId;
} }
void setUserDefinedInterval(time_t interval) void setUserDefinedInterval(time_t interval)