NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
key-locator.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013-2017 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
#ifndef NDN_KEY_LOCATOR_HPP
23
#define NDN_KEY_LOCATOR_HPP
24
25
#include "
encoding/encoding-buffer.hpp
"
26
#include "
name.hpp
"
27
28
namespace
ndn
{
29
30
class
KeyLocator
31
{
32
public
:
33
class
Error
:
public
tlv::Error
34
{
35
public
:
36
explicit
37
Error
(
const
std::string& what)
38
: tlv::
Error
(what)
39
{
40
}
41
};
42
43
enum
Type
{
46
KeyLocator_None
= 65535,
49
KeyLocator_Name
= 0,
52
KeyLocator_KeyDigest
= 1,
55
KeyLocator_Unknown
= 255
56
};
57
58
public
:
// constructors
61
KeyLocator
();
62
65
explicit
66
KeyLocator
(
const
Block
& wire);
67
71
KeyLocator
(
const
Name
&
name
);
72
73
public
:
// encode and decode
77
template
<encoding::Tag TAG>
78
size_t
79
wireEncode
(
EncodingImpl<TAG>
& encoder)
const
;
80
83
const
Block
&
84
wireEncode
()
const
;
85
90
void
91
wireDecode
(
const
Block
& wire);
92
93
public
:
// attributes
94
bool
95
empty
()
const
96
{
97
return
m_type ==
KeyLocator_None
;
98
}
99
100
Type
101
getType
()
const
102
{
103
return
m_type;
104
}
105
110
KeyLocator
&
111
clear
();
112
116
const
Name
&
117
getName
()
const
;
118
123
KeyLocator
&
124
setName
(
const
Name
&
name
);
125
129
const
Block
&
130
getKeyDigest
()
const
;
131
137
KeyLocator
&
138
setKeyDigest
(
const
Block
& keyDigest);
139
144
KeyLocator
&
145
setKeyDigest
(
const
ConstBufferPtr
& keyDigest);
146
147
public
:
// EqualityComparable concept
148
bool
149
operator==
(
const
KeyLocator
& other)
const
;
150
151
bool
152
operator!=
(
const
KeyLocator
& other)
const
153
{
154
return
!this->
operator==
(other);
155
}
156
157
private
:
158
Type
m_type;
159
Name
m_name;
160
Block
m_keyDigest;
161
162
mutable
Block
m_wire;
163
};
164
165
NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS
(
KeyLocator
);
166
167
std::ostream&
168
operator<<
(std::ostream& os,
const
KeyLocator
& keyLocator);
169
170
}
// namespace ndn
171
172
#endif // NDN_KEY_LOCATOR_HPP
ndn::KeyLocator::Type
Type
Definition:
key-locator.hpp:43
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndn::KeyLocator::getKeyDigest
const Block & getKeyDigest() const
get KeyDigest element
Definition:
key-locator.cpp:153
ndn::operator<<
std::ostream & operator<<(std::ostream &os, const Data &data)
Definition:
data.cpp:274
ndn::KeyLocator::setName
KeyLocator & setName(const Name &name)
set Name element
Definition:
key-locator.cpp:144
ndn::KeyLocator::getName
const Name & getName() const
get Name element
Definition:
key-locator.cpp:135
ndn::KeyLocator::wireDecode
void wireDecode(const Block &wire)
decode from wire encoding
Definition:
key-locator.cpp:96
ndn::KeyLocator::setKeyDigest
KeyLocator & setKeyDigest(const Block &keyDigest)
set KeyDigest element
Definition:
key-locator.cpp:162
ndn::Block
Represents a TLV element of NDN packet format.
Definition:
block.hpp:42
ndn::KeyLocator::KeyLocator
KeyLocator()
construct an empty KeyLocator
Definition:
key-locator.cpp:35
ndn::KeyLocator::KeyLocator_Name
indicates KeyLocator contains a Name
Definition:
key-locator.hpp:49
ndn::KeyLocator::wireEncode
const Block & wireEncode() const
Definition:
key-locator.cpp:80
ndn::KeyLocator::Error::Error
Error(const std::string &what)
Definition:
key-locator.hpp:37
ndn::KeyLocator::empty
bool empty() const
Definition:
key-locator.hpp:95
ndn::KeyLocator::KeyLocator_None
indicates KeyLocator is empty (internal use only)
Definition:
key-locator.hpp:46
ndn::KeyLocator::operator!=
bool operator!=(const KeyLocator &other) const
Definition:
key-locator.hpp:152
ndn::Name
Represents an absolute name.
Definition:
name.hpp:42
ndn::KeyLocator::Error
Definition:
key-locator.hpp:33
ndn::encoding::EncodingImpl
Definition:
encoding-buffer-fwd.hpp:36
ndn::KeyLocator::KeyLocator_Unknown
indicates KeyLocator contains an unknown element
Definition:
key-locator.hpp:55
ndn::NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS
NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(Exclude)
ndn::KeyLocator::clear
KeyLocator & clear()
clear KeyLocator
Definition:
key-locator.cpp:125
ndn::KeyLocator
Definition:
key-locator.hpp:30
ndn::KeyLocator::KeyLocator_KeyDigest
indicates KeyLocator contains a KeyDigest
Definition:
key-locator.hpp:52
ndn::KeyLocator::getType
Type getType() const
Definition:
key-locator.hpp:101
name.hpp
ndn::tlv::KeyLocator
Definition:
tlv.hpp:88
ndn::KeyLocator::operator==
bool operator==(const KeyLocator &other) const
Definition:
key-locator.cpp:184
ndn::name
Definition:
name-component.cpp:38
ndn::tlv::Error
represents an error in TLV encoding or decoding
Definition:
tlv.hpp:50
encoding-buffer.hpp
ndn::ConstBufferPtr
shared_ptr< const Buffer > ConstBufferPtr
Definition:
buffer.hpp:89
ndnSIM
ndn-cxx
src
key-locator.hpp
Generated on Sun Feb 25 2018 13:27:04 for ndnSIM by
1.8.14