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>
|
2010-03-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Added --bt-tracker-connect-timeout and --bt-tracker-timeout
|
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
|
.sp .5v
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.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]
|
\fB\-\-enable\-dht\fR[=\fItrue\fR|\fIfalse\fR]
|
||||||
.RS 4
|
.RS 4
|
||||||
Enable DHT functionality\&. If a private flag is set in a torrent, aria2 doesn\(cqt use DHT for that download even if
|
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>
|
||||||
<div class="dlist"><dl>
|
<div class="dlist"><dl>
|
||||||
<dt class="hdlist1">
|
<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>]
|
<strong>--enable-dht</strong>[=<em>true</em>|<em>false</em>]
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
|
@ -4076,7 +4084,7 @@ files in the program, then also delete it here.</p></div>
|
||||||
<div id="footnotes"><hr /></div>
|
<div id="footnotes"><hr /></div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<div id="footer-text">
|
<div id="footer-text">
|
||||||
Last updated 2010-03-30 23:12:40 JST
|
Last updated 2010-03-30 23:43:40 JST
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -527,6 +527,10 @@ BitTorrent Specific Options
|
||||||
[NOTE]
|
[NOTE]
|
||||||
Make sure that the specified ports are open for incoming UDP traffic.
|
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*[='true'|'false']::
|
||||||
Enable DHT functionality. If a private flag is set in a torrent, aria2
|
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.
|
doesn't use DHT for that download even if 'true' is given.
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
#define DHT_TOKEN_LENGTH 4
|
#define DHT_TOKEN_LENGTH 4
|
||||||
|
|
||||||
|
// See --dht-message-timeout option.
|
||||||
#define DHT_MESSAGE_TIMEOUT 10
|
#define DHT_MESSAGE_TIMEOUT 10
|
||||||
|
|
||||||
#define DHT_NODE_CONTACT_INTERVAL (15*60)
|
#define DHT_NODE_CONTACT_INTERVAL (15*60)
|
||||||
|
|
|
@ -46,8 +46,10 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
DHTMessageDispatcherImpl::DHTMessageDispatcherImpl(const SharedHandle<DHTMessageTracker>& tracker):
|
DHTMessageDispatcherImpl::DHTMessageDispatcherImpl
|
||||||
|
(const SharedHandle<DHTMessageTracker>& tracker):
|
||||||
_tracker(tracker),
|
_tracker(tracker),
|
||||||
|
_timeout(DHT_MESSAGE_TIMEOUT),
|
||||||
_logger(LogFactory::getInstance()) {}
|
_logger(LogFactory::getInstance()) {}
|
||||||
|
|
||||||
DHTMessageDispatcherImpl::~DHTMessageDispatcherImpl() {}
|
DHTMessageDispatcherImpl::~DHTMessageDispatcherImpl() {}
|
||||||
|
@ -65,7 +67,7 @@ void
|
||||||
DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle<DHTMessage>& message,
|
DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle<DHTMessage>& message,
|
||||||
const SharedHandle<DHTMessageCallback>& callback)
|
const SharedHandle<DHTMessageCallback>& callback)
|
||||||
{
|
{
|
||||||
addMessageToQueue(message, DHT_MESSAGE_TIMEOUT, callback);
|
addMessageToQueue(message, _timeout, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -50,6 +50,8 @@ private:
|
||||||
|
|
||||||
std::deque<SharedHandle<DHTMessageEntry> > _messageQueue;
|
std::deque<SharedHandle<DHTMessageEntry> > _messageQueue;
|
||||||
|
|
||||||
|
time_t _timeout;
|
||||||
|
|
||||||
Logger* _logger;
|
Logger* _logger;
|
||||||
|
|
||||||
bool sendMessage(const SharedHandle<DHTMessageEntry>& msg);
|
bool sendMessage(const SharedHandle<DHTMessageEntry>& msg);
|
||||||
|
@ -72,6 +74,11 @@ public:
|
||||||
virtual void sendMessages();
|
virtual void sendMessages();
|
||||||
|
|
||||||
virtual size_t countMessageInQueue() const;
|
virtual size_t countMessageInQueue() const;
|
||||||
|
|
||||||
|
void setTimeout(time_t timeout)
|
||||||
|
{
|
||||||
|
_timeout = timeout;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -63,11 +63,6 @@ void DHTMessageTracker::addMessage(const SharedHandle<DHTMessage>& message, time
|
||||||
_entries.push_back(e);
|
_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> >
|
std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> >
|
||||||
DHTMessageTracker::messageArrived(const BDE& dict,
|
DHTMessageTracker::messageArrived(const BDE& dict,
|
||||||
const std::string& ipaddr, uint16_t port)
|
const std::string& ipaddr, uint16_t port)
|
||||||
|
|
|
@ -72,10 +72,6 @@ public:
|
||||||
const SharedHandle<DHTMessageCallback>& callback =
|
const SharedHandle<DHTMessageCallback>& callback =
|
||||||
SharedHandle<DHTMessageCallback>());
|
SharedHandle<DHTMessageCallback>());
|
||||||
|
|
||||||
void addMessage(const SharedHandle<DHTMessage>& message,
|
|
||||||
const SharedHandle<DHTMessageCallback>& callback =
|
|
||||||
SharedHandle<DHTMessageCallback>());
|
|
||||||
|
|
||||||
std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> >
|
std::pair<SharedHandle<DHTMessage>, SharedHandle<DHTMessageCallback> >
|
||||||
messageArrived(const BDE& dict,
|
messageArrived(const BDE& dict,
|
||||||
const std::string& ipaddr, uint16_t port);
|
const std::string& ipaddr, uint16_t port);
|
||||||
|
|
|
@ -67,6 +67,11 @@ public:
|
||||||
virtual void onReceived(const SharedHandle<DHTMessage>& message);
|
virtual void onReceived(const SharedHandle<DHTMessage>& message);
|
||||||
|
|
||||||
virtual void onTimeout(const SharedHandle<DHTNode>& node);
|
virtual void onTimeout(const SharedHandle<DHTNode>& node);
|
||||||
|
|
||||||
|
void setTimeout(time_t timeout)
|
||||||
|
{
|
||||||
|
_timeout = timeout;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -141,10 +141,13 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e)
|
||||||
|
|
||||||
SharedHandle<DHTTokenTracker> tokenTracker(new DHTTokenTracker());
|
SharedHandle<DHTTokenTracker> tokenTracker(new DHTTokenTracker());
|
||||||
|
|
||||||
|
const time_t messageTimeout = e->option->getAsInt(PREF_DHT_MESSAGE_TIMEOUT);
|
||||||
// wiring up
|
// wiring up
|
||||||
tracker->setRoutingTable(routingTable);
|
tracker->setRoutingTable(routingTable);
|
||||||
tracker->setMessageFactory(factory);
|
tracker->setMessageFactory(factory);
|
||||||
|
|
||||||
|
dispatcher->setTimeout(messageTimeout);
|
||||||
|
|
||||||
receiver->setConnection(connection);
|
receiver->setConnection(connection);
|
||||||
receiver->setMessageFactory(factory);
|
receiver->setMessageFactory(factory);
|
||||||
receiver->setRoutingTable(routingTable);
|
receiver->setRoutingTable(routingTable);
|
||||||
|
@ -154,6 +157,7 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e)
|
||||||
taskFactory->setMessageDispatcher(dispatcher);
|
taskFactory->setMessageDispatcher(dispatcher);
|
||||||
taskFactory->setMessageFactory(factory);
|
taskFactory->setMessageFactory(factory);
|
||||||
taskFactory->setTaskQueue(taskQueue);
|
taskFactory->setTaskQueue(taskQueue);
|
||||||
|
taskFactory->setTimeout(messageTimeout);
|
||||||
|
|
||||||
routingTable->setTaskQueue(taskQueue);
|
routingTable->setTaskQueue(taskQueue);
|
||||||
routingTable->setTaskFactory(taskFactory);
|
routingTable->setTaskFactory(taskFactory);
|
||||||
|
|
|
@ -53,7 +53,9 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
DHTTaskFactoryImpl::DHTTaskFactoryImpl():_logger(LogFactory::getInstance()) {}
|
DHTTaskFactoryImpl::DHTTaskFactoryImpl():
|
||||||
|
_timeout(DHT_MESSAGE_TIMEOUT),
|
||||||
|
_logger(LogFactory::getInstance()) {}
|
||||||
|
|
||||||
DHTTaskFactoryImpl::~DHTTaskFactoryImpl() {}
|
DHTTaskFactoryImpl::~DHTTaskFactoryImpl() {}
|
||||||
|
|
||||||
|
@ -62,6 +64,7 @@ DHTTaskFactoryImpl::createPingTask(const SharedHandle<DHTNode>& remoteNode,
|
||||||
size_t numRetry)
|
size_t numRetry)
|
||||||
{
|
{
|
||||||
SharedHandle<DHTPingTask> task(new DHTPingTask(remoteNode, numRetry));
|
SharedHandle<DHTPingTask> task(new DHTPingTask(remoteNode, numRetry));
|
||||||
|
task->setTimeout(_timeout);
|
||||||
setCommonProperty(task);
|
setCommonProperty(task);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
@ -108,6 +111,7 @@ DHTTaskFactoryImpl::createReplaceNodeTask(const SharedHandle<DHTBucket>& bucket,
|
||||||
const SharedHandle<DHTNode>& newNode)
|
const SharedHandle<DHTNode>& newNode)
|
||||||
{
|
{
|
||||||
SharedHandle<DHTReplaceNodeTask> task(new DHTReplaceNodeTask(bucket, newNode));
|
SharedHandle<DHTReplaceNodeTask> task(new DHTReplaceNodeTask(bucket, newNode));
|
||||||
|
task->setTimeout(_timeout);
|
||||||
setCommonProperty(task);
|
setCommonProperty(task);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#define _D_DHT_TASK_FACTORY_IMPL_H_
|
#define _D_DHT_TASK_FACTORY_IMPL_H_
|
||||||
|
|
||||||
#include "DHTTaskFactory.h"
|
#include "DHTTaskFactory.h"
|
||||||
|
#include "a2time.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -59,6 +60,8 @@ private:
|
||||||
|
|
||||||
WeakHandle<DHTTaskQueue> _taskQueue;
|
WeakHandle<DHTTaskQueue> _taskQueue;
|
||||||
|
|
||||||
|
time_t _timeout;
|
||||||
|
|
||||||
Logger* _logger;
|
Logger* _logger;
|
||||||
|
|
||||||
void setCommonProperty(const SharedHandle<DHTAbstractTask>& task);
|
void setCommonProperty(const SharedHandle<DHTAbstractTask>& task);
|
||||||
|
@ -98,6 +101,10 @@ public:
|
||||||
|
|
||||||
void setLocalNode(const SharedHandle<DHTNode>& localNode);
|
void setLocalNode(const SharedHandle<DHTNode>& localNode);
|
||||||
|
|
||||||
|
void setTimeout(time_t timeout)
|
||||||
|
{
|
||||||
|
_timeout = timeout;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -1254,6 +1254,15 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
|
||||||
op->addTag(TAG_BITTORRENT);
|
op->addTag(TAG_BITTORRENT);
|
||||||
handlers.push_back(op);
|
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
|
SharedHandle<OptionHandler> op(new BooleanOptionHandler
|
||||||
(PREF_ENABLE_DHT,
|
(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");
|
const std::string PREF_BT_TRACKER_TIMEOUT("bt-tracker-timeout");
|
||||||
// values: 1*digit
|
// values: 1*digit
|
||||||
const std::string PREF_BT_TRACKER_CONNECT_TIMEOUT("bt-tracker-connect-timeout");
|
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
|
* Metalink related preferences
|
||||||
|
|
|
@ -342,6 +342,8 @@ extern const std::string PREF_BT_LPD_INTERFACE;
|
||||||
extern const std::string PREF_BT_TRACKER_TIMEOUT;
|
extern const std::string PREF_BT_TRACKER_TIMEOUT;
|
||||||
// values: 1*digit
|
// values: 1*digit
|
||||||
extern const std::string PREF_BT_TRACKER_CONNECT_TIMEOUT;
|
extern const std::string PREF_BT_TRACKER_CONNECT_TIMEOUT;
|
||||||
|
// values: 1*digit
|
||||||
|
extern const std::string PREF_DHT_MESSAGE_TIMEOUT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metalink related preferences
|
* Metalink related preferences
|
||||||
|
|
|
@ -665,3 +665,5 @@
|
||||||
" connection is established, this option makes no\n" \
|
" connection is established, this option makes no\n" \
|
||||||
" effect and --bt-tracker-timeout option is used\n" \
|
" effect and --bt-tracker-timeout option is used\n" \
|
||||||
" instead.")
|
" instead.")
|
||||||
|
#define TEXT_DHT_MESSAGE_TIMEOUT \
|
||||||
|
_(" --dht-message-timeout=SEC Set timeout in seconds.")
|
||||||
|
|
|
@ -71,9 +71,9 @@ void DHTMessageTrackerTest::testMessageArrived()
|
||||||
DHTMessageTracker tracker;
|
DHTMessageTracker tracker;
|
||||||
tracker.setRoutingTable(routingTable);
|
tracker.setRoutingTable(routingTable);
|
||||||
tracker.setMessageFactory(factory);
|
tracker.setMessageFactory(factory);
|
||||||
tracker.addMessage(m1);
|
tracker.addMessage(m1, DHT_MESSAGE_TIMEOUT);
|
||||||
tracker.addMessage(m2, c2);
|
tracker.addMessage(m2, DHT_MESSAGE_TIMEOUT, c2);
|
||||||
tracker.addMessage(m3);
|
tracker.addMessage(m3, DHT_MESSAGE_TIMEOUT);
|
||||||
|
|
||||||
{
|
{
|
||||||
BDE resDict = BDE::dict();
|
BDE resDict = BDE::dict();
|
||||||
|
|
Loading…
Reference in New Issue