NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
name-relation.cpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013-2020 Regents of the University of California.
4
*
5
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6
*
7
* ndn-cxx library is free software: you can redistribute it and/or modify it under the
8
* terms of the GNU Lesser General Public License as published by the Free Software
9
* Foundation, either version 3 of the License, or (at your option) any later version.
10
*
11
* ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14
*
15
* You should have received copies of the GNU General Public License and GNU Lesser
16
* General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17
* <http://www.gnu.org/licenses/>.
18
*
19
* See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20
*/
21
22
#include "
ndn-cxx/security/validator-config/name-relation.hpp
"
23
24
#include <boost/algorithm/string/predicate.hpp>
25
26
namespace
ndn
{
27
namespace
security
{
28
inline
namespace
v2 {
29
namespace
validator_config {
30
31
std::ostream&
32
operator<<
(std::ostream& os,
NameRelation
relation)
33
{
34
switch
(relation) {
35
case
NameRelation::EQUAL
:
36
return
os <<
"equal"
;
37
case
NameRelation::IS_PREFIX_OF
:
38
return
os <<
"is-prefix-of"
;
39
case
NameRelation::IS_STRICT_PREFIX_OF
:
40
return
os <<
"is-strict-prefix-of"
;
41
}
42
return
os;
43
}
44
45
bool
46
checkNameRelation
(
NameRelation
relation,
const
Name
& name1,
const
Name
& name2)
47
{
48
switch
(relation) {
49
case
NameRelation::EQUAL
:
50
return
name1 == name2;
51
case
NameRelation::IS_PREFIX_OF
:
52
return
name1.
isPrefixOf
(name2);
53
case
NameRelation::IS_STRICT_PREFIX_OF
:
54
return
name1.
isPrefixOf
(name2) && name1.
size
() < name2.
size
();
55
}
56
return
false
;
57
}
58
59
NameRelation
60
getNameRelationFromString
(
const
std::string& relationString)
61
{
62
if
(boost::iequals(relationString,
"equal"
)) {
63
return
NameRelation::EQUAL
;
64
}
65
else
if
(boost::iequals(relationString,
"is-prefix-of"
)) {
66
return
NameRelation::IS_PREFIX_OF
;
67
}
68
else
if
(boost::iequals(relationString,
"is-strict-prefix-of"
)) {
69
return
NameRelation::IS_STRICT_PREFIX_OF
;
70
}
71
else
{
72
NDN_THROW
(
Error
(
"Unsupported relation: "
+ relationString));
73
}
74
}
75
76
}
// namespace validator_config
77
}
// inline namespace v2
78
}
// namespace security
79
}
// namespace ndn
ndn::security::v2::validator_config::NameRelation
NameRelation
Definition:
name-relation.hpp:33
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndn::security::v2::validator_config::operator<<
std::ostream & operator<<(std::ostream &os, NameRelation relation)
Definition:
name-relation.cpp:32
ndn::Name::isPrefixOf
bool isPrefixOf(const Name &other) const
Check if this name is a prefix of another name.
Definition:
name.cpp:300
ndn::security::v2::validator_config::NameRelation::IS_PREFIX_OF
ndn::security::v2::validator_config::NameRelation::EQUAL
NDN_THROW
#define NDN_THROW(e)
Definition:
exception.hpp:61
ndn::security::v2::validator_config::checkNameRelation
bool checkNameRelation(NameRelation relation, const Name &name1, const Name &name2)
check whether name1 and name2 satisfies relation
Definition:
name-relation.cpp:46
ndn::security::v2::validator_config::NameRelation::IS_STRICT_PREFIX_OF
ndn::security::v2::validator_config::getNameRelationFromString
NameRelation getNameRelationFromString(const std::string &relationString)
convert relationString to NameRelation
Definition:
name-relation.cpp:60
name-relation.hpp
ndn::Name
Represents an absolute name.
Definition:
name.hpp:41
ndn::Name::size
size_t size() const
Returns the number of components.
Definition:
name.hpp:151
ndn::security
Definition:
dummy-keychain.cpp:28
ndn::security::v2::validator_config::Error
Definition:
common.hpp:38
ndnSIM
ndn-cxx
ndn-cxx
security
validator-config
name-relation.cpp
Generated on Fri May 6 2022 12:34:13 for ndnSIM by
1.8.13