diff options
Diffstat (limited to 'src/DHTAbstractNodeLookupTask.cc')
| -rw-r--r-- | src/DHTAbstractNodeLookupTask.cc | 63 |
1 files changed, 34 insertions, 29 deletions
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<DHTMessage>& message) +void DHTAbstractNodeLookupTask::onReceived +(const SharedHandle<DHTMessage>& message) { --_inFlightMessage; onReceivedInternal(message); @@ -69,23 +71,25 @@ void DHTAbstractNodeLookupTask::onReceived(const SharedHandle<DHTMessage>& messa size_t count = 0; for(std::vector<SharedHandle<DHTNodeLookupEntry> >::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<DHTMessage>& messa void DHTAbstractNodeLookupTask::onTimeout(const SharedHandle<DHTNode>& 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<SharedHandle<DHTNodeLookupEntry> >::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<DHTMessage> m = createMessage((*i)->_node); WeakHandle<DHTMessageCallbackListener> listener(this); - SharedHandle<DHTMessageCallback> callback(new DHTMessageCallbackImpl(listener)); - _dispatcher->addMessageToQueue(m, callback); + SharedHandle<DHTMessageCallback> callback + (new DHTMessageCallbackImpl(listener)); + getMessageDispatcher()->addMessageToQueue(m, callback); } } } @@ -156,20 +161,20 @@ void DHTAbstractNodeLookupTask::updateBucket() void DHTAbstractNodeLookupTask::startup() { std::vector<SharedHandle<DHTNode> > 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); } } } |
