diff --git a/ChangeLog b/ChangeLog index cd5a5c7a..d10a721d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,45 @@ +2010-08-31 Tatsuhiro Tsujikawa + + Enclosed classes and structs declared in *.cc files unnamed + namespace. Added static keyword for function template in *.cc + files(TODO we should use unnamed namespace instead of static). + * src/AbstractCommand.cc + * src/AnnounceList.cc + * src/BtLeecherStateChoke.cc + * src/BtLeecherStateChoke.h + * src/BtSeederStateChoke.cc + * src/BtSeederStateChoke.h + * src/ConsoleStatCalc.cc + * src/ContentTypeRequestGroupCriteria.cc + * src/CookieStorage.cc + * src/DHTBucket.cc + * src/DHTPeerAnnounceEntry.cc + * src/DHTPeerAnnounceStorage.cc + * src/DefaultBtMessageDispatcher.cc + * src/DefaultBtRequestFactory.cc + * src/DefaultPeerStorage.cc + * src/DefaultPieceStorage.cc + * src/ExpatMetalinkProcessor.cc + * src/ExpatXmlRpcRequestProcessor.cc + * src/FeedbackURISelector.cc + * src/FileEntry.cc + * src/Metalink2RequestGroup.cc + * src/MetalinkEntry.cc + * src/Metalinker.cc + * src/MultiDiskAdaptor.cc + * src/Netrc.cc + * src/OptionParser.cc + * src/PieceStatMan.cc + * src/RarestPieceSelector.cc + * src/RequestGroupMan.cc + * src/SegmentMan.cc + * src/ServerStatMan.cc + * src/XML2SAXMetalinkProcessor.cc + * src/Xml2XmlRpcRequestProcessor.cc + * src/XmlRpcResponse.cc + * src/a2algo.h + * src/download_helper.cc + 2010-08-31 Tatsuhiro Tsujikawa Updated doc diff --git a/src/AbstractCommand.cc b/src/AbstractCommand.cc index d0b09157..078b884e 100644 --- a/src/AbstractCommand.cc +++ b/src/AbstractCommand.cc @@ -542,6 +542,7 @@ static bool isProxyRequest return !proxyUri.empty() && Request().setUri(proxyUri); } +namespace { class DomainMatch { private: std::string hostname_; @@ -557,6 +558,7 @@ public: } } }; +} static bool inNoProxy(const SharedHandle& req, const std::string& noProxy) diff --git a/src/AnnounceList.cc b/src/AnnounceList.cc index 339a6c2d..3b4cd6e7 100644 --- a/src/AnnounceList.cc +++ b/src/AnnounceList.cc @@ -39,6 +39,7 @@ #include "A2STR.h" #include "SimpleRandomizer.h" #include "util.h" +#include "a2algo.h" namespace aria2 { @@ -159,6 +160,7 @@ std::string AnnounceList::getEventString() const { } } +namespace { class FindStoppedAllowedTier { public: bool operator()(const SharedHandle& tier) const { @@ -173,7 +175,9 @@ public: } } }; +} +namespace { class FindCompletedAllowedTier { public: bool operator()(const SharedHandle& tier) const { @@ -186,6 +190,7 @@ public: } } }; +} size_t AnnounceList::countStoppedAllowedTier() const { return count_if(tiers_.begin(), tiers_.end(), FindStoppedAllowedTier()); @@ -203,17 +208,6 @@ void AnnounceList::setCurrentTier } } -template -InputIterator -find_wrap_if(InputIterator first, InputIterator last, - InputIterator current, Predicate pred) { - InputIterator itr = std::find_if(current, last, pred); - if(itr == last) { - itr = std::find_if(first, current, pred); - } - return itr; -} - void AnnounceList::moveToStoppedAllowedTier() { std::deque >::iterator itr = find_wrap_if(tiers_.begin(), tiers_.end(), diff --git a/src/BtLeecherStateChoke.cc b/src/BtLeecherStateChoke.cc index 23b44f76..30bb3d34 100644 --- a/src/BtLeecherStateChoke.cc +++ b/src/BtLeecherStateChoke.cc @@ -103,21 +103,12 @@ bool BtLeecherStateChoke::PeerEntry::operator<(const PeerEntry& peerEntry) const return downloadSpeed_ > peerEntry.downloadSpeed_; } -class PeerFilter { -private: - bool amChoking_; - bool peerInterested_; -public: - PeerFilter(bool amChoking, bool peerInterested): - amChoking_(amChoking), - peerInterested_(peerInterested) {} - - bool operator()(const BtLeecherStateChoke::PeerEntry& peerEntry) const - { - return peerEntry.getPeer()->amChoking() == amChoking_ && - peerEntry.getPeer()->peerInterested() == peerInterested_; - } -}; +bool BtLeecherStateChoke::PeerFilter::operator() + (const PeerEntry& peerEntry) const +{ + return peerEntry.getPeer()->amChoking() == amChoking_ && + peerEntry.getPeer()->peerInterested() == peerInterested_; +} void BtLeecherStateChoke::plannedOptimisticUnchoke (std::vector& peerEntries) @@ -177,15 +168,6 @@ void BtLeecherStateChoke::regularUnchoke(std::vector& peerEntries) } } -class BtLeecherStateChokeGenPeerEntry { -public: - BtLeecherStateChoke::PeerEntry operator() - (const SharedHandle& peer) const - { - return BtLeecherStateChoke::PeerEntry(peer); - } -}; - void BtLeecherStateChoke::executeChoke (const std::vector >& peerSet) diff --git a/src/BtLeecherStateChoke.h b/src/BtLeecherStateChoke.h index 43762efd..8270bf7f 100644 --- a/src/BtLeecherStateChoke.h +++ b/src/BtLeecherStateChoke.h @@ -86,8 +86,25 @@ private: void regularUnchoke(std::vector& peerEntries); - friend class PeerFilter; - friend class BtLeecherStateChokeGenPeerEntry; + class PeerFilter { + private: + bool amChoking_; + bool peerInterested_; + public: + PeerFilter(bool amChoking, bool peerInterested): + amChoking_(amChoking), + peerInterested_(peerInterested) {} + + bool operator()(const PeerEntry& peerEntry) const; + }; + + class BtLeecherStateChokeGenPeerEntry { + public: + PeerEntry operator()(const SharedHandle& peer) const + { + return PeerEntry(peer); + } + }; public: BtLeecherStateChoke(); diff --git a/src/BtSeederStateChoke.cc b/src/BtSeederStateChoke.cc index 253df636..1459f75b 100644 --- a/src/BtSeederStateChoke.cc +++ b/src/BtSeederStateChoke.cc @@ -83,6 +83,12 @@ void BtSeederStateChoke::PeerEntry::disableOptUnchoking() peer_->optUnchoking(false); } +bool BtSeederStateChoke::NotInterestedPeer::operator() + (const PeerEntry& peerEntry) const +{ + return !peerEntry.getPeer()->peerInterested(); +} + void BtSeederStateChoke::unchoke (std::vector& peers) { @@ -110,6 +116,7 @@ void BtSeederStateChoke::unchoke } } +namespace { class ChokingRequired { public: void operator()(const SharedHandle& peer) const @@ -117,22 +124,7 @@ public: peer->chokingRequired(true); } }; - -class GenPeerEntry { -public: - BtSeederStateChoke::PeerEntry operator()(const SharedHandle& peer) const - { - return BtSeederStateChoke::PeerEntry(peer); - } -}; - -class NotInterestedPeer { -public: - bool operator()(const BtSeederStateChoke::PeerEntry& peerEntry) const - { - return !peerEntry.getPeer()->peerInterested(); - } -}; +} void BtSeederStateChoke::executeChoke diff --git a/src/BtSeederStateChoke.h b/src/BtSeederStateChoke.h index 877be8e4..5485fde5 100644 --- a/src/BtSeederStateChoke.h +++ b/src/BtSeederStateChoke.h @@ -78,8 +78,18 @@ private: void unchoke(std::vector& peers); - friend class GenPeerEntry; - friend class NotInterestedPeer; + class GenPeerEntry { + public: + PeerEntry operator()(const SharedHandle& peer) const + { + return PeerEntry(peer); + } + }; + + class NotInterestedPeer { + public: + bool operator()(const PeerEntry& peerEntry) const; + }; public: BtSeederStateChoke(); diff --git a/src/ConsoleStatCalc.cc b/src/ConsoleStatCalc.cc index baf5f85d..3a63514b 100644 --- a/src/ConsoleStatCalc.cc +++ b/src/ConsoleStatCalc.cc @@ -147,6 +147,7 @@ static void printProgress o << "]"; } +namespace { class PrintSummary { private: @@ -173,6 +174,7 @@ public: << std::setfill(SEP_CHAR) << std::setw(cols_) << SEP_CHAR << "\n"; } }; +} static void printProgressSummary (const std::deque >& groups, size_t cols, diff --git a/src/ContentTypeRequestGroupCriteria.cc b/src/ContentTypeRequestGroupCriteria.cc index ef1e2f00..d276cd26 100644 --- a/src/ContentTypeRequestGroupCriteria.cc +++ b/src/ContentTypeRequestGroupCriteria.cc @@ -44,7 +44,7 @@ namespace aria2 { template -bool tailMatch +static bool tailMatch (InputIterator first, InputIterator last, const std::string& target) { for(; first != last; ++first) { diff --git a/src/CookieStorage.cc b/src/CookieStorage.cc index 730a589c..ce619413 100644 --- a/src/CookieStorage.cc +++ b/src/CookieStorage.cc @@ -164,6 +164,7 @@ struct CookiePathDivider { } }; +namespace { class CookiePathDividerConverter { public: CookiePathDivider operator()(const Cookie& cookie) const @@ -176,7 +177,9 @@ public: return cookiePathDivider.cookie_; } }; +} +namespace { class OrderByPathDepthDesc:public std::binary_function { public: bool operator() @@ -203,6 +206,7 @@ public: } } }; +} template static void searchCookieByDomainSuffix diff --git a/src/DHTBucket.cc b/src/DHTBucket.cc index e8d2bacc..ebe0936a 100644 --- a/src/DHTBucket.cc +++ b/src/DHTBucket.cc @@ -258,6 +258,7 @@ void DHTBucket::notifyUpdate() lastUpdated_ = global::wallclock; } +namespace { class FindQuestionableNode { public: bool operator()(const SharedHandle& node) const @@ -265,6 +266,7 @@ public: return node->isQuestionable(); } }; +} bool DHTBucket::containsQuestionableNode() const { diff --git a/src/DHTPeerAnnounceEntry.cc b/src/DHTPeerAnnounceEntry.cc index 49348ace..b7bffb0a 100644 --- a/src/DHTPeerAnnounceEntry.cc +++ b/src/DHTPeerAnnounceEntry.cc @@ -66,6 +66,7 @@ size_t DHTPeerAnnounceEntry::countPeerAddrEntry() const return peerAddrEntries_.size(); } +namespace { class FindStaleEntry { private: time_t timeout_; @@ -81,6 +82,7 @@ public: } } }; +} void DHTPeerAnnounceEntry::removeStalePeerAddrEntry(time_t timeout) { diff --git a/src/DHTPeerAnnounceStorage.cc b/src/DHTPeerAnnounceStorage.cc index 479fb317..e1359264 100644 --- a/src/DHTPeerAnnounceStorage.cc +++ b/src/DHTPeerAnnounceStorage.cc @@ -56,6 +56,7 @@ DHTPeerAnnounceStorage::DHTPeerAnnounceStorage(): DHTPeerAnnounceStorage::~DHTPeerAnnounceStorage() {} +namespace { class InfoHashLess { public: @@ -65,6 +66,7 @@ public: return memcmp(lhs->getInfoHash(), rhs->getInfoHash(), DHT_ID_LENGTH) < 0; } }; +} SharedHandle DHTPeerAnnounceStorage::getPeerAnnounceEntry(const unsigned char* infoHash) @@ -116,6 +118,7 @@ void DHTPeerAnnounceStorage::getPeers(std::vector >& peers, } } +namespace { class RemoveStalePeerAddrEntry { public: @@ -124,6 +127,7 @@ public: e->removeStalePeerAddrEntry(DHT_PEER_ANNOUNCE_PURGE_INTERVAL); } }; +} void DHTPeerAnnounceStorage::handleTimeout() { diff --git a/src/DefaultBtMessageDispatcher.cc b/src/DefaultBtMessageDispatcher.cc index 3d01f668..254923e2 100644 --- a/src/DefaultBtMessageDispatcher.cc +++ b/src/DefaultBtMessageDispatcher.cc @@ -140,6 +140,7 @@ void DefaultBtMessageDispatcher::doCancelSendingPieceAction { } +namespace { class AbortOutstandingRequest { private: SharedHandle piece_; @@ -163,6 +164,7 @@ public: piece_->cancelBlock(slot.getBlockIndex()); } }; +} // localhost cancels outstanding download requests to the peer. void DefaultBtMessageDispatcher::doAbortOutstandingRequestAction @@ -186,6 +188,7 @@ void DefaultBtMessageDispatcher::doAbortOutstandingRequestAction &BtMessage::onAbortOutstandingRequestEvent, event); } +namespace { class ProcessChokedRequestSlot { private: cuid_t cuid_; @@ -217,7 +220,9 @@ public: } }; +} +namespace { class FindChokedRequestSlot { private: SharedHandle peer_; @@ -230,6 +235,7 @@ public: return !peer_->isInPeerAllowedIndexSet(slot.getIndex()); } }; +} // localhost received choke message from the peer. void DefaultBtMessageDispatcher::doChokedAction() @@ -253,6 +259,7 @@ void DefaultBtMessageDispatcher::doChokingAction() &BtMessage::onChokingEvent, event); } +namespace { class ProcessStaleRequestSlot { private: cuid_t cuid_; @@ -301,7 +308,9 @@ public: } } }; +} +namespace { class FindStaleRequestSlot { private: SharedHandle pieceStorage_; @@ -325,6 +334,7 @@ public: } } }; +} void DefaultBtMessageDispatcher::checkRequestSlotAndDoNecessaryThing() { @@ -350,6 +360,7 @@ bool DefaultBtMessageDispatcher::isSendingInProgress() } } +namespace { class BlockIndexLess { public: bool operator()(const RequestSlot& lhs, const RequestSlot& rhs) const @@ -361,6 +372,7 @@ public: } } }; +} bool DefaultBtMessageDispatcher::isOutstandingRequest (size_t index, size_t blockIndex) { diff --git a/src/DefaultBtRequestFactory.cc b/src/DefaultBtRequestFactory.cc index 333562eb..6fc648e2 100644 --- a/src/DefaultBtRequestFactory.cc +++ b/src/DefaultBtRequestFactory.cc @@ -70,6 +70,7 @@ void DefaultBtRequestFactory::addTargetPiece(const SharedHandle& piece) pieces_.push_back(piece); } +namespace { class AbortCompletedPieceRequest { private: @@ -85,6 +86,7 @@ public: } } }; +} void DefaultBtRequestFactory::removeCompletedPiece() { std::for_each(pieces_.begin(), pieces_.end(), @@ -103,6 +105,7 @@ void DefaultBtRequestFactory::removeTargetPiece pieceStorage_->cancelPiece(piece); } +namespace { class ProcessChokedPiece { private: SharedHandle peer_; @@ -120,7 +123,9 @@ public: } } }; +} +namespace { class FindChokedPiece { private: SharedHandle peer_; @@ -132,6 +137,7 @@ public: return !peer_->isInPeerAllowedIndexSet(piece->getIndex()); } }; +} void DefaultBtRequestFactory::doChokedAction() { @@ -226,6 +232,7 @@ void DefaultBtRequestFactory::createRequestMessagesOnEndGame } } +namespace { class CountMissingBlock { private: @@ -243,6 +250,7 @@ public: numMissingBlock_ += piece->countMissingBlock(); } }; +} size_t DefaultBtRequestFactory::countMissingBlock() { diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc index 07793e24..37bcdd7c 100644 --- a/src/DefaultPeerStorage.cc +++ b/src/DefaultPeerStorage.cc @@ -65,6 +65,7 @@ DefaultPeerStorage::~DefaultPeerStorage() delete leecherStateChoke_; } +namespace { class FindIdenticalPeer { private: SharedHandle peer_; @@ -77,6 +78,7 @@ public: (peer_->getPort() == peer->getPort())); } }; +} bool DefaultPeerStorage::isPeerAlreadyAdded(const SharedHandle& peer) { @@ -142,12 +144,14 @@ const std::deque >& DefaultPeerStorage::getDroppedPeers() return droppedPeers_; } +namespace { class FindFinePeer { public: bool operator()(const SharedHandle& peer) const { return peer->unused() && peer->isGood(); } }; +} SharedHandle DefaultPeerStorage::getUnusedPeer() { std::deque >::const_iterator itr = @@ -159,6 +163,7 @@ SharedHandle DefaultPeerStorage::getUnusedPeer() { } } +namespace { class FindPeer { private: std::string ipaddr; @@ -171,6 +176,7 @@ public: return ipaddr == peer->getIPAddress() && port == peer->getPort(); } }; +} SharedHandle DefaultPeerStorage::getPeer(const std::string& ipaddr, uint16_t port) const { @@ -191,6 +197,7 @@ bool DefaultPeerStorage::isPeerAvailable() { return !getUnusedPeer().isNull(); } +namespace { class CollectActivePeer { private: std::vector >& activePeers_; @@ -205,6 +212,7 @@ public: } } }; +} void DefaultPeerStorage::getActivePeers (std::vector >& activePeers) diff --git a/src/DefaultPieceStorage.cc b/src/DefaultPieceStorage.cc index cc90fb7d..4b65ba10 100644 --- a/src/DefaultPieceStorage.cc +++ b/src/DefaultPieceStorage.cc @@ -643,6 +643,7 @@ DefaultPieceStorage::getAdvertisedPieceIndexes(std::vector& indexes, } } +namespace { class FindElapsedHave { private: @@ -658,7 +659,8 @@ public: } } }; - +} + void DefaultPieceStorage::removeAdvertisedPiece(time_t elapsed) { std::deque::iterator itr = diff --git a/src/ExpatMetalinkProcessor.cc b/src/ExpatMetalinkProcessor.cc index af48192f..474144ed 100644 --- a/src/ExpatMetalinkProcessor.cc +++ b/src/ExpatMetalinkProcessor.cc @@ -49,6 +49,7 @@ namespace aria2 { +namespace { class SessionData { public: SharedHandle stm_; @@ -57,6 +58,7 @@ public: SessionData(const SharedHandle& stm):stm_(stm) {} }; +} static void splitNsName (std::string& localname, std::string& prefix, std::string& nsUri, diff --git a/src/ExpatXmlRpcRequestProcessor.cc b/src/ExpatXmlRpcRequestProcessor.cc index 8644a3e2..70b7776a 100644 --- a/src/ExpatXmlRpcRequestProcessor.cc +++ b/src/ExpatXmlRpcRequestProcessor.cc @@ -47,6 +47,7 @@ namespace aria2 { namespace xmlrpc { +namespace { struct SessionData { XmlRpcRequestParserStateMachine* stm_; @@ -54,6 +55,7 @@ struct SessionData { SessionData(XmlRpcRequestParserStateMachine* stm):stm_(stm) {} }; +} static void mlStartElement(void* userData, const char* name, const char** attrs) { diff --git a/src/FeedbackURISelector.cc b/src/FeedbackURISelector.cc index ab46952a..d698e2a4 100644 --- a/src/FeedbackURISelector.cc +++ b/src/FeedbackURISelector.cc @@ -55,6 +55,7 @@ FeedbackURISelector::FeedbackURISelector FeedbackURISelector::~FeedbackURISelector() {} +namespace { class ServerStatFaster { public: bool operator()(const std::pair, std::string> lhs, @@ -64,6 +65,7 @@ public: return lhs.first->getDownloadSpeed() > rhs.first->getDownloadSpeed(); } }; +} std::string FeedbackURISelector::select (FileEntry* fileEntry, diff --git a/src/FileEntry.cc b/src/FileEntry.cc index e781344e..932566c3 100644 --- a/src/FileEntry.cc +++ b/src/FileEntry.cc @@ -203,6 +203,7 @@ FileEntry::findFasterRequest(const SharedHandle& base) return SharedHandle(); } +namespace { class RequestFaster { public: bool operator()(const SharedHandle& lhs, @@ -218,6 +219,7 @@ public: lhs->getPeerStat()->getAvgDownloadSpeed() > rhs->getPeerStat()->getAvgDownloadSpeed(); } }; +} void FileEntry::storePool(const SharedHandle& request) { @@ -282,6 +284,7 @@ void FileEntry::addURIResult(std::string uri, downloadresultcode::RESULT result) uriResults_.push_back(URIResult(uri, result)); } +namespace { class FindURIResultByResult { private: downloadresultcode::RESULT r_; @@ -293,6 +296,7 @@ public: return uriResult.getResult() == r_; } }; +} void FileEntry::extractURIResult (std::deque& res, downloadresultcode::RESULT r) diff --git a/src/Metalink2RequestGroup.cc b/src/Metalink2RequestGroup.cc index 27894429..30d0a6c5 100644 --- a/src/Metalink2RequestGroup.cc +++ b/src/Metalink2RequestGroup.cc @@ -69,6 +69,7 @@ namespace aria2 { Metalink2RequestGroup::Metalink2RequestGroup(): logger_(LogFactory::getInstance()) {} +namespace { class AccumulateNonP2PUri { private: std::vector& urisPtr; @@ -88,7 +89,9 @@ public: } } }; +} +namespace { class FindBitTorrentUri { public: FindBitTorrentUri() {} @@ -101,6 +104,7 @@ public: } } }; +} void Metalink2RequestGroup::generate diff --git a/src/MetalinkEntry.cc b/src/MetalinkEntry.cc index cecb5266..f9e1a57d 100644 --- a/src/MetalinkEntry.cc +++ b/src/MetalinkEntry.cc @@ -57,6 +57,7 @@ MetalinkEntry::MetalinkEntry(): MetalinkEntry::~MetalinkEntry() {} +namespace { class AddLocationPriority { private: std::vector locations_; @@ -76,6 +77,7 @@ public: } } }; +} MetalinkEntry& MetalinkEntry::operator=(const MetalinkEntry& metalinkEntry) { @@ -111,6 +113,7 @@ void MetalinkEntry::setLocationPriority AddLocationPriority(locations, priorityToAdd)); } +namespace { class AddProtocolPriority { private: std::string protocol_; @@ -126,6 +129,7 @@ public: } } }; +} void MetalinkEntry::setProtocolPriority(const std::string& protocol, int priorityToAdd) @@ -134,6 +138,7 @@ void MetalinkEntry::setProtocolPriority(const std::string& protocol, AddProtocolPriority(protocol, priorityToAdd)); } +namespace { template class PriorityHigher { public: @@ -143,6 +148,7 @@ public: return res1->priority < res2->priority; } }; +} void MetalinkEntry::reorderResourcesByPriority() { std::random_shuffle(resources.begin(), resources.end(), @@ -156,6 +162,7 @@ void MetalinkEntry::reorderMetaurlsByPriority() std::sort(metaurls.begin(), metaurls.end(),PriorityHigher()); } +namespace { class Supported:public std::unary_function, bool> { public: bool operator()(const SharedHandle& res) const @@ -175,6 +182,7 @@ public: } } }; +} void MetalinkEntry::dropUnsupportedResource() { resources.erase(std::remove_if(resources.begin(), resources.end(), diff --git a/src/Metalinker.cc b/src/Metalinker.cc index 4a3c8f35..a96907be 100644 --- a/src/Metalinker.cc +++ b/src/Metalinker.cc @@ -42,6 +42,7 @@ Metalinker::Metalinker() {} Metalinker::~Metalinker() {} +namespace { class EntryQuery: public std::unary_function, bool> { private: @@ -75,6 +76,7 @@ public: return true; } }; +} void Metalinker::queryEntry (std::vector >& queryResult, diff --git a/src/MultiDiskAdaptor.cc b/src/MultiDiskAdaptor.cc index b6317055..0feecc4c 100644 --- a/src/MultiDiskAdaptor.cc +++ b/src/MultiDiskAdaptor.cc @@ -351,6 +351,7 @@ static size_t calculateLength(const DiskWriterEntryHandle entry, return length; } +namespace { class OffsetCompare { public: bool operator()(off_t offset, const SharedHandle& dwe) @@ -358,6 +359,7 @@ public: return offset < dwe->getFileEntry()->getOffset(); } }; +} static DiskWriterEntries::const_iterator findFirstDiskWriterEntry diff --git a/src/Netrc.cc b/src/Netrc.cc index f95b98f0..713b8b45 100644 --- a/src/Netrc.cc +++ b/src/Netrc.cc @@ -150,6 +150,7 @@ void Netrc::storeAuthenticator(const SharedHandle& authenticator) } } +namespace { class AuthHostMatch { private: std::string hostname; @@ -161,6 +162,7 @@ public: return authenticator->match(hostname); } }; +} SharedHandle Netrc::findAuthenticator(const std::string& hostname) const diff --git a/src/OptionParser.cc b/src/OptionParser.cc index 03254ac6..f454f448 100644 --- a/src/OptionParser.cc +++ b/src/OptionParser.cc @@ -178,6 +178,7 @@ void OptionParser::parse(Option& option, std::istream& is) } } +namespace { class DummyOptionHandler:public NameMatchOptionHandler { protected: virtual void parseArg(Option& option, const std::string& arg) {} @@ -189,6 +190,7 @@ public: return A2STR::NIL; } }; +} OptionHandlerHandle OptionParser::getOptionHandlerByName (const std::string& optName) @@ -239,6 +241,7 @@ void OptionParser::parseDefaultValues(Option& option) const } } +namespace { class FindOptionHandlerByTag : public std::unary_function, bool> { private: @@ -251,6 +254,7 @@ public: return !optionHandler->isHidden() && optionHandler->hasTag(tag_); } }; +} std::vector > OptionParser::findByTag(const std::string& tag) const @@ -263,6 +267,7 @@ OptionParser::findByTag(const std::string& tag) const return result; } +namespace { class FindOptionHandlerByNameSubstring : public std::unary_function , bool> { private: @@ -277,6 +282,7 @@ public: optionHandler->getName().find(substring_) != std::string::npos; } }; +} std::vector > OptionParser::findByNameSubstring(const std::string& substring) const @@ -327,6 +333,7 @@ OptionParser::findByName(const std::string& name) const return handler; } +namespace { class FindOptionHandlerByID:public std::unary_function , bool> { private: @@ -339,6 +346,7 @@ public: return !optionHandler->isHidden() && optionHandler->getOptionID() == id_; } }; +} SharedHandle OptionParser::findByID(int id) const { @@ -346,6 +354,7 @@ SharedHandle OptionParser::findByID(int id) const FindOptionHandlerByID(id)); } +namespace { class FindOptionHandlerByShortName: public std::unary_function, bool> { private: @@ -359,6 +368,7 @@ public: optionHandler->getShortName() == shortName_; } }; +} SharedHandle OptionParser::findByShortName(char shortName) const { diff --git a/src/PieceStatMan.cc b/src/PieceStatMan.cc index 098fcb9b..a00ed818 100644 --- a/src/PieceStatMan.cc +++ b/src/PieceStatMan.cc @@ -57,6 +57,7 @@ void PieceStat::subCount() } } +namespace { class GenPieceStat { private: size_t index_; @@ -68,6 +69,7 @@ public: return SharedHandle(new PieceStat(index_++)); } }; +} PieceStatMan::PieceStatMan(size_t pieceNum, bool randomShuffle): pieceStats_(pieceNum), @@ -91,6 +93,7 @@ PieceStatMan::PieceStatMan(size_t pieceNum, bool randomShuffle): } } +namespace { class PieceStatRarer { private: const std::vector >& pieceStats_; @@ -103,6 +106,7 @@ public: return pieceStats_[lhs] < pieceStats_[rhs]; } }; +} void PieceStatMan::addPieceStats(const unsigned char* bitfield, size_t bitfieldLength) diff --git a/src/RarestPieceSelector.cc b/src/RarestPieceSelector.cc index 4c4e040d..62fc3927 100644 --- a/src/RarestPieceSelector.cc +++ b/src/RarestPieceSelector.cc @@ -44,6 +44,7 @@ namespace aria2 { RarestPieceSelector::RarestPieceSelector (const SharedHandle& pieceStatMan):pieceStatMan_(pieceStatMan) {} +namespace { class FindRarestPiece { private: @@ -60,6 +61,7 @@ public: return misbitfield_[index/8]&mask; } }; +} bool RarestPieceSelector::select (size_t& index, const unsigned char* bitfield, size_t nbits) const diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index 4bf4b08f..1ff9c922 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -267,6 +267,7 @@ static void executeStopHook } } +namespace { class ProcessStoppedRequestGroup { private: DownloadEngine* e_; @@ -359,7 +360,9 @@ public: } } }; +} +namespace { class CollectServerStat { private: RequestGroupMan* requestGroupMan_; @@ -401,13 +404,16 @@ public: } } }; +} +namespace { class FindStoppedRequestGroup { public: bool operator()(const SharedHandle& group) { return group->getNumCommand() == 0; } }; +} void RequestGroupMan::updateServerStat() { diff --git a/src/SegmentMan.cc b/src/SegmentMan.cc index 82dedce5..26527ecc 100644 --- a/src/SegmentMan.cc +++ b/src/SegmentMan.cc @@ -301,6 +301,7 @@ void SegmentMan::eraseSegmentWrittenLengthMemo() segmentWrittenLengthMemo_.clear(); } +namespace { class FindSegmentEntry { private: SharedHandle segment_; @@ -312,6 +313,7 @@ public: return segmentEntry->segment->getIndex() == segment_->getIndex(); } }; +} bool SegmentMan::completeSegment (cuid_t cuid, const SharedHandle& segment) { @@ -363,7 +365,7 @@ SharedHandle SegmentMan::getPeerStat(cuid_t cuid) const return SharedHandle(); } - +namespace { class PeerStatHostProtoEqual { private: const SharedHandle& peerStat_; @@ -377,6 +379,7 @@ public: peerStat_->getProtocol() == p->getProtocol(); } }; +} void SegmentMan::updateFastestPeerStat(const SharedHandle& peerStat) { @@ -429,6 +432,7 @@ void SegmentMan::updateDownloadSpeedFor(const SharedHandle& pstat) peerStatDlspdMap_[pstat->getCuid()] = newspd; } +namespace { class PeerStatDownloadLengthOperator { public: uint64_t operator()(uint64_t total, const SharedHandle& ps) @@ -436,6 +440,7 @@ public: return ps->getSessionDownloadLength()+total; } }; +} uint64_t SegmentMan::calculateSessionDownloadLength() const { diff --git a/src/ServerStatMan.cc b/src/ServerStatMan.cc index 51e1e3b5..3eae7934 100644 --- a/src/ServerStatMan.cc +++ b/src/ServerStatMan.cc @@ -140,6 +140,7 @@ bool ServerStatMan::load(std::istream& in) return !in.bad(); } +namespace { class FindStaleServerStat { private: time_t timeout_; @@ -152,6 +153,7 @@ public: return ss->getLastUpdated().difference(time_) >= timeout_; } }; +} void ServerStatMan::removeStaleServerStat(time_t timeout) { diff --git a/src/XML2SAXMetalinkProcessor.cc b/src/XML2SAXMetalinkProcessor.cc index e76f4660..fc2048f6 100644 --- a/src/XML2SAXMetalinkProcessor.cc +++ b/src/XML2SAXMetalinkProcessor.cc @@ -47,6 +47,7 @@ namespace aria2 { +namespace { class SessionData { public: SharedHandle stm_; @@ -55,6 +56,7 @@ public: SessionData(const SharedHandle& stm):stm_(stm) {} }; +} static void mlStartElement (void* userData, diff --git a/src/Xml2XmlRpcRequestProcessor.cc b/src/Xml2XmlRpcRequestProcessor.cc index bf4e52d8..526724c7 100644 --- a/src/Xml2XmlRpcRequestProcessor.cc +++ b/src/Xml2XmlRpcRequestProcessor.cc @@ -47,6 +47,7 @@ namespace aria2 { namespace xmlrpc { +namespace { struct SessionData { XmlRpcRequestParserStateMachine* stm_; @@ -54,6 +55,7 @@ struct SessionData { SessionData(XmlRpcRequestParserStateMachine* stm):stm_(stm) {} }; +} static void mlStartElement(void* userData, const xmlChar* name, const xmlChar** attrs) diff --git a/src/XmlRpcResponse.cc b/src/XmlRpcResponse.cc index 5b3b62fe..324d219f 100644 --- a/src/XmlRpcResponse.cc +++ b/src/XmlRpcResponse.cc @@ -95,7 +95,7 @@ static void encodeValue(const SharedHandle& value, OutputStream& o) } template -std::string encodeAll +static std::string encodeAll (OutputStream& o, int code, const SharedHandle& param) { o << "" << ""; diff --git a/src/a2algo.h b/src/a2algo.h index aede507d..22fbf676 100644 --- a/src/a2algo.h +++ b/src/a2algo.h @@ -106,6 +106,17 @@ InputIterator findSecond return last; } +template +InputIterator find_wrap_if +(InputIterator first, InputIterator last, + InputIterator current, Predicate pred) +{ + InputIterator itr = std::find_if(current, last, pred); + if(itr == last) { + itr = std::find_if(first, current, pred); + } + return itr; +} } // namespace aria2 diff --git a/src/download_helper.cc b/src/download_helper.cc index 02eca05b..1453d17a 100644 --- a/src/download_helper.cc +++ b/src/download_helper.cc @@ -349,6 +349,7 @@ void createRequestGroupForMetalink } #endif // ENABLE_METALINK +namespace { class AccRequestGroup { private: std::vector >& requestGroups_; @@ -415,7 +416,9 @@ public: } } }; +} +namespace { class StreamProtocolFilter { private: ProtocolDetector detector_; @@ -424,6 +427,7 @@ public: return detector_.isStreamProtocol(uri); } }; +} void createRequestGroupForUri (std::vector >& result,