NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
nfd-constants.cpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013-2018 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/encoding/nfd-constants.hpp
"
23
#include "
ndn-cxx/util/string-helper.hpp
"
24
25
#include <boost/algorithm/string.hpp>
26
#include <boost/lexical_cast.hpp>
27
#include <istream>
28
#include <map>
29
#include <ostream>
30
31
namespace
ndn
{
32
namespace
nfd
{
33
34
std::ostream&
35
operator<<
(std::ostream& os,
FaceScope
faceScope)
36
{
37
switch
(faceScope) {
38
case
FACE_SCOPE_NONE
:
39
return
os <<
"none"
;
40
case
FACE_SCOPE_NON_LOCAL
:
41
return
os <<
"non-local"
;
42
case
FACE_SCOPE_LOCAL
:
43
return
os <<
"local"
;
44
}
45
return
os << static_cast<unsigned>(faceScope);
46
}
47
48
std::ostream&
49
operator<<
(std::ostream& os,
FacePersistency
facePersistency)
50
{
51
switch
(facePersistency) {
52
case
FACE_PERSISTENCY_NONE
:
53
return
os <<
"none"
;
54
case
FACE_PERSISTENCY_PERSISTENT
:
55
return
os <<
"persistent"
;
56
case
FACE_PERSISTENCY_ON_DEMAND
:
57
return
os <<
"on-demand"
;
58
case
FACE_PERSISTENCY_PERMANENT
:
59
return
os <<
"permanent"
;
60
}
61
return
os << static_cast<unsigned>(facePersistency);
62
}
63
64
std::ostream&
65
operator<<
(std::ostream& os,
LinkType
linkType)
66
{
67
switch
(linkType) {
68
case
LINK_TYPE_NONE
:
69
return
os <<
"none"
;
70
case
LINK_TYPE_POINT_TO_POINT
:
71
return
os <<
"point-to-point"
;
72
case
LINK_TYPE_MULTI_ACCESS
:
73
return
os <<
"multi-access"
;
74
case
LINK_TYPE_AD_HOC
:
75
return
os <<
"adhoc"
;
76
}
77
return
os << static_cast<unsigned>(linkType);
78
}
79
80
std::ostream&
81
operator<<
(std::ostream& os,
FaceEventKind
faceEventKind)
82
{
83
switch
(faceEventKind) {
84
case
FACE_EVENT_NONE
:
85
return
os <<
"none"
;
86
case
FACE_EVENT_CREATED
:
87
return
os <<
"created"
;
88
case
FACE_EVENT_DESTROYED
:
89
return
os <<
"destroyed"
;
90
case
FACE_EVENT_UP
:
91
return
os <<
"up"
;
92
case
FACE_EVENT_DOWN
:
93
return
os <<
"down"
;
94
}
95
return
os << static_cast<unsigned>(faceEventKind);
96
}
97
98
std::istream&
99
operator>>
(std::istream& is,
RouteOrigin
& routeOrigin)
100
{
101
using
boost::algorithm::iequals;
102
103
std::string s;
104
is >> s;
105
106
if
(iequals(s,
"none"
))
107
routeOrigin =
ROUTE_ORIGIN_NONE
;
108
else
if
(iequals(s,
"app"
))
109
routeOrigin =
ROUTE_ORIGIN_APP
;
110
else
if
(iequals(s,
"autoreg"
))
111
routeOrigin =
ROUTE_ORIGIN_AUTOREG
;
112
else
if
(iequals(s,
"client"
))
113
routeOrigin =
ROUTE_ORIGIN_CLIENT
;
114
else
if
(iequals(s,
"autoconf"
))
115
routeOrigin =
ROUTE_ORIGIN_AUTOCONF
;
116
else
if
(iequals(s,
"nlsr"
))
117
routeOrigin =
ROUTE_ORIGIN_NLSR
;
118
else
if
(iequals(s,
"prefixann"
))
119
routeOrigin =
ROUTE_ORIGIN_PREFIXANN
;
120
else
if
(iequals(s,
"static"
))
121
routeOrigin =
ROUTE_ORIGIN_STATIC
;
122
else
{
123
// To reject negative numbers, we parse as a wider signed type, and compare with the range.
124
static_assert(std::numeric_limits<std::underlying_type_t<RouteOrigin>>::max() <=
125
std::numeric_limits<int>::max(),
""
);
126
127
int
v = -1;
128
try
{
129
v = boost::lexical_cast<int>(s);
130
}
131
catch
(
const
boost::bad_lexical_cast&) {
132
}
133
134
if
(v >= std::numeric_limits<std::underlying_type_t<RouteOrigin>>::min() &&
135
v <= std::numeric_limits<std::underlying_type_t<RouteOrigin>>::max()) {
136
routeOrigin = static_cast<RouteOrigin>(v);
137
}
138
else
{
139
routeOrigin =
ROUTE_ORIGIN_NONE
;
140
is.setstate(std::ios::failbit);
141
}
142
}
143
144
return
is;
145
}
146
147
std::ostream&
148
operator<<
(std::ostream& os,
RouteOrigin
routeOrigin)
149
{
150
switch
(routeOrigin) {
151
case
ROUTE_ORIGIN_NONE
:
152
return
os <<
"none"
;
153
case
ROUTE_ORIGIN_APP
:
154
return
os <<
"app"
;
155
case
ROUTE_ORIGIN_AUTOREG
:
156
return
os <<
"autoreg"
;
157
case
ROUTE_ORIGIN_CLIENT
:
158
return
os <<
"client"
;
159
case
ROUTE_ORIGIN_AUTOCONF
:
160
return
os <<
"autoconf"
;
161
case
ROUTE_ORIGIN_NLSR
:
162
return
os <<
"nlsr"
;
163
case
ROUTE_ORIGIN_PREFIXANN
:
164
return
os <<
"prefixann"
;
165
case
ROUTE_ORIGIN_STATIC
:
166
return
os <<
"static"
;
167
}
168
return
os << static_cast<unsigned>(routeOrigin);
169
}
170
171
std::ostream&
172
operator<<
(std::ostream& os,
RouteFlags
routeFlags)
173
{
174
if
(routeFlags ==
ROUTE_FLAGS_NONE
) {
175
return
os <<
"none"
;
176
}
177
178
static
const
std::map<RouteFlags, std::string> knownBits = {
179
{
ROUTE_FLAG_CHILD_INHERIT
,
"child-inherit"
},
180
{
ROUTE_FLAG_CAPTURE
,
"capture"
}
181
};
182
183
auto
join =
make_ostream_joiner
(os,
'|'
);
184
for
(
const
auto
& pair : knownBits) {
185
RouteFlags
bit =
ROUTE_FLAGS_NONE
;
186
std::string token;
187
std::tie(bit, token) = pair;
188
189
if
((routeFlags & bit) != 0) {
190
join = token;
191
routeFlags = static_cast<RouteFlags>(routeFlags & ~bit);
192
}
193
}
194
195
if
(routeFlags !=
ROUTE_FLAGS_NONE
) {
196
join =
AsHex
{routeFlags};
197
}
198
199
return
os;
200
}
201
202
}
// namespace nfd
203
}
// namespace ndn
ndn::nfd::ROUTE_FLAG_CHILD_INHERIT
Definition:
nfd-constants.hpp:125
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndn::nfd::operator>>
std::istream & operator>>(std::istream &is, RouteOrigin &routeOrigin)
extract RouteOrigin from stream
Definition:
nfd-constants.cpp:99
ndn::nfd::LinkType
LinkType
Definition:
nfd-constants.hpp:57
ndn::nfd::FACE_PERSISTENCY_PERMANENT
face is permanent
Definition:
nfd-constants.hpp:49
ndn::nfd::ROUTE_ORIGIN_NLSR
Definition:
nfd-constants.hpp:105
ndn::nfd::LINK_TYPE_NONE
Definition:
nfd-constants.hpp:58
ndn::nfd::FACE_SCOPE_NON_LOCAL
face is non-local
Definition:
nfd-constants.hpp:36
ndn::nfd::LINK_TYPE_AD_HOC
link is ad hoc
Definition:
nfd-constants.hpp:61
ndn::nfd::ROUTE_ORIGIN_APP
Definition:
nfd-constants.hpp:101
ndn::nfd::LINK_TYPE_POINT_TO_POINT
link is point-to-point
Definition:
nfd-constants.hpp:59
ndn::nfd::ROUTE_ORIGIN_STATIC
Definition:
nfd-constants.hpp:107
string-helper.hpp
ndn::nfd::FACE_EVENT_DESTROYED
face was destroyed
Definition:
nfd-constants.hpp:80
ndn::AsHex
Helper class to convert a number to hexadecimal format, for use with stream insertion operators.
Definition:
string-helper.hpp:52
ndn::nfd::LINK_TYPE_MULTI_ACCESS
link is multi-access
Definition:
nfd-constants.hpp:60
ndn::nfd::ROUTE_FLAGS_NONE
Definition:
nfd-constants.hpp:124
nfd-constants.hpp
ndn::nfd::ROUTE_ORIGIN_AUTOREG
Definition:
nfd-constants.hpp:102
ndn::nfd::FacePersistency
FacePersistency
Definition:
nfd-constants.hpp:45
ndn::nfd::FaceScope
FaceScope
Definition:
nfd-constants.hpp:34
ndn::nfd::FACE_PERSISTENCY_NONE
Definition:
nfd-constants.hpp:46
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:40
ndn::nfd::ROUTE_FLAG_CAPTURE
Definition:
nfd-constants.hpp:126
ndn::nfd::FACE_SCOPE_NONE
Definition:
nfd-constants.hpp:35
ndn::nfd::FACE_EVENT_UP
face went UP (from DOWN state)
Definition:
nfd-constants.hpp:81
ndn::nfd::ROUTE_ORIGIN_CLIENT
Definition:
nfd-constants.hpp:103
ndn::nfd::FaceEventKind
FaceEventKind
Definition:
nfd-constants.hpp:77
ndn::make_ostream_joiner
ostream_joiner< std::decay_t< DelimT >, CharT, Traits > make_ostream_joiner(std::basic_ostream< CharT, Traits > &os, DelimT &&delimiter)
Definition:
backports-ostream-joiner.hpp:117
ndn::nfd::operator<<
std::ostream & operator<<(std::ostream &os, FaceScope faceScope)
Definition:
nfd-constants.cpp:35
ndn::nfd::FACE_EVENT_NONE
Definition:
nfd-constants.hpp:78
ndn::nfd::FACE_PERSISTENCY_ON_DEMAND
face is on-demand
Definition:
nfd-constants.hpp:48
ndn::nfd::FACE_SCOPE_LOCAL
face is local
Definition:
nfd-constants.hpp:37
ndn::nfd::ROUTE_ORIGIN_AUTOCONF
Definition:
nfd-constants.hpp:104
ndn::nfd::FACE_EVENT_CREATED
face was created
Definition:
nfd-constants.hpp:79
ndn::nfd::RouteOrigin
RouteOrigin
Definition:
nfd-constants.hpp:99
ndn::nfd::RouteFlags
RouteFlags
Definition:
nfd-constants.hpp:123
ndn::nfd::ROUTE_ORIGIN_PREFIXANN
Definition:
nfd-constants.hpp:106
ndn::nfd::ROUTE_ORIGIN_NONE
Definition:
nfd-constants.hpp:100
ndn::nfd::FACE_PERSISTENCY_PERSISTENT
face is persistent
Definition:
nfd-constants.hpp:47
ndn::nfd::FACE_EVENT_DOWN
face went DOWN (from UP state)
Definition:
nfd-constants.hpp:82
ndnSIM
ndn-cxx
ndn-cxx
encoding
nfd-constants.cpp
Generated on Sun Feb 24 2019 22:16:05 for ndnSIM by
1.8.15