From cb795bc989e2c90ed7a7e7b1c7b1437aad61014f Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 14 May 2008 11:47:15 +0000 Subject: [PATCH] 2008-05-14 Tatsuhiro Tsujikawa Made string literal for tracker response static const std::string * src/BtAnnounce.cc * src/BtAnnounce.h * src/DefaultBtAnnounce.cc --- ChangeLog | 7 +++++ src/BtAnnounce.cc | 55 ++++++++++++++++++++++++++++++++++++++++ src/BtAnnounce.h | 16 ++++++++++++ src/DefaultBtAnnounce.cc | 51 +++++++++++++++++++++---------------- src/Makefile.am | 2 +- src/Makefile.in | 23 +++++++++-------- 6 files changed, 121 insertions(+), 33 deletions(-) create mode 100644 src/BtAnnounce.cc diff --git a/ChangeLog b/ChangeLog index f786ac8d..730bc14e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-14 Tatsuhiro Tsujikawa + + Made string literal for tracker response static const std::string + * src/BtAnnounce.cc + * src/BtAnnounce.h + * src/DefaultBtAnnounce.cc + 2008-05-14 Tatsuhiro Tsujikawa Use DHTMessage::T instead of "t". diff --git a/src/BtAnnounce.cc b/src/BtAnnounce.cc new file mode 100644 index 00000000..3719e8eb --- /dev/null +++ b/src/BtAnnounce.cc @@ -0,0 +1,55 @@ +/* */ +#include "BtAnnounce.h" + +namespace aria2 { + +const std::string BtAnnounce::FAILURE_REASON("failure reason"); + +const std::string BtAnnounce::WARNING_MESSAGE("warning message"); + +const std::string BtAnnounce::TRACKER_ID("tracker id"); + +const std::string BtAnnounce::INTERVAL("interval"); + +const std::string BtAnnounce::MIN_INTERVAL("min interval"); + +const std::string BtAnnounce::COMPLETE("complete"); + +const std::string BtAnnounce::INCOMPLETE("incomplete"); + +const std::string BtAnnounce::PEERS("peers"); + +} // namespace aria2 diff --git a/src/BtAnnounce.h b/src/BtAnnounce.h index 6efe9683..e7c76109 100644 --- a/src/BtAnnounce.h +++ b/src/BtAnnounce.h @@ -103,6 +103,22 @@ public: * Shuffles the URLs in each announce tier. */ virtual void shuffleAnnounce() = 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; }; typedef SharedHandle BtAnnounceHandle; diff --git a/src/DefaultBtAnnounce.cc b/src/DefaultBtAnnounce.cc index d45f1be0..caf3f424 100644 --- a/src/DefaultBtAnnounce.cc +++ b/src/DefaultBtAnnounce.cc @@ -140,26 +140,26 @@ std::string DefaultBtAnnounce::getAnnounceUrl() { if(left < 0) { left = 0; } - std::string url = announceList.getAnnounce()+"?"+ - "info_hash="+Util::torrentUrlencode(btContext->getInfoHash(), - btContext->getInfoHashLength())+"&"+ - "peer_id="+Util::torrentUrlencode(btContext->getPeerId(), 20)+"&"+ - "uploaded="+Util::uitos(stat.getSessionUploadLength())+"&"+ - "downloaded="+Util::uitos(stat.getSessionDownloadLength())+"&"+ - "left="+Util::uitos(left)+"&"+ - "compact=1"+"&"+ - "key="+key+"&"+ - "numwant="+Util::uitos(numWant)+"&"+ - "no_peer_id=1"; + std::string url = announceList.getAnnounce()+ + "?info_hash="+Util::torrentUrlencode(btContext->getInfoHash(), + btContext->getInfoHashLength())+ + "&peer_id="+Util::torrentUrlencode(btContext->getPeerId(), 20)+ + "&uploaded="+Util::uitos(stat.getSessionUploadLength())+ + "&downloaded="+Util::uitos(stat.getSessionDownloadLength())+ + "&left="+Util::uitos(left)+ + "&compact=1"+ + "&key="+key+ + "&numwant="+Util::uitos(numWant)+ + "&no_peer_id=1"; if(btRuntime->getListenPort() > 0) { - url += std::string("&")+"port="+Util::uitos(btRuntime->getListenPort()); + url += "&port="+Util::uitos(btRuntime->getListenPort()); } std::string event = announceList.getEventString(); if(!event.empty()) { - url += std::string("&")+"event="+event; + url += "&event="+event; } if(!trackerId.empty()) { - url += std::string("&")+"trackerid="+Util::torrentUrlencode(trackerId); + url += "&trackerid="+Util::torrentUrlencode(trackerId); } if(option->getAsBool(PREF_BT_REQUIRE_CRYPTO)) { url += "&requirecrypto=1"; @@ -202,23 +202,27 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse, if(!response) { throw DlAbortEx(MSG_NULL_TRACKER_RESPONSE); } - const Data* failureReasonData = dynamic_cast(response->get("failure reason")); + const Data* failureReasonData = + dynamic_cast(response->get(BtAnnounce::FAILURE_REASON)); if(failureReasonData) { throw DlAbortEx (StringFormat(EX_TRACKER_FAILURE, failureReasonData->toString().c_str()).str()); } - const Data* warningMessageData = dynamic_cast(response->get("warning message")); + const Data* warningMessageData = + dynamic_cast(response->get(BtAnnounce::WARNING_MESSAGE)); if(warningMessageData) { logger->warn(MSG_TRACKER_WARNING_MESSAGE, warningMessageData->toString().c_str()); } - const Data* trackerIdData = dynamic_cast(response->get("tracker id")); + const Data* trackerIdData = + dynamic_cast(response->get(BtAnnounce::TRACKER_ID)); if(trackerIdData) { trackerId = trackerIdData->toString(); logger->debug("Tracker ID:%s", trackerId.c_str()); } - const Data* intervalData = dynamic_cast(response->get("interval")); + const Data* intervalData = + dynamic_cast(response->get(BtAnnounce::INTERVAL)); if(intervalData) { time_t t = intervalData->toInt(); if(t > 0) { @@ -226,7 +230,8 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse, logger->debug("Interval:%d", interval); } } - const Data* minIntervalData = dynamic_cast(response->get("min interval")); + const Data* minIntervalData = + dynamic_cast(response->get(BtAnnounce::MIN_INTERVAL)); if(minIntervalData) { time_t t = minIntervalData->toInt(); if(t > 0) { @@ -237,17 +242,19 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse, if(minInterval > interval) { minInterval = interval; } - const Data* completeData = dynamic_cast(response->get("complete")); + const Data* completeData = + dynamic_cast(response->get(BtAnnounce::COMPLETE)); if(completeData) { complete = completeData->toInt(); logger->debug("Complete:%d", complete); } - const Data* incompleteData = dynamic_cast(response->get("incomplete")); + const Data* incompleteData = + dynamic_cast(response->get(BtAnnounce::INCOMPLETE)); if(incompleteData) { incomplete = incompleteData->toInt(); logger->debug("Incomplete:%d", incomplete); } - const MetaEntry* peersEntry = response->get("peers"); + const MetaEntry* peersEntry = response->get(BtAnnounce::PEERS); if(peersEntry && !btRuntime->isHalt() && btRuntime->lessThanMinPeer()) { diff --git a/src/Makefile.am b/src/Makefile.am index 797c3d7a..0a2e4d2a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -236,7 +236,7 @@ SRCS += MetaEntry.h\ DefaultBtContext.cc DefaultBtContext.h\ PeerStorage.h\ DefaultPeerStorage.cc DefaultPeerStorage.h\ - BtAnnounce.h\ + BtAnnounce.cc BtAnnounce.h\ DefaultBtAnnounce.cc DefaultBtAnnounce.h\ BtRuntime.h\ BtContextAwareCommand.cc BtContextAwareCommand.h\ diff --git a/src/Makefile.in b/src/Makefile.in index e63cfe76..56f45efb 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -80,7 +80,7 @@ bin_PROGRAMS = aria2c$(EXEEXT) @ENABLE_BITTORRENT_TRUE@ DefaultBtContext.cc DefaultBtContext.h\ @ENABLE_BITTORRENT_TRUE@ PeerStorage.h\ @ENABLE_BITTORRENT_TRUE@ DefaultPeerStorage.cc DefaultPeerStorage.h\ -@ENABLE_BITTORRENT_TRUE@ BtAnnounce.h\ +@ENABLE_BITTORRENT_TRUE@ BtAnnounce.cc BtAnnounce.h\ @ENABLE_BITTORRENT_TRUE@ DefaultBtAnnounce.cc DefaultBtAnnounce.h\ @ENABLE_BITTORRENT_TRUE@ BtRuntime.h\ @ENABLE_BITTORRENT_TRUE@ BtContextAwareCommand.cc BtContextAwareCommand.h\ @@ -435,15 +435,16 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \ DelegatingPeerListProcessor.h AnnounceTier.h AnnounceList.h \ AnnounceList.cc BtContext.h DefaultBtContext.cc \ DefaultBtContext.h PeerStorage.h DefaultPeerStorage.cc \ - DefaultPeerStorage.h BtAnnounce.h DefaultBtAnnounce.cc \ - DefaultBtAnnounce.h BtRuntime.h BtContextAwareCommand.cc \ - BtContextAwareCommand.h BtMessage.h AbstractBtMessage.cc \ - AbstractBtMessage.h SimpleBtMessage.cc SimpleBtMessage.h \ - BtAllowedFastMessage.cc BtAllowedFastMessage.h \ - BtBitfieldMessage.cc BtBitfieldMessage.h BtCancelMessage.cc \ - BtCancelMessage.h BtChokeMessage.cc BtChokeMessage.h \ - BtHaveAllMessage.cc BtHaveAllMessage.h BtHaveMessage.cc \ - BtHaveMessage.h BtHaveNoneMessage.cc BtHaveNoneMessage.h \ + DefaultPeerStorage.h BtAnnounce.cc BtAnnounce.h \ + DefaultBtAnnounce.cc DefaultBtAnnounce.h BtRuntime.h \ + BtContextAwareCommand.cc BtContextAwareCommand.h BtMessage.h \ + AbstractBtMessage.cc AbstractBtMessage.h SimpleBtMessage.cc \ + SimpleBtMessage.h BtAllowedFastMessage.cc \ + BtAllowedFastMessage.h BtBitfieldMessage.cc \ + BtBitfieldMessage.h BtCancelMessage.cc BtCancelMessage.h \ + BtChokeMessage.cc BtChokeMessage.h BtHaveAllMessage.cc \ + BtHaveAllMessage.h BtHaveMessage.cc BtHaveMessage.h \ + BtHaveNoneMessage.cc BtHaveNoneMessage.h \ BtInterestedMessage.cc BtInterestedMessage.h \ BtKeepAliveMessage.cc BtKeepAliveMessage.h \ BtNotInterestedMessage.cc BtNotInterestedMessage.h \ @@ -591,6 +592,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \ @ENABLE_BITTORRENT_TRUE@ AnnounceList.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DefaultBtContext.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DefaultPeerStorage.$(OBJEXT) \ +@ENABLE_BITTORRENT_TRUE@ BtAnnounce.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DefaultBtAnnounce.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ BtContextAwareCommand.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ AbstractBtMessage.$(OBJEXT) \ @@ -1245,6 +1247,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitfieldMan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitfieldManFactory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtAllowedFastMessage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtAnnounce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtBitfieldMessage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtCancelMessage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtCheckIntegrityEntry.Po@am__quote@