void HelloProtocol::processInterestTimedOut(const ndn::Interest& interest) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ const ndn::Name interestName(interest.getName()); _LOG_DEBUG("Interest timed out for Name: " << interestName); if (interestName.get(-2).toUri() != INFO_COMPONENT) { return; } ndn::Name neighbor = interestName.getPrefix(-3); _LOG_DEBUG("Neighbor: " << neighbor); m_nlsr.getAdjacencyList().incrementTimedOutInterestCount(neighbor); Adjacent::Status status = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); uint32_t infoIntTimedOutCount = m_nlsr.getAdjacencyList().getTimedOutInterestCount(neighbor); _LOG_DEBUG("Status: " << status); _LOG_DEBUG("Info Interest Timed out: " << infoIntTimedOutCount); if ((infoIntTimedOutCount < m_nlsr.getConfParameter().getInterestRetryNumber())) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ ndn::Name interestName(neighbor); interestName.append(NLSR_COMPONENT); interestName.append(INFO_COMPONENT); interestName.append(m_nlsr.getConfParameter().getRouterPrefix().wireEncode()); expressInterest(interestName, m_nlsr.getConfParameter().getInterestResendTime()); } else if ((status == Adjacent::STATUS_ACTIVE) && (infoIntTimedOutCount == m_nlsr.getConfParameter().getInterestRetryNumber())) { m_nlsr.getAdjacencyList().setStatusOfNeighbor(neighbor, Adjacent::STATUS_INACTIVE); m_nlsr.getLsdb().scheduleAdjLsaBuild(); } }
void HelloProtocol::processInterestTimedOut(const ndn::Interest& interest) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ const ndn::Name interestName(interest.getName()); _LOG_DEBUG("Interest timed out for Name: " << interestName); if (interestName.get(-2).toUri() != INFO_COMPONENT) { return; } ndn::Name neighbor = interestName.getPrefix(-3); _LOG_DEBUG("Neighbor: " << neighbor); m_nlsr.getAdjacencyList().incrementTimedOutInterestCount(neighbor); int status = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); uint32_t infoIntTimedOutCount = m_nlsr.getAdjacencyList().getTimedOutInterestCount(neighbor); _LOG_DEBUG("Status: " << status); _LOG_DEBUG("Info Interest Timed out: " << infoIntTimedOutCount); if ((infoIntTimedOutCount < m_nlsr.getConfParameter().getInterestRetryNumber())) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ ndn::Name interestName(neighbor); interestName.append(NLSR_COMPONENT); interestName.append(INFO_COMPONENT); interestName.append(m_nlsr.getConfParameter().getRouterPrefix().wireEncode()); expressInterest(interestName, m_nlsr.getConfParameter().getInterestResendTime()); } else if ((status == 1) && (infoIntTimedOutCount == m_nlsr.getConfParameter().getInterestRetryNumber())) { m_nlsr.getAdjacencyList().setStatusOfNeighbor(neighbor, 0); m_nlsr.incrementAdjBuildCount(); if (m_nlsr.getIsBuildAdjLsaSheduled() == false) { _LOG_DEBUG("Scheduling scheduledAdjLsaBuild"); m_nlsr.setIsBuildAdjLsaSheduled(true); // event here m_nlsr.getScheduler().scheduleEvent(ndn::time::seconds(5), ndn::bind(&Lsdb::scheduledAdjLsaBuild, &m_nlsr.getLsdb())); } } }