diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-30 14:46:26 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-30 14:46:26 +0000 |
| commit | e7e214fef2c9f1a7f39a3157e2595cc7da7db608 (patch) | |
| tree | aad51976c6d503fe93373e09b9de4efa9fd3b5c9 /src | |
| parent | 68156ef258079c50965b86483ea7b119a82c93ad (diff) | |
2010-03-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --dht-message-timeout option.
* doc/aria2c.1.txt
* src/DHTConstants.h
* src/DHTMessageDispatcherImpl.cc
* src/DHTMessageDispatcherImpl.h
* src/DHTMessageTracker.cc
* src/DHTMessageTracker.h
* src/DHTReplaceNodeTask.h
* src/DHTSetup.cc
* src/DHTTaskFactoryImpl.cc
* src/DHTTaskFactoryImpl.h
* src/OptionHandlerFactory.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DHTMessageTrackerTest.cc
Diffstat (limited to 'src')
| -rw-r--r-- | src/DHTConstants.h | 1 | ||||
| -rw-r--r-- | src/DHTMessageDispatcherImpl.cc | 6 | ||||
| -rw-r--r-- | src/DHTMessageDispatcherImpl.h | 7 | ||||
| -rw-r--r-- | src/DHTMessageTracker.cc | 5 | ||||
| -rw-r--r-- | src/DHTMessageTracker.h | 4 | ||||
| -rw-r--r-- | src/DHTReplaceNodeTask.h | 5 | ||||
| -rw-r--r-- | src/DHTSetup.cc | 4 | ||||
| -rw-r--r-- | src/DHTTaskFactoryImpl.cc | 6 | ||||
| -rw-r--r-- | src/DHTTaskFactoryImpl.h | 7 | ||||
| -rw-r--r-- | src/OptionHandlerFactory.cc | 9 | ||||
| -rw-r--r-- | src/prefs.cc | 2 | ||||
| -rw-r--r-- | src/prefs.h | 2 | ||||
| -rw-r--r-- | src/usage_text.h | 2 |
13 files changed, 48 insertions, 12 deletions
diff --git a/src/DHTConstants.h b/src/DHTConstants.h index 2fbc1106..09e9e5ae 100644 --- a/src/DHTConstants.h +++ b/src/DHTConstants.h @@ -45,6 +45,7 @@ #define DHT_TOKEN_LENGTH 4 +// See --dht-message-timeout option. #define DHT_MESSAGE_TIMEOUT 10 #define DHT_NODE_CONTACT_INTERVAL (15*60) diff --git a/src/DHTMessageDispatcherImpl.cc b/src/DHTMessageDispatcherImpl.cc index 31fe2182..bb507c52 100644 --- a/src/DHTMessageDispatcherImpl.cc +++ b/src/DHTMessageDispatcherImpl.cc @@ -46,8 +46,10 @@ namespace aria2 { -DHTMessageDispatcherImpl::DHTMessageDispatcherImpl(const SharedHandle<DHTMessageTracker>& tracker): +DHTMessageDispatcherImpl::DHTMessageDispatcherImpl +(const SharedHandle<DHTMessageTracker>& tracker): _tracker(tracker), + _timeout(DHT_MESSAGE_TIMEOUT), _logger(LogFactory::getInstance()) {} DHTMessageDispatcherImpl::~DHTMessageDispatcherImpl() {} @@ -65,7 +67,7 @@ void DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle<DHTMessage>& message, const SharedHandle<DHTMessageCallback>& callback) { - addMessageToQueue(message, DHT_MESSAGE_TIMEOUT, callback); + addMessageToQueue(message, _timeout, callback); } bool diff --git a/src/DHTMessageDispatcherImpl.h b/src/DHTMessageDispatcherImpl.h index 88640a52..ea48904b 100644 --- a/src/DHTMessageDispatcherImpl.h +++ b/src/DHTMessageDispatcherImpl.h @@ -50,6 +50,8 @@ private: std::deque<SharedHandle<DHTMessageEntry> > _messageQueue; + time_t _timeout; + Logger* _logger; bool sendMessage(const SharedHandle<DHTMessageEntry>& msg); @@ -72,6 +74,11 @@ public: virtual void sendMessages(); virtual size_t countMessageInQueue() const; + + void setTimeout(time_t timeout) + { + _timeout = timeout; + } }; } // namespace aria2 diff --git a/src/DHTMessageTracker.cc b/src/DHTMessageTracker.cc index 970ddf0e..60f9feff 100644 --- a/src/DHTMessageTracker.cc +++ b/src/DHTMessageTracker.cc @@ -63,11 +63,6 @@ void DHTMessageTracker::addMessage(const SharedHandle<DHTMessage>& message, time _entries.push_back(e); } -void DHTMessageTracker::addMessage(const SharedHandle<DHTMessage>& message, const SharedHandle<DHTMessageCallback>& callback) -{ - addMessage(message, DHT_MESSAGE_TIMEOUT, callback); -} - std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> > DHTMessageTracker::messageArrived(const BDE& dict, const std::string& ipaddr, uint16_t port) diff --git a/src/DHTMessageTracker.h b/src/DHTMessageTracker.h index 0a174b38..86d70fe7 100644 --- a/src/DHTMessageTracker.h +++ b/src/DHTMessageTracker.h @@ -72,10 +72,6 @@ public: const SharedHandle<DHTMessageCallback>& callback = SharedHandle<DHTMessageCallback>()); - void addMessage(const SharedHandle<DHTMessage>& message, - const SharedHandle<DHTMessageCallback>& callback = - SharedHandle<DHTMessageCallback>()); - std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> > messageArrived(const BDE& dict, const std::string& ipaddr, uint16_t port); diff --git a/src/DHTReplaceNodeTask.h b/src/DHTReplaceNodeTask.h index d6a699a1..f9a3a0ae 100644 --- a/src/DHTReplaceNodeTask.h +++ b/src/DHTReplaceNodeTask.h @@ -67,6 +67,11 @@ public: virtual void onReceived(const SharedHandle<DHTMessage>& message); virtual void onTimeout(const SharedHandle<DHTNode>& node); + + void setTimeout(time_t timeout) + { + _timeout = timeout; + } }; } // namespace aria2 diff --git a/src/DHTSetup.cc b/src/DHTSetup.cc index e8448e85..f5df82c2 100644 --- a/src/DHTSetup.cc +++ b/src/DHTSetup.cc @@ -141,10 +141,13 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e) SharedHandle<DHTTokenTracker> tokenTracker(new DHTTokenTracker()); + const time_t messageTimeout = e->option->getAsInt(PREF_DHT_MESSAGE_TIMEOUT); // wiring up tracker->setRoutingTable(routingTable); tracker->setMessageFactory(factory); + dispatcher->setTimeout(messageTimeout); + receiver->setConnection(connection); receiver->setMessageFactory(factory); receiver->setRoutingTable(routingTable); @@ -154,6 +157,7 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e) taskFactory->setMessageDispatcher(dispatcher); taskFactory->setMessageFactory(factory); taskFactory->setTaskQueue(taskQueue); + taskFactory->setTimeout(messageTimeout); routingTable->setTaskQueue(taskQueue); routingTable->setTaskFactory(taskFactory); diff --git a/src/DHTTaskFactoryImpl.cc b/src/DHTTaskFactoryImpl.cc index ee5ade9a..77fb9514 100644 --- a/src/DHTTaskFactoryImpl.cc +++ b/src/DHTTaskFactoryImpl.cc @@ -53,7 +53,9 @@ namespace aria2 { -DHTTaskFactoryImpl::DHTTaskFactoryImpl():_logger(LogFactory::getInstance()) {} +DHTTaskFactoryImpl::DHTTaskFactoryImpl(): + _timeout(DHT_MESSAGE_TIMEOUT), + _logger(LogFactory::getInstance()) {} DHTTaskFactoryImpl::~DHTTaskFactoryImpl() {} @@ -62,6 +64,7 @@ DHTTaskFactoryImpl::createPingTask(const SharedHandle<DHTNode>& remoteNode, size_t numRetry) { SharedHandle<DHTPingTask> task(new DHTPingTask(remoteNode, numRetry)); + task->setTimeout(_timeout); setCommonProperty(task); return task; } @@ -108,6 +111,7 @@ DHTTaskFactoryImpl::createReplaceNodeTask(const SharedHandle<DHTBucket>& bucket, const SharedHandle<DHTNode>& newNode) { SharedHandle<DHTReplaceNodeTask> task(new DHTReplaceNodeTask(bucket, newNode)); + task->setTimeout(_timeout); setCommonProperty(task); return task; } diff --git a/src/DHTTaskFactoryImpl.h b/src/DHTTaskFactoryImpl.h index 52f94b3f..c0076a75 100644 --- a/src/DHTTaskFactoryImpl.h +++ b/src/DHTTaskFactoryImpl.h @@ -36,6 +36,7 @@ #define _D_DHT_TASK_FACTORY_IMPL_H_ #include "DHTTaskFactory.h" +#include "a2time.h" namespace aria2 { @@ -59,6 +60,8 @@ private: WeakHandle<DHTTaskQueue> _taskQueue; + time_t _timeout; + Logger* _logger; void setCommonProperty(const SharedHandle<DHTAbstractTask>& task); @@ -98,6 +101,10 @@ public: void setLocalNode(const SharedHandle<DHTNode>& localNode); + void setTimeout(time_t timeout) + { + _timeout = timeout; + } }; } // namespace aria2 diff --git a/src/OptionHandlerFactory.cc b/src/OptionHandlerFactory.cc index 84c289f1..bc7dc63a 100644 --- a/src/OptionHandlerFactory.cc +++ b/src/OptionHandlerFactory.cc @@ -1255,6 +1255,15 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers() handlers.push_back(op); } { + SharedHandle<OptionHandler> op(new NumberOptionHandler + (PREF_DHT_MESSAGE_TIMEOUT, + TEXT_DHT_MESSAGE_TIMEOUT, + "10", + 1, 60)); + op->addTag(TAG_BITTORRENT); + handlers.push_back(op); + } + { SharedHandle<OptionHandler> op(new BooleanOptionHandler (PREF_ENABLE_DHT, TEXT_ENABLE_DHT, diff --git a/src/prefs.cc b/src/prefs.cc index 37406885..3f80f62b 100644 --- a/src/prefs.cc +++ b/src/prefs.cc @@ -338,6 +338,8 @@ const std::string PREF_BT_LPD_INTERFACE("bt-lpd-interface"); const std::string PREF_BT_TRACKER_TIMEOUT("bt-tracker-timeout"); // values: 1*digit const std::string PREF_BT_TRACKER_CONNECT_TIMEOUT("bt-tracker-connect-timeout"); +// values: 1*digit +const std::string PREF_DHT_MESSAGE_TIMEOUT("dht-message-timeout"); /** * Metalink related preferences diff --git a/src/prefs.h b/src/prefs.h index 99d598cf..08b09970 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -342,6 +342,8 @@ extern const std::string PREF_BT_LPD_INTERFACE; extern const std::string PREF_BT_TRACKER_TIMEOUT; // values: 1*digit extern const std::string PREF_BT_TRACKER_CONNECT_TIMEOUT; +// values: 1*digit +extern const std::string PREF_DHT_MESSAGE_TIMEOUT; /** * Metalink related preferences diff --git a/src/usage_text.h b/src/usage_text.h index 2a35d871..d4d93310 100644 --- a/src/usage_text.h +++ b/src/usage_text.h @@ -665,3 +665,5 @@ " connection is established, this option makes no\n" \ " effect and --bt-tracker-timeout option is used\n" \ " instead.") +#define TEXT_DHT_MESSAGE_TIMEOUT \ + _(" --dht-message-timeout=SEC Set timeout in seconds.") |
