void HelloProtocol::onContentValidated(const ndn::shared_ptr<const ndn::Data>& data) { /* data name: /<neighbor>/NLSR/INFO/<router>/<version> */ ndn::Name dataName = data->getName(); _LOG_DEBUG("Data received for name: " << dataName); if (dataName.get(-3).toUri() == INFO_COMPONENT) { ndn::Name neighbor = dataName.getPrefix(-4); int oldStatus = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); m_nlsr.getAdjacencyList().setStatusOfNeighbor(neighbor, 1); m_nlsr.getAdjacencyList().setTimedOutInterestCount(neighbor, 0); int newStatus = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); _LOG_DEBUG("Neighbor : " << neighbor); _LOG_DEBUG("Old Status: " << oldStatus << " New Status: " << newStatus); // change in Adjacency list if ((oldStatus - newStatus) != 0) { m_nlsr.incrementAdjBuildCount(); // Need to schedule event for Adjacency LSA building 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, ndn::ref(m_nlsr.getLsdb()))); } } } }
// A validator is called on the incoming data, and if the data // passes the validator's description/definitions, this function is // called. Set the neighbor's status to active and refresh its // LSA. If there was a change in status, we schedule an adjacency // LSA build. void HelloProtocol::onContentValidated(const ndn::shared_ptr<const ndn::Data>& data) { /* data name: /<neighbor>/NLSR/INFO/<router>/<version> */ ndn::Name dataName = data->getName(); _LOG_DEBUG("Data validation successful for INFO(name): " << dataName); if (dataName.get(-3).toUri() == INFO_COMPONENT) { ndn::Name neighbor = dataName.getPrefix(-4); Adjacent::Status oldStatus = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); m_nlsr.getAdjacencyList().setStatusOfNeighbor(neighbor, Adjacent::STATUS_ACTIVE); m_nlsr.getAdjacencyList().setTimedOutInterestCount(neighbor, 0); Adjacent::Status newStatus = m_nlsr.getAdjacencyList().getStatusOfNeighbor(neighbor); _LOG_DEBUG("Neighbor : " << neighbor); _LOG_DEBUG("Old Status: " << oldStatus << " New Status: " << newStatus); // change in Adjacency list if ((oldStatus - newStatus) != 0) { if (m_nlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_ON) { m_nlsr.getRoutingTable().scheduleRoutingTableCalculation(m_nlsr); } else { m_nlsr.getLsdb().scheduleAdjLsaBuild(); } } } }