当前位置: 首页>>代码示例>>C++>>正文


C++ ndn::Name类代码示例

本文整理汇总了C++中ndn::Name的典型用法代码示例。如果您正苦于以下问题:C++ Name类的具体用法?C++ Name怎么用?C++ Name使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Name类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getSegmentationNumbers

void NdnRtcNamespace::getSegmentationNumbers(const ndn::Name &prefix,
                                             PacketNumber &packetNumber,
                                             SegmentNumber &segmentNumber)
{
    int p = -1;
    packetNumber = -1;
    segmentNumber = -1;
    
    if (isDeltaFramesPrefix(prefix))
    {
        p = findComponent(prefix, NameComponentStreamFramesDelta);
    }
    else if (isKeyFramePrefix(prefix))
    {
        p = findComponent(prefix, NameComponentStreamFramesKey);
    }
    
    if (p > 0)
    {
        if (p+1 < prefix.size())
        {
            Name::Component packetNoComp = prefix.get(p+1);
            packetNumber = NdnRtcUtils::frameNumber(packetNoComp);
        }
        
        if (p+3 < prefix.size())
        {
            Name::Component segmentNoComp = prefix.get(p+3);
            segmentNumber = NdnRtcUtils::segmentNumber(segmentNoComp);
        }
    }
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:32,代码来源:ndnrtc-namespace.cpp

示例2: trimSegmentNumber

int NdnRtcNamespace::trimSegmentNumber(const ndn::Name &prefix,
                                        Name &trimmedPrefix)
{
    trimmedPrefix = prefix;
    
    if (getSegmentNumber(prefix) == -1)
        return -1;
    
    int p = -1;
    
    if (isDeltaFramesPrefix(prefix))
    {
        p = findComponent(prefix, NameComponentStreamFramesDelta);
    }
    else if (isKeyFramePrefix(prefix))
    {
        p = findComponent(prefix, NameComponentStreamFramesKey);
    }
    
    if (p > 0 &&
        p+3 < prefix.size())
    {
        p += 3;
        trimmedPrefix = prefix.getSubName(0, p);
    }
    
    return p;
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:28,代码来源:ndnrtc-namespace.cpp

示例3: publishManifest

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;
}
开发者ID:cawka,项目名称:ndnrtc,代码行数:10,代码来源:video-stream-impl.cpp

示例4:

void
NdnRtcNamespace::appendStringComponent(ndn::Name &prefix,
                                       const std::string &stringComponent)
{
    prefix.append((const unsigned char*)stringComponent.c_str(),
                   stringComponent.size());
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:7,代码来源:ndnrtc-namespace.cpp

示例5: trimDataTypeComponent

int NdnRtcNamespace::trimDataTypeComponent(const ndn::Name &prefix,
                                           Name &trimmedPrefix)
{
    trimmedPrefix = prefix;
    
    if (getPacketNumber(prefix) == -1)
        return -1;
    
    int p = -1;
    
    if (isParitySegmentPrefix(prefix))
    {
        p = findComponent(prefix, NameComponentFrameSegmentParity);
    }
    else
    {
        p = findComponent(prefix, NameComponentFrameSegmentData);
    }
    
    if (p > 0)
    {
        trimmedPrefix = prefix.getSubName(0, p);
    }
    
    return p;
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:26,代码来源:ndnrtc-namespace.cpp

示例6: extractMeta

//******************************************************************************
bool extractMeta(const ndn::Name& name, NamespaceInfo& info)
{
    // example: name == %FD%05/%00%00
    if (name.size() >= 1 && name[0].isVersion())
    {
        info.metaVersion_ = name[0].toVersion();
        if (name.size() >= 2)
        {
            info.segNo_ = name[1].toSegment();
            info.hasSegNo_ = true;
        }
        else
            info.hasSegNo_ = false;
        return true;
    }

    return false;
}
开发者ID:remap,项目名称:ndnrtc,代码行数:19,代码来源:name-components.cpp

示例7: scopedLock

int MediaThread::lookupPrefixInPit(const ndn::Name &prefix,
                                   SegmentData::SegmentMetaInfo &metaInfo)
{
    lock_guard<mutex> scopedLock(pitMutex_);
    
    std::map<Name, PitEntry>::iterator pitHit = pit_.find(prefix);
    
    // check for rightmost prefixes
    if (pitHit == pit_.end())
    {
        ndn::Name testPrefix(prefix);
        
        NdnRtcNamespace::trimPacketNumber(prefix, testPrefix);
        pitHit = pit_.find(testPrefix);
    }
    
    if (pitHit != pit_.end())
    {
        int64_t currentTime = NdnRtcUtils::millisecondTimestamp();
        
        shared_ptr<const Interest> pendingInterest = pitHit->second.interest_;
        
        metaInfo.interestNonce_ =
        NdnRtcUtils::blobToNonce(pendingInterest->getNonce());
        metaInfo.interestArrivalMs_ = pitHit->second.arrivalTimestamp_;
        metaInfo.generationDelayMs_ = (uint32_t)(currentTime - pitHit->second.arrivalTimestamp_);
        
        pit_.erase(pitHit);
        
        LogTraceC
        << "pit hit [" << prefix.toUri() << "] -> ["
        << pendingInterest->getName().toUri() << " (size "
        << pit_.size()  << ")]" << std::endl;
        
        return 1;
    }
    else
    {
        LogTraceC << "no pit entry " << prefix.toUri() << std::endl;
    }
    
    return 0;
}
开发者ID:mixxx911,项目名称:ndnrtc,代码行数:43,代码来源:media-thread.cpp

示例8: isDeltaFramesPrefix

bool NdnRtcNamespace::isDeltaFramesPrefix(const ndn::Name &prefix)
{
    std::string prefixString = prefix.toUri();
    
    int n1 = prefixString.find(NameComponentUserStreams);
    int n2 = prefixString.find(NameComponentStreamFrames);
    int n3 = prefixString.find(NameComponentStreamFramesDelta);
  
    return !(n1 == n2 == n3) &&
            n1 >= 0 && n1 < n2 && n2 < n3;
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:11,代码来源:ndnrtc-namespace.cpp

示例9: findComponent

int NdnRtcNamespace::findComponent(const ndn::Name &prefix,
                                     const std::string &componentString)
{
    int pos = -1;
    int nComponents = prefix.size();
    Name::Component searchComponent((const uint8_t*)componentString.c_str(),
                                    componentString.size());
    
    for (int i = nComponents; i--; i >= 0)
    {
        Name::Component c = prefix.get(i);
        
        if (c == searchComponent)
        {
            pos = i;
            break;
        }
    }
    
    return pos;
}
开发者ID:monster-xie,项目名称:ndnrtc,代码行数:21,代码来源:ndnrtc-namespace.cpp

示例10: scopedLock

unsigned int 
Buffer::getSlotsNum(const ndn::Name& prefix, int stateMask) const
{
    boost::lock_guard<boost::recursive_mutex> scopedLock(mutex_);
    unsigned int nSlots = 0;

    for (auto it:activeSlots_)
        if (prefix.match(it.first) && it.second->getState()&stateMask)
            nSlots++;

    return nSlots;
}
开发者ID:remap,项目名称:ndnrtc,代码行数:12,代码来源:frame-buffer.cpp

示例11: chkString

void
SyncLogicHandler::processUpdateFromSync(const ndn::Name& updateName,
                                        uint64_t seqNo,  Nlsr& pnlsr)
{
  string chkString("LSA");
  int32_t lasPosition = util::getNameComponentPosition(updateName, chkString);
  if (lasPosition >= 0) {
    ndn::Name routerName = updateName.getSubName(lasPosition + 1);
    processRoutingUpdateFromSync(routerName, seqNo, pnlsr);
    return;
  }
}
开发者ID:felixrabe,项目名称:NLSR,代码行数:12,代码来源:sync-logic-handler.cpp

示例12: getNameComponentPosition

/**
 * @brief search a name component in ndn::Name and return the position of the component
 * @param name         where to search the searchString
 * @param searchString the string to search in name
 * @return -1 if searchString not found else return the position
 * starting from 0
 */
inline static int32_t
getNameComponentPosition(const ndn::Name& name, const std::string& searchString)
{
  ndn::name::Component component(searchString);
  size_t nameSize = name.size();
  for (uint32_t i = 0; i < nameSize; i++) {
    if (component == name[i]) {
      return (int32_t)i;
    }
  }
  return -1;
}
开发者ID:Antrek,项目名称:NDNProject,代码行数:19,代码来源:name-helper.hpp

示例13: ndnrtcSubName

bool
NameComponents::extractInfo(const ndn::Name& name, NamespaceInfo& info)
{
    bool goodName = false;
    static Name ndnrtcSubName(NameComponents::NameComponentApp);
    Name subName;
    int i;

    for (i = name.size()-2; i > 0 && !goodName; --i)
    {
        subName = name.getSubName(i);
        goodName = ndnrtcSubName.match(subName);
    }

    if (goodName)
    {
        info.basePrefix_ = name.getSubName(0, i+1);

        if ((goodName = subName[1].isVersion()))
        {
            info.apiVersion_ = subName[1].toVersion();

            if (subName.size() > 2 &&
                (goodName = (subName[2] == Name::Component(NameComponents::NameComponentAudio) ||
                            subName[2] == Name::Component(NameComponents::NameComponentVideo)))  )
            {
                info.streamType_ = (subName[2] == Name::Component(NameComponents::NameComponentAudio) ? 
                                MediaStreamParams::MediaStreamType::MediaStreamTypeAudio : 
                                MediaStreamParams::MediaStreamType::MediaStreamTypeVideo );

                if (info.streamType_ == MediaStreamParams::MediaStreamType::MediaStreamTypeAudio)
                    return extractAudioStreamInfo(subName.getSubName(3), info);
                else
                    return extractVideoStreamInfo(subName.getSubName(3), info);
            }
        }
    }

    return false;
}
开发者ID:remap,项目名称:ndnrtc,代码行数:40,代码来源:name-components.cpp

示例14: interestName

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()));
    }
  }
}
开发者ID:signorello,项目名称:NLSR,代码行数:40,代码来源:hello-protocol.cpp

示例15: _LOG_DEBUG

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());
      }
    }
  }
}
开发者ID:signorello,项目名称:NLSR,代码行数:40,代码来源:hello-protocol.cpp


注:本文中的ndn::Name类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。