From ded040666efa013fccbe67b26700477359af7d23 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 12 Jun 2010 02:54:39 +0000 Subject: [PATCH] 2010-06-12 Tatsuhiro Tsujikawa Made protected member variable private. Added accessor funcs. * src/DHTAbstractNodeLookupTask.cc * src/DHTAbstractNodeLookupTask.h * src/DHTAbstractTask.h * src/DHTBucketRefreshTask.cc * src/DHTNodeLookupTask.cc * src/DHTNodeLookupTask.h * src/DHTPeerLookupTask.cc * src/DHTPeerLookupTask.h * src/DHTPingTask.cc * src/DHTPingTask.h * src/DHTReplaceNodeTask.cc * src/DHTReplaceNodeTask.h --- ChangeLog | 16 ++++++++ src/DHTAbstractNodeLookupTask.cc | 63 +++++++++++++++++--------------- src/DHTAbstractNodeLookupTask.h | 18 +++++++-- src/DHTAbstractTask.h | 37 ++++++++++++++++++- src/DHTBucketRefreshTask.cc | 19 +++++----- src/DHTNodeLookupTask.cc | 2 +- src/DHTNodeLookupTask.h | 3 +- src/DHTPeerLookupTask.cc | 24 ++++++------ src/DHTPeerLookupTask.h | 3 +- src/DHTPingTask.cc | 23 +++++++----- src/DHTPingTask.h | 2 +- src/DHTReplaceNodeTask.cc | 27 ++++++++------ src/DHTReplaceNodeTask.h | 3 +- 13 files changed, 161 insertions(+), 79 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5cdd705..dbac761d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2010-06-12 Tatsuhiro Tsujikawa + + Made protected member variable private. Added accessor funcs. + * src/DHTAbstractNodeLookupTask.cc + * src/DHTAbstractNodeLookupTask.h + * src/DHTAbstractTask.h + * src/DHTBucketRefreshTask.cc + * src/DHTNodeLookupTask.cc + * src/DHTNodeLookupTask.h + * src/DHTPeerLookupTask.cc + * src/DHTPeerLookupTask.h + * src/DHTPingTask.cc + * src/DHTPingTask.h + * src/DHTReplaceNodeTask.cc + * src/DHTReplaceNodeTask.h + 2010-06-12 Tatsuhiro Tsujikawa Made protected member variable private. Added accessor funcs. diff --git a/src/DHTAbstractNodeLookupTask.cc b/src/DHTAbstractNodeLookupTask.cc index ace56915..5edb1719 100644 --- a/src/DHTAbstractNodeLookupTask.cc +++ b/src/DHTAbstractNodeLookupTask.cc @@ -51,13 +51,15 @@ namespace aria2 { -DHTAbstractNodeLookupTask::DHTAbstractNodeLookupTask(const unsigned char* targetID): +DHTAbstractNodeLookupTask::DHTAbstractNodeLookupTask +(const unsigned char* targetID): _inFlightMessage(0) { memcpy(_targetID, targetID, DHT_ID_LENGTH); } -void DHTAbstractNodeLookupTask::onReceived(const SharedHandle& message) +void DHTAbstractNodeLookupTask::onReceived +(const SharedHandle& message) { --_inFlightMessage; onReceivedInternal(message); @@ -69,23 +71,25 @@ void DHTAbstractNodeLookupTask::onReceived(const SharedHandle& messa size_t count = 0; for(std::vector >::const_iterator i = newEntries.begin(), eoi = newEntries.end(); i != eoi; ++i) { - if(memcmp(_localNode->getID(), (*i)->_node->getID(), DHT_ID_LENGTH) != 0) { + if(memcmp(getLocalNode()->getID(), (*i)->_node->getID(), + DHT_ID_LENGTH) != 0) { _entries.push_front(*i); ++count; - if(_logger->debug()) { - _logger->debug("Received nodes: id=%s, ip=%s", - util::toHex((*i)->_node->getID(), DHT_ID_LENGTH).c_str(), - (*i)->_node->getIPAddress().c_str()); + if(getLogger()->debug()) { + getLogger()->debug("Received nodes: id=%s, ip=%s", + util::toHex((*i)->_node->getID(), + DHT_ID_LENGTH).c_str(), + (*i)->_node->getIPAddress().c_str()); } } } - if(_logger->debug()) { - _logger->debug("%u node lookup entries added.", count); + if(getLogger()->debug()) { + getLogger()->debug("%u node lookup entries added.", count); } std::stable_sort(_entries.begin(), _entries.end(), DHTIDCloser(_targetID)); _entries.erase(std::unique(_entries.begin(), _entries.end()), _entries.end()); - if(_logger->debug()) { - _logger->debug("%u node lookup entries are unique.", _entries.size()); + if(getLogger()->debug()) { + getLogger()->debug("%u node lookup entries are unique.", _entries.size()); } if(_entries.size() > DHTBucket::K) { _entries.erase(_entries.begin()+DHTBucket::K, _entries.end()); @@ -95,9 +99,9 @@ void DHTAbstractNodeLookupTask::onReceived(const SharedHandle& messa void DHTAbstractNodeLookupTask::onTimeout(const SharedHandle& node) { - if(_logger->debug()) { - _logger->debug("node lookup message timeout for node ID=%s", - util::toHex(node->getID(), DHT_ID_LENGTH).c_str()); + if(getLogger()->debug()) { + getLogger()->debug("node lookup message timeout for node ID=%s", + util::toHex(node->getID(), DHT_ID_LENGTH).c_str()); } --_inFlightMessage; for(std::deque >::iterator i = @@ -116,18 +120,18 @@ void DHTAbstractNodeLookupTask::sendMessageAndCheckFinish() sendMessage(); } if(_inFlightMessage == 0) { - if(_logger->debug()) { - _logger->debug("Finished node_lookup for node ID %s", - util::toHex(_targetID, DHT_ID_LENGTH).c_str()); + if(getLogger()->debug()) { + getLogger()->debug("Finished node_lookup for node ID %s", + util::toHex(_targetID, DHT_ID_LENGTH).c_str()); } onFinish(); updateBucket(); - _finished = true; + setFinished(true); } else { - if(_logger->debug()) { - _logger->debug("%d in flight message for node ID %s", - _inFlightMessage, - util::toHex(_targetID, DHT_ID_LENGTH).c_str()); + if(getLogger()->debug()) { + getLogger()->debug("%d in flight message for node ID %s", + _inFlightMessage, + util::toHex(_targetID, DHT_ID_LENGTH).c_str()); } } } @@ -142,8 +146,9 @@ void DHTAbstractNodeLookupTask::sendMessage() (*i)->_used = true; SharedHandle m = createMessage((*i)->_node); WeakHandle listener(this); - SharedHandle callback(new DHTMessageCallbackImpl(listener)); - _dispatcher->addMessageToQueue(m, callback); + SharedHandle callback + (new DHTMessageCallbackImpl(listener)); + getMessageDispatcher()->addMessageToQueue(m, callback); } } } @@ -156,20 +161,20 @@ void DHTAbstractNodeLookupTask::updateBucket() void DHTAbstractNodeLookupTask::startup() { std::vector > nodes; - _routingTable->getClosestKNodes(nodes, _targetID); + getRoutingTable()->getClosestKNodes(nodes, _targetID); _entries.clear(); toEntries(_entries, nodes); if(_entries.empty()) { - _finished = true; + setFinished(true); } else { // TODO use RTT here _inFlightMessage = 0; sendMessage(); if(_inFlightMessage == 0) { - if(_logger->debug()) { - _logger->debug("No message was sent in this lookup stage. Finished."); + if(getLogger()->debug()) { + getLogger()->debug("No message was sent in this lookup stage. Finished."); } - _finished = true; + setFinished(true); } } } diff --git a/src/DHTAbstractNodeLookupTask.h b/src/DHTAbstractNodeLookupTask.h index 824b7e0a..0846b557 100644 --- a/src/DHTAbstractNodeLookupTask.h +++ b/src/DHTAbstractNodeLookupTask.h @@ -49,8 +49,9 @@ namespace aria2 { class DHTNode; class DHTMessage; -class DHTAbstractNodeLookupTask:public DHTAbstractTask, public DHTMessageCallbackListener { -protected: +class DHTAbstractNodeLookupTask:public DHTAbstractTask, + public DHTMessageCallbackListener { +private: unsigned char _targetID[DHT_ID_LENGTH]; std::deque > _entries; @@ -73,6 +74,16 @@ protected: void updateBucket(); void sendMessageAndCheckFinish(); +protected: + const unsigned char* getTargetID() const + { + return _targetID; + } + + const std::deque >& getEntries() const + { + return _entries; + } public: DHTAbstractNodeLookupTask(const unsigned char* targetID); @@ -93,7 +104,8 @@ public: virtual void onFinish() {} - virtual SharedHandle createMessage(const SharedHandle& remoteNode) = 0; + virtual SharedHandle createMessage + (const SharedHandle& remoteNode) = 0; }; } // namespace aria2 diff --git a/src/DHTAbstractTask.h b/src/DHTAbstractTask.h index 06225e54..5154dd69 100644 --- a/src/DHTAbstractTask.h +++ b/src/DHTAbstractTask.h @@ -51,7 +51,7 @@ class DHTTaskQueue; class Logger; class DHTAbstractTask:public DHTTask { -protected: +private: bool _finished; Logger* _logger; @@ -65,19 +65,54 @@ protected: WeakHandle _factory; WeakHandle _taskQueue; +protected: + void setFinished(bool f) + { + _finished = f; + } + + Logger* getLogger() const + { + return _logger; + } public: DHTAbstractTask(); virtual bool finished(); + const WeakHandle& getRoutingTable() const + { + return _routingTable; + } + void setRoutingTable(const WeakHandle routingTable); + const WeakHandle& getMessageDispatcher() const + { + return _dispatcher; + } + void setMessageDispatcher(const WeakHandle dispatcher); + const WeakHandle& getMessageFactory() const + { + return _factory; + } + void setMessageFactory(const WeakHandle factory); + const WeakHandle& getTaskQueue() const + { + return _taskQueue; + } + void setTaskQueue(const WeakHandle taskQueue); + const SharedHandle& getLocalNode() const + { + return _localNode; + } + void setLocalNode(const SharedHandle& localNode); }; diff --git a/src/DHTBucketRefreshTask.cc b/src/DHTBucketRefreshTask.cc index 29baec72..3640297d 100644 --- a/src/DHTBucketRefreshTask.cc +++ b/src/DHTBucketRefreshTask.cc @@ -52,7 +52,7 @@ DHTBucketRefreshTask::~DHTBucketRefreshTask() {} void DHTBucketRefreshTask::startup() { std::vector > buckets; - _routingTable->getBuckets(buckets); + getRoutingTable()->getBuckets(buckets); for(std::vector >::iterator i = buckets.begin(), eoi = buckets.end(); i != eoi; ++i) { if(_forceRefresh || (*i)->needsRefresh()) { @@ -60,17 +60,18 @@ void DHTBucketRefreshTask::startup() unsigned char targetID[DHT_ID_LENGTH]; (*i)->getRandomNodeID(targetID); SharedHandle task(new DHTNodeLookupTask(targetID)); - task->setRoutingTable(_routingTable); - task->setMessageDispatcher(_dispatcher); - task->setMessageFactory(_factory); - task->setTaskQueue(_taskQueue); - task->setLocalNode(_localNode); + task->setRoutingTable(getRoutingTable()); + task->setMessageDispatcher(getMessageDispatcher()); + task->setMessageFactory(getMessageFactory()); + task->setTaskQueue(getTaskQueue()); + task->setLocalNode(getLocalNode()); - _logger->info("Dispating bucket refresh. targetID=%s", util::toHex(targetID, DHT_ID_LENGTH).c_str()); - _taskQueue->addPeriodicTask1(task); + getLogger()->info("Dispating bucket refresh. targetID=%s", + util::toHex(targetID, DHT_ID_LENGTH).c_str()); + getTaskQueue()->addPeriodicTask1(task); } } - _finished = true; + setFinished(true); } void DHTBucketRefreshTask::setForceRefresh(bool forceRefresh) diff --git a/src/DHTNodeLookupTask.cc b/src/DHTNodeLookupTask.cc index ae816c90..82cbb481 100644 --- a/src/DHTNodeLookupTask.cc +++ b/src/DHTNodeLookupTask.cc @@ -62,7 +62,7 @@ DHTNodeLookupTask::getNodesFromMessage SharedHandle DHTNodeLookupTask::createMessage(const SharedHandle& remoteNode) { - return _factory->createFindNodeMessage(remoteNode, _targetID); + return getMessageFactory()->createFindNodeMessage(remoteNode, getTargetID()); } } // namespace aria2 diff --git a/src/DHTNodeLookupTask.h b/src/DHTNodeLookupTask.h index e0f59edf..bf20a60a 100644 --- a/src/DHTNodeLookupTask.h +++ b/src/DHTNodeLookupTask.h @@ -46,7 +46,8 @@ public: virtual void getNodesFromMessage(std::vector >& nodes, const SharedHandle& message); - virtual SharedHandle createMessage(const SharedHandle& remoteNode); + virtual SharedHandle createMessage + (const SharedHandle& remoteNode); }; } // namespace aria2 diff --git a/src/DHTPeerLookupTask.cc b/src/DHTPeerLookupTask.cc index 946915a9..66408d57 100644 --- a/src/DHTPeerLookupTask.cc +++ b/src/DHTPeerLookupTask.cc @@ -66,23 +66,25 @@ DHTPeerLookupTask::getNodesFromMessage } } -void DHTPeerLookupTask::onReceivedInternal(const SharedHandle& message) +void DHTPeerLookupTask::onReceivedInternal +(const SharedHandle& message) { - SharedHandle m(dynamic_pointer_cast(message)); + SharedHandle m + (dynamic_pointer_cast(message)); if(m.isNull()) { return; } SharedHandle remoteNode = m->getRemoteNode(); - _tokenStorage[util::toHex(remoteNode->getID(), DHT_ID_LENGTH)] = m->getToken(); - + _tokenStorage[util::toHex(remoteNode->getID(), DHT_ID_LENGTH)] = + m->getToken(); _peerStorage->addPeer(m->getValues()); _peers.insert(_peers.end(), m->getValues().begin(), m->getValues().end()); - _logger->info("Received %u peers.", m->getValues().size()); + getLogger()->info("Received %u peers.", m->getValues().size()); } SharedHandle DHTPeerLookupTask::createMessage(const SharedHandle& remoteNode) { - return _factory->createGetPeersMessage(remoteNode, _targetID); + return getMessageFactory()->createGetPeersMessage(remoteNode, getTargetID()); } void DHTPeerLookupTask::onFinish() @@ -90,17 +92,17 @@ void DHTPeerLookupTask::onFinish() // send announce_peer message to K closest nodes size_t num = DHTBucket::K; for(std::deque >::const_iterator i = - _entries.begin(), eoi = _entries.end(); i != eoi && num > 0; ++i, - --num) { + getEntries().begin(), eoi = getEntries().end(); + i != eoi && num > 0; ++i, --num) { if((*i)->_used) { const SharedHandle& node = (*i)->_node; SharedHandle m = - _factory->createAnnouncePeerMessage + getMessageFactory()->createAnnouncePeerMessage (node, - _targetID, // this is infoHash + getTargetID(), // this is infoHash _btRuntime->getListenPort(), _tokenStorage[util::toHex(node->getID(), DHT_ID_LENGTH)]); - _dispatcher->addMessageToQueue(m); + getMessageDispatcher()->addMessageToQueue(m); } } } diff --git a/src/DHTPeerLookupTask.h b/src/DHTPeerLookupTask.h index c80c0e67..fe07b4bf 100644 --- a/src/DHTPeerLookupTask.h +++ b/src/DHTPeerLookupTask.h @@ -62,7 +62,8 @@ public: virtual void onReceivedInternal(const SharedHandle& message); - virtual SharedHandle createMessage(const SharedHandle& remoteNode); + virtual SharedHandle createMessage + (const SharedHandle& remoteNode); virtual void onFinish(); diff --git a/src/DHTPingTask.cc b/src/DHTPingTask.cc index c13e6227..cdae2948 100644 --- a/src/DHTPingTask.cc +++ b/src/DHTPingTask.cc @@ -42,7 +42,8 @@ namespace aria2 { -DHTPingTask::DHTPingTask(const SharedHandle& remoteNode, size_t numMaxRetry): +DHTPingTask::DHTPingTask +(const SharedHandle& remoteNode, size_t numMaxRetry): _remoteNode(remoteNode), _numMaxRetry(numMaxRetry), _numRetry(0), @@ -54,16 +55,18 @@ DHTPingTask::~DHTPingTask() {} void DHTPingTask::startup() { - SharedHandle m = _factory->createPingMessage(_remoteNode); + SharedHandle m = + getMessageFactory()->createPingMessage(_remoteNode); WeakHandle listener(this); - SharedHandle callback(new DHTMessageCallbackImpl(listener)); - _dispatcher->addMessageToQueue(m, _timeout, callback); + SharedHandle callback + (new DHTMessageCallbackImpl(listener)); + getMessageDispatcher()->addMessageToQueue(m, _timeout, callback); } void DHTPingTask::onReceived(const SharedHandle& message) { _pingSuccessful = true; - _finished = true; + setFinished(true); } void DHTPingTask::onTimeout(const SharedHandle& node) @@ -71,12 +74,14 @@ void DHTPingTask::onTimeout(const SharedHandle& node) ++_numRetry; if(_numRetry >= _numMaxRetry) { _pingSuccessful = false; - _finished = true; + setFinished(true); } else { - SharedHandle m = _factory->createPingMessage(_remoteNode); + SharedHandle m = + getMessageFactory()->createPingMessage(_remoteNode); WeakHandle listener(this); - SharedHandle callback(new DHTMessageCallbackImpl(listener)); - _dispatcher->addMessageToQueue(m, _timeout, callback); + SharedHandle callback + (new DHTMessageCallbackImpl(listener)); + getMessageDispatcher()->addMessageToQueue(m, _timeout, callback); } } diff --git a/src/DHTPingTask.h b/src/DHTPingTask.h index d08162d6..47ad9c2c 100644 --- a/src/DHTPingTask.h +++ b/src/DHTPingTask.h @@ -42,7 +42,7 @@ namespace aria2 { class DHTPingTask:public DHTAbstractTask, public DHTMessageCallbackListener { -protected: +private: SharedHandle _remoteNode; size_t _numMaxRetry; diff --git a/src/DHTReplaceNodeTask.cc b/src/DHTReplaceNodeTask.cc index d9c9512f..d9c68bc6 100644 --- a/src/DHTReplaceNodeTask.cc +++ b/src/DHTReplaceNodeTask.cc @@ -62,34 +62,37 @@ void DHTReplaceNodeTask::sendMessage() { SharedHandle questionableNode = _bucket->getLRUQuestionableNode(); if(questionableNode.isNull()) { - _finished = true; + setFinished(true); } else { - SharedHandle m = _factory->createPingMessage(questionableNode); + SharedHandle m = + getMessageFactory()->createPingMessage(questionableNode); WeakHandle listener(this); - SharedHandle callback(new DHTMessageCallbackImpl(listener)); - _dispatcher->addMessageToQueue(m, _timeout, callback); + SharedHandle callback + (new DHTMessageCallbackImpl(listener)); + getMessageDispatcher()->addMessageToQueue(m, _timeout, callback); } } void DHTReplaceNodeTask::onReceived(const SharedHandle& message) { - _logger->info("ReplaceNode: Ping reply received from %s.", - message->getRemoteNode()->toString().c_str()); - _finished = true; + getLogger()->info("ReplaceNode: Ping reply received from %s.", + message->getRemoteNode()->toString().c_str()); + setFinished(true); } void DHTReplaceNodeTask::onTimeout(const SharedHandle& node) { ++_numRetry; if(_numRetry >= MAX_RETRY) { - _logger->info("ReplaceNode: Ping failed %u times. Replace %s with %s.", - _numRetry, node->toString().c_str(), _newNode->toString().c_str()); + getLogger()->info("ReplaceNode: Ping failed %u times. Replace %s with %s.", + _numRetry, node->toString().c_str(), + _newNode->toString().c_str()); node->markBad(); _bucket->addNode(_newNode); - _finished = true; + setFinished(true); } else { - _logger->info("ReplaceNode: Ping reply timeout from %s. Try once more.", - node->toString().c_str()); + getLogger()->info("ReplaceNode: Ping reply timeout from %s. Try once more.", + node->toString().c_str()); sendMessage(); } } diff --git a/src/DHTReplaceNodeTask.h b/src/DHTReplaceNodeTask.h index f9a3a0ae..efa40f69 100644 --- a/src/DHTReplaceNodeTask.h +++ b/src/DHTReplaceNodeTask.h @@ -43,7 +43,8 @@ namespace aria2 { class DHTBucket; -class DHTReplaceNodeTask:public DHTAbstractTask, public DHTMessageCallbackListener { +class DHTReplaceNodeTask:public DHTAbstractTask, + public DHTMessageCallbackListener { private: SharedHandle _bucket;