本文整理汇总了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);
}
}
}
示例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;
}
示例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;
}
示例4:
void
NdnRtcNamespace::appendStringComponent(ndn::Name &prefix,
const std::string &stringComponent)
{
prefix.append((const unsigned char*)stringComponent.c_str(),
stringComponent.size());
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
}
示例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;
}
示例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;
}
示例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()));
}
}
}
示例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());
}
}
}
}