summaryrefslogtreecommitdiff
path: root/src/DHTFindNodeReplyMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-12-14 05:46:45 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-12-14 05:46:45 +0000
commit9202fe23c8113cd02c77a2b1132372b1d0601190 (patch)
tree322fd603b573504fb4a2d472705887a33074b4da /src/DHTFindNodeReplyMessage.cc
parent057132cd5f03294433648c5f794b43c57fd62375 (diff)
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
Diffstat (limited to 'src/DHTFindNodeReplyMessage.cc')
-rw-r--r--src/DHTFindNodeReplyMessage.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/DHTFindNodeReplyMessage.cc b/src/DHTFindNodeReplyMessage.cc
index 47f06db1..0ae1d74c 100644
--- a/src/DHTFindNodeReplyMessage.cc
+++ b/src/DHTFindNodeReplyMessage.cc
@@ -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