From 49b4cfbfcdf615dc01d748179c6b67e78bd5362e Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 27 Apr 2009 11:45:22 +0000 Subject: 2009-04-27 Tatsuhiro Tsujikawa Put BDE in aria2 namespace. BDE will also be used to store xml-rpc request. * src/AnnounceList.cc * src/AnnounceList.h * src/BDE.cc: Added * src/BDE.h: Added * src/DHTAbstractMessage.cc * src/DHTAbstractMessage.h * src/DHTAnnouncePeerMessage.cc * src/DHTAnnouncePeerMessage.h * src/DHTAnnouncePeerReplyMessage.cc * src/DHTAnnouncePeerReplyMessage.h * src/DHTFindNodeMessage.cc * src/DHTFindNodeMessage.h * src/DHTFindNodeReplyMessage.cc * src/DHTFindNodeReplyMessage.h * src/DHTGetPeersMessage.cc * src/DHTGetPeersMessage.h * src/DHTGetPeersReplyMessage.cc * src/DHTGetPeersReplyMessage.h * src/DHTMessageFactory.h * src/DHTMessageFactoryImpl.cc * src/DHTMessageFactoryImpl.h * src/DHTMessageReceiver.cc * src/DHTMessageTracker.cc * src/DHTMessageTracker.h * src/DHTPingMessage.cc * src/DHTPingMessage.h * src/DHTPingReplyMessage.cc * src/DHTPingReplyMessage.h * src/DHTQueryMessage.cc * src/DHTQueryMessage.h * src/DHTResponseMessage.cc * src/DHTResponseMessage.h * src/DefaultBtAnnounce.cc * src/DefaultBtContext.cc * src/DefaultBtContext.h * src/HandshakeExtensionMessage.cc * src/Makefile.am * src/PeerListProcessor.h * src/UTPexExtensionMessage.cc * src/bencode.cc * src/bencode.h * test/AnnounceListTest.cc * test/BDETest.cc: Added * test/BencodeTest.cc * test/DHTAnnouncePeerMessageTest.cc * test/DHTAnnouncePeerReplyMessageTest.cc * test/DHTFindNodeMessageTest.cc * test/DHTFindNodeReplyMessageTest.cc * test/DHTGetPeersMessageTest.cc * test/DHTGetPeersReplyMessageTest.cc * test/DHTMessageFactoryImplTest.cc * test/DHTMessageTrackerTest.cc * test/DHTPingMessageTest.cc * test/DHTPingReplyMessageTest.cc * test/Makefile.am * test/MockDHTMessageFactory.h * test/PeerListProcessorTest.cc --- src/DHTMessageFactoryImpl.cc | 92 ++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 46 deletions(-) (limited to 'src/DHTMessageFactoryImpl.cc') diff --git a/src/DHTMessageFactoryImpl.cc b/src/DHTMessageFactoryImpl.cc index 80845a43..b9fc5eb6 100644 --- a/src/DHTMessageFactoryImpl.cc +++ b/src/DHTMessageFactoryImpl.cc @@ -82,10 +82,10 @@ DHTMessageFactoryImpl::getRemoteNode(const unsigned char* id, const std::string& return node; } -static const bencode::BDE& getDictionary(const bencode::BDE& dict, +static const BDE& getDictionary(const BDE& dict, const std::string& key) { - const bencode::BDE& d = dict[key]; + const BDE& d = dict[key]; if(d.isDict()) { return d; } else { @@ -94,10 +94,10 @@ static const bencode::BDE& getDictionary(const bencode::BDE& dict, } } -static const bencode::BDE& getString(const bencode::BDE& dict, +static const BDE& getString(const BDE& dict, const std::string& key) { - const bencode::BDE& c = dict[key]; + const BDE& c = dict[key]; if(c.isString()) { return c; } else { @@ -106,10 +106,10 @@ static const bencode::BDE& getString(const bencode::BDE& dict, } } -static const bencode::BDE& getInteger(const bencode::BDE& dict, +static const BDE& getInteger(const BDE& dict, const std::string& key) { - const bencode::BDE& c = dict[key]; + const BDE& c = dict[key]; if(c.isInteger()) { return c; } else { @@ -118,9 +118,9 @@ static const bencode::BDE& getInteger(const bencode::BDE& dict, } } -static const bencode::BDE& getString(const bencode::BDE& list, size_t index) +static const BDE& getString(const BDE& list, size_t index) { - const bencode::BDE& c = list[index]; + const BDE& c = list[index]; if(c.isString()) { return c; } else { @@ -130,9 +130,9 @@ static const bencode::BDE& getString(const bencode::BDE& list, size_t index) } } -static const bencode::BDE& getInteger(const bencode::BDE& list, size_t index) +static const BDE& getInteger(const BDE& list, size_t index) { - const bencode::BDE& c = list[index]; + const BDE& c = list[index]; if(c.isInteger()) { return c; } else { @@ -142,10 +142,10 @@ static const bencode::BDE& getInteger(const bencode::BDE& list, size_t index) } } -static const bencode::BDE& getList(const bencode::BDE& dict, +static const BDE& getList(const BDE& dict, const std::string& key) { - const bencode::BDE& l = dict[key]; + const BDE& l = dict[key]; if(l.isList()) { return l; } else { @@ -154,7 +154,7 @@ static const bencode::BDE& getList(const bencode::BDE& dict, } } -void DHTMessageFactoryImpl::validateID(const bencode::BDE& id) const +void DHTMessageFactoryImpl::validateID(const BDE& id) const { if(id.s().size() != DHT_ID_LENGTH) { throw DlAbortEx @@ -164,9 +164,9 @@ void DHTMessageFactoryImpl::validateID(const bencode::BDE& id) const } } -void DHTMessageFactoryImpl::validatePort(const bencode::BDE& i) const +void DHTMessageFactoryImpl::validatePort(const BDE& i) const { - bencode::BDE::Integer port = i.i(); + BDE::Integer port = i.i(); if(!(0 < port && port < UINT16_MAX)) { throw DlAbortEx (StringFormat("Malformed DHT message. Invalid port=%s", @@ -175,41 +175,41 @@ void DHTMessageFactoryImpl::validatePort(const bencode::BDE& i) const } SharedHandle DHTMessageFactoryImpl::createQueryMessage -(const bencode::BDE& dict, +(const BDE& dict, const std::string& ipaddr, uint16_t port) { - const bencode::BDE& messageType = getString(dict, DHTQueryMessage::Q); - const bencode::BDE& transactionID = getString(dict, DHTMessage::T); - const bencode::BDE& y = getString(dict, DHTMessage::Y); - const bencode::BDE& aDict = getDictionary(dict, DHTQueryMessage::A); + const BDE& messageType = getString(dict, DHTQueryMessage::Q); + const BDE& transactionID = getString(dict, DHTMessage::T); + const BDE& y = getString(dict, DHTMessage::Y); + const BDE& aDict = getDictionary(dict, DHTQueryMessage::A); if(y.s() != DHTQueryMessage::Q) { throw DlAbortEx("Malformed DHT message. y != q"); } - const bencode::BDE& id = getString(aDict, DHTMessage::ID); + const BDE& id = getString(aDict, DHTMessage::ID); validateID(id); SharedHandle remoteNode = getRemoteNode(id.uc(), ipaddr, port); if(messageType.s() == DHTPingMessage::PING) { return createPingMessage(remoteNode, transactionID.s()); } else if(messageType.s() == DHTFindNodeMessage::FIND_NODE) { - const bencode::BDE& targetNodeID = + const BDE& targetNodeID = getString(aDict, DHTFindNodeMessage::TARGET_NODE); validateID(targetNodeID); return createFindNodeMessage(remoteNode, targetNodeID.uc(), transactionID.s()); } else if(messageType.s() == DHTGetPeersMessage::GET_PEERS) { - const bencode::BDE& infoHash = + const BDE& infoHash = getString(aDict, DHTGetPeersMessage::INFO_HASH); validateID(infoHash); return createGetPeersMessage(remoteNode, infoHash.uc(), transactionID.s()); } else if(messageType.s() == DHTAnnouncePeerMessage::ANNOUNCE_PEER) { - const bencode::BDE& infoHash = + const BDE& infoHash = getString(aDict, DHTAnnouncePeerMessage::INFO_HASH); validateID(infoHash); - const bencode::BDE& port = getInteger(aDict, DHTAnnouncePeerMessage::PORT); + const BDE& port = getInteger(aDict, DHTAnnouncePeerMessage::PORT); validatePort(port); - const bencode::BDE& token = getString(aDict, DHTAnnouncePeerMessage::TOKEN); + const BDE& token = getString(aDict, DHTAnnouncePeerMessage::TOKEN); return createAnnouncePeerMessage(remoteNode, infoHash.uc(), static_cast(port.i()), token.s(), transactionID.s()); @@ -222,15 +222,15 @@ SharedHandle DHTMessageFactoryImpl::createQueryMessage SharedHandle DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType, - const bencode::BDE& dict, + const BDE& dict, const std::string& ipaddr, uint16_t port) { - const bencode::BDE& transactionID = getString(dict, DHTMessage::T); - const bencode::BDE& y = getString(dict, DHTMessage::Y); + const BDE& transactionID = getString(dict, DHTMessage::T); + const BDE& y = getString(dict, DHTMessage::Y); if(y.s() == DHTUnknownMessage::E) { // for now, just report error message arrived and throw exception. - const bencode::BDE& e = getList(dict, DHTUnknownMessage::E); + const BDE& e = getList(dict, DHTUnknownMessage::E); if(e.size() == 2) { _logger->info("Received Error DHT message. code=%s, msg=%s", Util::itos(getInteger(e, 0).i()).c_str(), @@ -244,8 +244,8 @@ DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType, (StringFormat("Malformed DHT message. y != r: y=%s", Util::urlencode(y.s()).c_str()).str()); } - const bencode::BDE& rDict = getDictionary(dict, DHTResponseMessage::R); - const bencode::BDE& id = getString(rDict, DHTMessage::ID); + const BDE& rDict = getDictionary(dict, DHTResponseMessage::R); + const BDE& id = getString(rDict, DHTMessage::ID); validateID(id); SharedHandle remoteNode = getRemoteNode(id.uc(), ipaddr, port); @@ -254,12 +254,12 @@ DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType, } else if(messageType == DHTFindNodeReplyMessage::FIND_NODE) { return createFindNodeReplyMessage(remoteNode, dict, transactionID.s()); } else if(messageType == DHTGetPeersReplyMessage::GET_PEERS) { - const bencode::BDE& valuesList = rDict[DHTGetPeersReplyMessage::VALUES]; + const BDE& valuesList = rDict[DHTGetPeersReplyMessage::VALUES]; if(valuesList.isList()) { return createGetPeersReplyMessageWithValues(remoteNode, dict, transactionID.s()); } else { - const bencode::BDE& nodes = rDict[DHTGetPeersReplyMessage::NODES]; + const BDE& nodes = rDict[DHTGetPeersReplyMessage::NODES]; if(nodes.isString()) { return createGetPeersReplyMessageWithNodes(remoteNode, dict, transactionID.s()); @@ -346,10 +346,10 @@ DHTMessageFactoryImpl::extractNodes(const unsigned char* src, size_t length) SharedHandle DHTMessageFactoryImpl::createFindNodeReplyMessage (const SharedHandle& remoteNode, - const bencode::BDE& dict, + const BDE& dict, const std::string& transactionID) { - const bencode::BDE& nodesData = + const BDE& nodesData = getString(getDictionary(dict, DHTResponseMessage::R), DHTFindNodeReplyMessage::NODES); std::deque > nodes = extractNodes(nodesData.uc(), @@ -375,15 +375,15 @@ DHTMessageFactoryImpl::createGetPeersMessage(const SharedHandle& remote SharedHandle DHTMessageFactoryImpl::createGetPeersReplyMessageWithNodes (const SharedHandle& remoteNode, - const bencode::BDE& dict, + const BDE& dict, const std::string& transactionID) { - const bencode::BDE& rDict = getDictionary(dict, DHTResponseMessage::R); - const bencode::BDE& nodesData = getString(rDict, + const BDE& rDict = getDictionary(dict, DHTResponseMessage::R); + const BDE& nodesData = getString(rDict, DHTGetPeersReplyMessage::NODES); std::deque > nodes = extractNodes(nodesData.uc(), nodesData.s().size()); - const bencode::BDE& token = getString(rDict, DHTGetPeersReplyMessage::TOKEN); + const BDE& token = getString(rDict, DHTGetPeersReplyMessage::TOKEN); return createGetPeersReplyMessage(remoteNode, nodes, token.s(), transactionID); } @@ -404,16 +404,16 @@ DHTMessageFactoryImpl::createGetPeersReplyMessage(const SharedHandle& r SharedHandle DHTMessageFactoryImpl::createGetPeersReplyMessageWithValues (const SharedHandle& remoteNode, - const bencode::BDE& dict, + const BDE& dict, const std::string& transactionID) { - const bencode::BDE& rDict = getDictionary(dict, DHTResponseMessage::R); - const bencode::BDE& valuesList = getList(rDict, + const BDE& rDict = getDictionary(dict, DHTResponseMessage::R); + const BDE& valuesList = getList(rDict, DHTGetPeersReplyMessage::VALUES); std::deque > peers; - for(bencode::BDE::List::const_iterator i = valuesList.listBegin(); + for(BDE::List::const_iterator i = valuesList.listBegin(); i != valuesList.listEnd(); ++i) { - const bencode::BDE& data = *i; + const BDE& data = *i; if(data.isString() && data.s().size() == 6) { std::pair addr = PeerMessageUtil::unpackcompact(data.uc()); @@ -421,7 +421,7 @@ DHTMessageFactoryImpl::createGetPeersReplyMessageWithValues peers.push_back(peer); } } - const bencode::BDE& token = getString(rDict, DHTGetPeersReplyMessage::TOKEN); + const BDE& token = getString(rDict, DHTGetPeersReplyMessage::TOKEN); return createGetPeersReplyMessage(remoteNode, peers, token.s(), transactionID); } -- cgit