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 NdnRtcNamespace::appendStringComponent(ndn::Name &prefix, const std::string &stringComponent) { prefix.append((const unsigned char*)stringComponent.c_str(), stringComponent.size()); }
void HelloProtocol::processInterest(const ndn::Name& name, const ndn::Interest& interest) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ const ndn::Name interestName = interest.getName(); _LOG_DEBUG("Interest Received for Name: " << interestName); if (interestName.get(-2).toUri() != INFO_COMPONENT) { return; } ndn::Name neighbor; neighbor.wireDecode(interestName.get(-1).blockFromValue()); _LOG_DEBUG("Neighbor: " << neighbor); if (m_nlsr.getAdjacencyList().isNeighbor(neighbor)) { ndn::shared_ptr<ndn::Data> data = ndn::make_shared<ndn::Data>(); data->setName(ndn::Name(interest.getName()).appendVersion()); data->setFreshnessPeriod(ndn::time::seconds(10)); // 10 sec data->setContent(reinterpret_cast<const uint8_t*>(INFO_COMPONENT.c_str()), INFO_COMPONENT.size()); m_nlsr.getKeyChain().sign(*data, m_nlsr.getDefaultCertName()); _LOG_DEBUG("Sending out data for name: " << interest.getName()); m_nlsr.getNlsrFace().put(*data); Adjacent *adjacent = m_nlsr.getAdjacencyList().findAdjacent(neighbor); // If this neighbor was previously inactive, send our own hello interest, too if (adjacent->getStatus() == Adjacent::STATUS_INACTIVE) { // We can only do that if the neighbor currently has a face. if(adjacent->getFaceId() != 0){ /* 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()); } // If the originator of the Interest currently lacks a Face, we // need to give it one. else { registerPrefixes(adjacent->getName(), adjacent->getConnectingFaceUri(), adjacent->getLinkCost(), ndn::time::milliseconds::max()); } } } }
void VideoStreamImpl::publishManifest(ndn::Name dataName, PublishedDataPtrVector &segments) { Manifest m(segments); dataName.append(NameComponents::NameComponentManifest).appendVersion(0); PublishedDataPtrVector ss = metadataPublisher_->publish(dataName, m); LogDebugC << (busyPublishing_ == 1 ? "⤷" : "↓") << " published manifest ☆ (" << dataName.getSubName(-5, 5) << ")x" << ss.size() << std::endl; }
void HelloProtocol::processInterest(const ndn::Name& name, const ndn::Interest& interest) { /* interest name: /<neighbor>/NLSR/INFO/<router> */ const ndn::Name interestName = interest.getName(); _LOG_DEBUG("Interest Received for Name: " << interestName); if (interestName.get(-2).toUri() != INFO_COMPONENT) { return; } ndn::Name neighbor; neighbor.wireDecode(interestName.get(-1).blockFromValue()); _LOG_DEBUG("Neighbor: " << neighbor); if (m_nlsr.getAdjacencyList().isNeighbor(neighbor)) { ndn::shared_ptr<ndn::Data> data = ndn::make_shared<ndn::Data>(); data->setName(ndn::Name(interest.getName()).appendVersion()); data->setFreshnessPeriod(ndn::time::seconds(10)); // 10 sec data->setContent(reinterpret_cast<const uint8_t*>(INFO_COMPONENT.c_str()), INFO_COMPONENT.size()); m_nlsr.getKeyChain().sign(*data, m_nlsr.getDefaultCertName()); _LOG_DEBUG("Sending out data for name: " << interest.getName()); m_nlsr.getNlsrFace().put(*data); Adjacent *adjacent = m_nlsr.getAdjacencyList().findAdjacent(neighbor); if (adjacent->getStatus() == 0) { if(adjacent->getFaceId() != 0){ /* 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 { registerPrefixes(adjacent->getName(), adjacent->getConnectingFaceUri(), adjacent->getLinkCost(), ndn::time::milliseconds::max()); } } } }
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())); } } }