mirror of https://github.com/aria2/aria2
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.ccpull/1/head
parent
68156ef258
commit
e7e214fef2
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
|||
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
|
||||
|
||||
2010-03-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Added --bt-tracker-connect-timeout and --bt-tracker-timeout
|
||||
|
|
|
@ -752,6 +752,12 @@ Make sure that the specified ports are open for incoming UDP traffic\&.
|
|||
.sp .5v
|
||||
.RE
|
||||
.PP
|
||||
\fB\-\-dht\-message\-timeout\fR=SEC
|
||||
.RS 4
|
||||
Set timeout in seconds\&. Default:
|
||||
\fI10\fR
|
||||
.RE
|
||||
.PP
|
||||
\fB\-\-enable\-dht\fR[=\fItrue\fR|\fIfalse\fR]
|
||||
.RS 4
|
||||
Enable DHT functionality\&. If a private flag is set in a torrent, aria2 doesn\(cqt use DHT for that download even if
|
||||
|
|
|
@ -1503,6 +1503,14 @@ writes the piece to the appropriate files.</td>
|
|||
</div>
|
||||
<div class="dlist"><dl>
|
||||
<dt class="hdlist1">
|
||||
<strong>--dht-message-timeout</strong>=SEC
|
||||
</dt>
|
||||
<dd>
|
||||
<p>
|
||||
Set timeout in seconds. Default: <em>10</em>
|
||||
</p>
|
||||
</dd>
|
||||
<dt class="hdlist1">
|
||||
<strong>--enable-dht</strong>[=<em>true</em>|<em>false</em>]
|
||||
</dt>
|
||||
<dd>
|
||||
|
@ -4076,7 +4084,7 @@ files in the program, then also delete it here.</p></div>
|
|||
<div id="footnotes"><hr /></div>
|
||||
<div id="footer">
|
||||
<div id="footer-text">
|
||||
Last updated 2010-03-30 23:12:40 JST
|
||||
Last updated 2010-03-30 23:43:40 JST
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -527,6 +527,10 @@ BitTorrent Specific Options
|
|||
[NOTE]
|
||||
Make sure that the specified ports are open for incoming UDP traffic.
|
||||
|
||||
*--dht-message-timeout*=SEC::
|
||||
|
||||
Set timeout in seconds. Default: '10'
|
||||
|
||||
*--enable-dht*[='true'|'false']::
|
||||
Enable DHT functionality. If a private flag is set in a torrent, aria2
|
||||
doesn't use DHT for that download even if 'true' is given.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1254,6 +1254,15 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
|
|||
op->addTag(TAG_BITTORRENT);
|
||||
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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -71,9 +71,9 @@ void DHTMessageTrackerTest::testMessageArrived()
|
|||
DHTMessageTracker tracker;
|
||||
tracker.setRoutingTable(routingTable);
|
||||
tracker.setMessageFactory(factory);
|
||||
tracker.addMessage(m1);
|
||||
tracker.addMessage(m2, c2);
|
||||
tracker.addMessage(m3);
|
||||
tracker.addMessage(m1, DHT_MESSAGE_TIMEOUT);
|
||||
tracker.addMessage(m2, DHT_MESSAGE_TIMEOUT, c2);
|
||||
tracker.addMessage(m3, DHT_MESSAGE_TIMEOUT);
|
||||
|
||||
{
|
||||
BDE resDict = BDE::dict();
|
||||
|
|
Loading…
Reference in New Issue