summaryrefslogtreecommitdiff
path: root/src/DHTAbstractNodeLookupTask.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/DHTAbstractNodeLookupTask.h')
-rw-r--r--src/DHTAbstractNodeLookupTask.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/DHTAbstractNodeLookupTask.h b/src/DHTAbstractNodeLookupTask.h
index 8b53f9bc..30fbf86c 100644
--- a/src/DHTAbstractNodeLookupTask.h
+++ b/src/DHTAbstractNodeLookupTask.h
@@ -36,14 +36,17 @@
#define _D_DHT_ABSTRACT_NODE_LOOKUP_TASK_H_
#include "DHTAbstractTask.h"
+
+#include <deque>
+#include <vector>
+
#include "DHTMessageCallbackListener.h"
#include "DHTConstants.h"
-#include <deque>
+#include "DHTNodeLookupEntry.h"
namespace aria2 {
class DHTNode;
-class DHTNodeLookupEntry;
class DHTMessage;
class DHTAbstractNodeLookupTask:public DHTAbstractTask, public DHTMessageCallbackListener {
@@ -54,8 +57,16 @@ protected:
size_t _inFlightMessage;
- void toEntries(std::deque<SharedHandle<DHTNodeLookupEntry> >& entries,
- const std::deque<SharedHandle<DHTNode> >& nodes) const;
+ template<typename Container>
+ void toEntries
+ (Container& entries, const std::vector<SharedHandle<DHTNode> >& nodes) const
+ {
+ for(std::vector<SharedHandle<DHTNode> >::const_iterator i = nodes.begin();
+ i != nodes.end(); ++i) {
+ SharedHandle<DHTNodeLookupEntry> e(new DHTNodeLookupEntry(*i));
+ entries.push_back(e);
+ }
+ }
void sendMessage();
@@ -73,7 +84,7 @@ public:
virtual void onTimeout(const SharedHandle<DHTNode>& node);
- virtual void getNodesFromMessage(std::deque<SharedHandle<DHTNode> >& nodes,
+ virtual void getNodesFromMessage(std::vector<SharedHandle<DHTNode> >& nodes,
const SharedHandle<DHTMessage>& message) = 0;
virtual void onReceivedInternal(const SharedHandle<DHTMessage>& message) {}