From 83731bab5c02c8f7a3aa1382f7270c7956a60e65 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 11 May 2008 09:53:11 +0000 Subject: [PATCH] 2008-05-11 Tatsuhiro Tsujikawa Changed method signature: DHTAbstractNodeLookupTask::getNodesFromMessage * src/DHTAbstractNodeLookupTask.cc * src/DHTAbstractNodeLookupTask.h * src/DHTNodeLookupTask.cc * src/DHTNodeLookupTask.h * src/DHTPeerLookupTask.cc * src/DHTPeerLookupTask.h --- ChangeLog | 11 +++++++++++ src/DHTAbstractNodeLookupTask.cc | 6 +++++- src/DHTAbstractNodeLookupTask.h | 3 ++- src/DHTNodeLookupTask.cc | 12 ++++++------ src/DHTNodeLookupTask.h | 3 ++- src/DHTPeerLookupTask.cc | 11 ++++++----- src/DHTPeerLookupTask.h | 3 ++- 7 files changed, 34 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 27820b15..a6e7d247 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-05-11 Tatsuhiro Tsujikawa + + Changed method signature: + DHTAbstractNodeLookupTask::getNodesFromMessage + * src/DHTAbstractNodeLookupTask.cc + * src/DHTAbstractNodeLookupTask.h + * src/DHTNodeLookupTask.cc + * src/DHTNodeLookupTask.h + * src/DHTPeerLookupTask.cc + * src/DHTPeerLookupTask.h + 2008-05-11 Tatsuhiro Tsujikawa Pass std::deque by reference to avoid unnecessary coping. diff --git a/src/DHTAbstractNodeLookupTask.cc b/src/DHTAbstractNodeLookupTask.cc index b0025420..51423d87 100644 --- a/src/DHTAbstractNodeLookupTask.cc +++ b/src/DHTAbstractNodeLookupTask.cc @@ -60,7 +60,10 @@ void DHTAbstractNodeLookupTask::onReceived(const SharedHandle& messa { --_inFlightMessage; onReceivedInternal(message); - std::deque > newEntries = toEntries(getNodesFromMessage(message)); + std::deque > nodes; + getNodesFromMessage(nodes, message); + std::deque > newEntries = toEntries(nodes); + size_t count = 0; for(std::deque >::const_iterator i = newEntries.begin(); i != newEntries.end(); ++i) { @@ -69,6 +72,7 @@ void DHTAbstractNodeLookupTask::onReceived(const SharedHandle& messa ++count; } } + _logger->debug("%u node lookup entries added.", count); std::stable_sort(_entries.begin(), _entries.end(), DHTIDCloser(_targetID)); _entries.erase(std::unique(_entries.begin(), _entries.end()), _entries.end()); diff --git a/src/DHTAbstractNodeLookupTask.h b/src/DHTAbstractNodeLookupTask.h index 694747b1..98ab3464 100644 --- a/src/DHTAbstractNodeLookupTask.h +++ b/src/DHTAbstractNodeLookupTask.h @@ -72,7 +72,8 @@ public: virtual void onTimeout(const SharedHandle& node); - virtual std::deque > getNodesFromMessage(const SharedHandle& message) = 0; + virtual void getNodesFromMessage(std::deque >& nodes, + const SharedHandle& message) = 0; virtual void onReceivedInternal(const SharedHandle& message) {} diff --git a/src/DHTNodeLookupTask.cc b/src/DHTNodeLookupTask.cc index b15e0a27..6a94322d 100644 --- a/src/DHTNodeLookupTask.cc +++ b/src/DHTNodeLookupTask.cc @@ -47,15 +47,15 @@ DHTNodeLookupTask::DHTNodeLookupTask(const unsigned char* targetNodeID): DHTAbstractNodeLookupTask(targetNodeID) {} -std::deque > -DHTNodeLookupTask::getNodesFromMessage(const SharedHandle& message) +void +DHTNodeLookupTask::getNodesFromMessage(std::deque >& nodes, + const SharedHandle& message) { SharedHandle m (dynamic_pointer_cast(message)); - if(m.isNull()) { - return std::deque >(); - } else { - return m->getClosestKNodes(); + if(!m.isNull()) { + const std::deque >& knodes = m->getClosestKNodes(); + nodes.insert(nodes.end(), knodes.begin(), knodes.end()); } } diff --git a/src/DHTNodeLookupTask.h b/src/DHTNodeLookupTask.h index 7d9f9a13..77d42f5c 100644 --- a/src/DHTNodeLookupTask.h +++ b/src/DHTNodeLookupTask.h @@ -43,7 +43,8 @@ class DHTNodeLookupTask:public DHTAbstractNodeLookupTask { public: DHTNodeLookupTask(const unsigned char* targetNodeID); - virtual std::deque > getNodesFromMessage(const SharedHandle& message); + virtual void getNodesFromMessage(std::deque >& nodes, + const SharedHandle& message); virtual SharedHandle createMessage(const SharedHandle& remoteNode); }; diff --git a/src/DHTPeerLookupTask.cc b/src/DHTPeerLookupTask.cc index c739f284..a2fe6836 100644 --- a/src/DHTPeerLookupTask.cc +++ b/src/DHTPeerLookupTask.cc @@ -56,13 +56,14 @@ DHTPeerLookupTask::DHTPeerLookupTask(const SharedHandle& btContext): _peerStorage(PEER_STORAGE(btContext)), _btRuntime(BT_RUNTIME(btContext)) {} -std::deque > DHTPeerLookupTask::getNodesFromMessage(const SharedHandle& message) +void +DHTPeerLookupTask::getNodesFromMessage(std::deque >& nodes, + const SharedHandle& message) { SharedHandle m(dynamic_pointer_cast(message)); - if(m.isNull()) { - return std::deque >(); - } else { - return m->getClosestKNodes(); + if(!m.isNull()) { + const std::deque >& knodes = m->getClosestKNodes(); + nodes.insert(nodes.end(), knodes.begin(), knodes.end()); } } diff --git a/src/DHTPeerLookupTask.h b/src/DHTPeerLookupTask.h index 66a8fff3..3a9cf2e2 100644 --- a/src/DHTPeerLookupTask.h +++ b/src/DHTPeerLookupTask.h @@ -59,7 +59,8 @@ private: public: DHTPeerLookupTask(const SharedHandle& btContext); - virtual std::deque > getNodesFromMessage(const SharedHandle& message); + virtual void getNodesFromMessage(std::deque >& nodes, + const SharedHandle& message); virtual void onReceivedInternal(const SharedHandle& message);