mirror of https://github.com/aria2/aria2
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten DHTRegistry * src/BtSetup.cc * src/DHTRegistry.cc * src/DHTRegistry.h * src/DHTSetup.cc * src/PeerInteractionCommand.cc * src/RequestGroup.ccpull/1/head
parent
1dcf842ff4
commit
7584ad1437
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Rewritten DHTRegistry
|
||||||
|
* src/BtSetup.cc
|
||||||
|
* src/DHTRegistry.cc
|
||||||
|
* src/DHTRegistry.h
|
||||||
|
* src/DHTSetup.cc
|
||||||
|
* src/PeerInteractionCommand.cc
|
||||||
|
* src/RequestGroup.cc
|
||||||
|
|
||||||
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Renamed member variables of XmlRpcResponse
|
Renamed member variables of XmlRpcResponse
|
||||||
|
|
|
@ -129,8 +129,8 @@ void BtSetup::setup(std::vector<Command*>& commands,
|
||||||
DHTSetup::initialized()) {
|
DHTSetup::initialized()) {
|
||||||
DHTGetPeersCommand* command =
|
DHTGetPeersCommand* command =
|
||||||
new DHTGetPeersCommand(e->newCUID(), requestGroup, e);
|
new DHTGetPeersCommand(e->newCUID(), requestGroup, e);
|
||||||
command->setTaskQueue(DHTRegistry::_taskQueue);
|
command->setTaskQueue(DHTRegistry::getData().taskQueue);
|
||||||
command->setTaskFactory(DHTRegistry::_taskFactory);
|
command->setTaskFactory(DHTRegistry::getData().taskFactory);
|
||||||
command->setBtRuntime(btRuntime);
|
command->setBtRuntime(btRuntime);
|
||||||
command->setPeerStorage(peerStorage);
|
command->setPeerStorage(peerStorage);
|
||||||
commands.push_back(command);
|
commands.push_back(command);
|
||||||
|
|
|
@ -46,35 +46,20 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
SharedHandle<DHTNode> DHTRegistry::_localNode;
|
|
||||||
|
|
||||||
SharedHandle<DHTRoutingTable> DHTRegistry::_routingTable;
|
DHTRegistry::Data DHTRegistry::_data;
|
||||||
|
|
||||||
SharedHandle<DHTTaskQueue> DHTRegistry::_taskQueue;
|
void DHTRegistry::clearData()
|
||||||
|
|
||||||
SharedHandle<DHTTaskFactory> DHTRegistry::_taskFactory;
|
|
||||||
|
|
||||||
SharedHandle<DHTPeerAnnounceStorage> DHTRegistry::_peerAnnounceStorage;
|
|
||||||
|
|
||||||
SharedHandle<DHTTokenTracker> DHTRegistry::_tokenTracker;
|
|
||||||
|
|
||||||
SharedHandle<DHTMessageDispatcher> DHTRegistry::_messageDispatcher;
|
|
||||||
|
|
||||||
SharedHandle<DHTMessageReceiver> DHTRegistry::_messageReceiver;
|
|
||||||
|
|
||||||
SharedHandle<DHTMessageFactory> DHTRegistry::_messageFactory;
|
|
||||||
|
|
||||||
void DHTRegistry::clear()
|
|
||||||
{
|
{
|
||||||
_localNode.reset();
|
_data.localNode.reset();
|
||||||
_routingTable.reset();
|
_data.routingTable.reset();
|
||||||
_taskQueue.reset();
|
_data.taskQueue.reset();
|
||||||
_taskFactory.reset();
|
_data.taskFactory.reset();
|
||||||
_peerAnnounceStorage.reset();
|
_data.peerAnnounceStorage.reset();
|
||||||
_tokenTracker.reset();
|
_data.tokenTracker.reset();
|
||||||
_messageDispatcher.reset();
|
_data.messageDispatcher.reset();
|
||||||
_messageReceiver.reset();
|
_data.messageReceiver.reset();
|
||||||
_messageFactory.reset();
|
_data.messageFactory.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -51,28 +51,41 @@ class DHTMessageReceiver;
|
||||||
class DHTMessageFactory;
|
class DHTMessageFactory;
|
||||||
|
|
||||||
class DHTRegistry {
|
class DHTRegistry {
|
||||||
public:
|
|
||||||
static SharedHandle<DHTNode> _localNode;
|
|
||||||
|
|
||||||
static SharedHandle<DHTRoutingTable> _routingTable;
|
|
||||||
|
|
||||||
static SharedHandle<DHTTaskQueue> _taskQueue;
|
|
||||||
|
|
||||||
static SharedHandle<DHTTaskFactory> _taskFactory;
|
|
||||||
|
|
||||||
static SharedHandle<DHTPeerAnnounceStorage> _peerAnnounceStorage;
|
|
||||||
|
|
||||||
static SharedHandle<DHTTokenTracker> _tokenTracker;
|
|
||||||
|
|
||||||
static SharedHandle<DHTMessageDispatcher> _messageDispatcher;
|
|
||||||
|
|
||||||
static SharedHandle<DHTMessageReceiver> _messageReceiver;
|
|
||||||
|
|
||||||
static SharedHandle<DHTMessageFactory> _messageFactory;
|
|
||||||
|
|
||||||
static void clear();
|
|
||||||
private:
|
private:
|
||||||
|
struct Data {
|
||||||
|
SharedHandle<DHTNode> localNode;
|
||||||
|
|
||||||
|
SharedHandle<DHTRoutingTable> routingTable;
|
||||||
|
|
||||||
|
SharedHandle<DHTTaskQueue> taskQueue;
|
||||||
|
|
||||||
|
SharedHandle<DHTTaskFactory> taskFactory;
|
||||||
|
|
||||||
|
SharedHandle<DHTPeerAnnounceStorage> peerAnnounceStorage;
|
||||||
|
|
||||||
|
SharedHandle<DHTTokenTracker> tokenTracker;
|
||||||
|
|
||||||
|
SharedHandle<DHTMessageDispatcher> messageDispatcher;
|
||||||
|
|
||||||
|
SharedHandle<DHTMessageReceiver> messageReceiver;
|
||||||
|
|
||||||
|
SharedHandle<DHTMessageFactory> messageFactory;
|
||||||
|
};
|
||||||
|
|
||||||
|
static Data _data;
|
||||||
DHTRegistry();
|
DHTRegistry();
|
||||||
|
public:
|
||||||
|
static const Data& getData()
|
||||||
|
{
|
||||||
|
return _data;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Data& getMutableData()
|
||||||
|
{
|
||||||
|
return _data;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void clearData();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -178,15 +178,15 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e)
|
||||||
factory->setLocalNode(localNode);
|
factory->setLocalNode(localNode);
|
||||||
|
|
||||||
// assign them into DHTRegistry
|
// assign them into DHTRegistry
|
||||||
DHTRegistry::_localNode = localNode;
|
DHTRegistry::getMutableData().localNode = localNode;
|
||||||
DHTRegistry::_routingTable = routingTable;
|
DHTRegistry::getMutableData().routingTable = routingTable;
|
||||||
DHTRegistry::_taskQueue = taskQueue;
|
DHTRegistry::getMutableData().taskQueue = taskQueue;
|
||||||
DHTRegistry::_taskFactory = taskFactory;
|
DHTRegistry::getMutableData().taskFactory = taskFactory;
|
||||||
DHTRegistry::_peerAnnounceStorage = peerAnnounceStorage;
|
DHTRegistry::getMutableData().peerAnnounceStorage = peerAnnounceStorage;
|
||||||
DHTRegistry::_tokenTracker = tokenTracker;
|
DHTRegistry::getMutableData().tokenTracker = tokenTracker;
|
||||||
DHTRegistry::_messageDispatcher = dispatcher;
|
DHTRegistry::getMutableData().messageDispatcher = dispatcher;
|
||||||
DHTRegistry::_messageReceiver = receiver;
|
DHTRegistry::getMutableData().messageReceiver = receiver;
|
||||||
DHTRegistry::_messageFactory = factory;
|
DHTRegistry::getMutableData().messageFactory = factory;
|
||||||
|
|
||||||
// add deserialized nodes to routing table
|
// add deserialized nodes to routing table
|
||||||
const std::vector<SharedHandle<DHTNode> >& desnodes =
|
const std::vector<SharedHandle<DHTNode> >& desnodes =
|
||||||
|
@ -265,7 +265,7 @@ void DHTSetup::setup(std::vector<Command*>& commands, DownloadEngine* e)
|
||||||
commands.insert(commands.end(), tempCommands.begin(), tempCommands.end());
|
commands.insert(commands.end(), tempCommands.begin(), tempCommands.end());
|
||||||
} catch(RecoverableException& e) {
|
} catch(RecoverableException& e) {
|
||||||
_logger->error("Exception caught while initializing DHT functionality. DHT is disabled.", e);
|
_logger->error("Exception caught while initializing DHT functionality. DHT is disabled.", e);
|
||||||
DHTRegistry::clear();
|
DHTRegistry::clearData();
|
||||||
std::for_each(tempCommands.begin(), tempCommands.end(), Deleter());
|
std::for_each(tempCommands.begin(), tempCommands.end(), Deleter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,10 +134,10 @@ PeerInteractionCommand::PeerInteractionCommand
|
||||||
factory->setPeerStorage(peerStorage);
|
factory->setPeerStorage(peerStorage);
|
||||||
factory->setExtensionMessageFactory(extensionMessageFactory);
|
factory->setExtensionMessageFactory(extensionMessageFactory);
|
||||||
factory->setPeer(getPeer());
|
factory->setPeer(getPeer());
|
||||||
factory->setLocalNode(DHTRegistry::_localNode);
|
factory->setLocalNode(DHTRegistry::getData().localNode);
|
||||||
factory->setRoutingTable(DHTRegistry::_routingTable);
|
factory->setRoutingTable(DHTRegistry::getData().routingTable);
|
||||||
factory->setTaskQueue(DHTRegistry::_taskQueue);
|
factory->setTaskQueue(DHTRegistry::getData().taskQueue);
|
||||||
factory->setTaskFactory(DHTRegistry::_taskFactory);
|
factory->setTaskFactory(DHTRegistry::getData().taskFactory);
|
||||||
if(metadataGetMode) {
|
if(metadataGetMode) {
|
||||||
factory->enableMetadataGetMode();
|
factory->enableMetadataGetMode();
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ PeerInteractionCommand::PeerInteractionCommand
|
||||||
}
|
}
|
||||||
if(DHTSetup::initialized()) {
|
if(DHTSetup::initialized()) {
|
||||||
btInteractive->setDHTEnabled(true);
|
btInteractive->setDHTEnabled(true);
|
||||||
btInteractive->setLocalNode(DHTRegistry::_localNode);
|
btInteractive->setLocalNode(DHTRegistry::getData().localNode);
|
||||||
factory->setDHTEnabled(true);
|
factory->setDHTEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,10 +353,10 @@ void RequestGroup::createInitialCommand
|
||||||
}
|
}
|
||||||
DHTEntryPointNameResolveCommand* command =
|
DHTEntryPointNameResolveCommand* command =
|
||||||
new DHTEntryPointNameResolveCommand(e->newCUID(), e, entryPoints);
|
new DHTEntryPointNameResolveCommand(e->newCUID(), e, entryPoints);
|
||||||
command->setTaskQueue(DHTRegistry::_taskQueue);
|
command->setTaskQueue(DHTRegistry::getData().taskQueue);
|
||||||
command->setTaskFactory(DHTRegistry::_taskFactory);
|
command->setTaskFactory(DHTRegistry::getData().taskFactory);
|
||||||
command->setRoutingTable(DHTRegistry::_routingTable);
|
command->setRoutingTable(DHTRegistry::getData().routingTable);
|
||||||
command->setLocalNode(DHTRegistry::_localNode);
|
command->setLocalNode(DHTRegistry::getData().localNode);
|
||||||
e->addCommand(command);
|
e->addCommand(command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue