mirror of
https://github.com/aria2/aria2.git
synced 2026-04-11 23:39:05 +00:00
2008-12-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use BDE instead of Dictionary/List/Data. * 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 * 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/MockDHTMessageFactory.h
This commit is contained in:
@@ -33,17 +33,18 @@
|
||||
*/
|
||||
/* copyright --> */
|
||||
#include "DHTFindNodeReplyMessage.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "DHTNode.h"
|
||||
#include "DHTBucket.h"
|
||||
#include "Data.h"
|
||||
#include "Dictionary.h"
|
||||
#include "DHTRoutingTable.h"
|
||||
#include "DHTMessageFactory.h"
|
||||
#include "DHTMessageDispatcher.h"
|
||||
#include "DHTMessageCallback.h"
|
||||
#include "PeerMessageUtil.h"
|
||||
#include "Util.h"
|
||||
#include <cstring>
|
||||
#include "bencode.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
@@ -67,22 +68,25 @@ void DHTFindNodeReplyMessage::doReceivedAction()
|
||||
}
|
||||
}
|
||||
|
||||
Dictionary* DHTFindNodeReplyMessage::getResponse()
|
||||
bencode::BDE DHTFindNodeReplyMessage::getResponse()
|
||||
{
|
||||
Dictionary* a = new Dictionary();
|
||||
a->put(DHTMessage::ID, new Data(_localNode->getID(), DHT_ID_LENGTH));
|
||||
bencode::BDE aDict = bencode::BDE::dict();
|
||||
aDict[DHTMessage::ID] = bencode::BDE(_localNode->getID(), DHT_ID_LENGTH);
|
||||
size_t offset = 0;
|
||||
unsigned char buffer[DHTBucket::K*26];
|
||||
// TODO if _closestKNodes.size() > DHTBucket::K ??
|
||||
for(std::deque<SharedHandle<DHTNode> >::const_iterator i = _closestKNodes.begin(); i != _closestKNodes.end(); ++i) {
|
||||
for(std::deque<SharedHandle<DHTNode> >::const_iterator i =
|
||||
_closestKNodes.begin();
|
||||
i != _closestKNodes.end() && offset < DHTBucket::K*26; ++i) {
|
||||
SharedHandle<DHTNode> node = *i;
|
||||
memcpy(buffer+offset, node->getID(), DHT_ID_LENGTH);
|
||||
if(PeerMessageUtil::createcompact(buffer+20+offset, node->getIPAddress(), node->getPort())) {
|
||||
if(PeerMessageUtil::createcompact(buffer+20+offset, node->getIPAddress(),
|
||||
node->getPort())) {
|
||||
offset += 26;
|
||||
}
|
||||
}
|
||||
a->put(NODES, new Data(buffer, offset));
|
||||
return a;
|
||||
aDict[NODES] = bencode::BDE(buffer, offset);
|
||||
return aDict;
|
||||
}
|
||||
|
||||
std::string DHTFindNodeReplyMessage::getMessageType() const
|
||||
|
||||
Reference in New Issue
Block a user