NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::io Namespace Reference

Namespaces

 detail
 

Classes

class  Error
 

Enumerations

enum  IoEncoding { NO_ENCODING, BASE64, HEX }
 Indicates how a file or stream of bytes is encoded. More...
 

Functions

shared_ptr< BufferloadBuffer (std::istream &is, IoEncoding encoding=BASE64)
 Reads bytes from a stream until EOF. More...
 
void saveBuffer (span< const uint8_t > buf, std::ostream &os, IoEncoding encoding=BASE64)
 Writes a sequence of bytes to a stream. More...
 
template<typename T >
loadTlv (std::istream &is, IoEncoding encoding=BASE64)
 Reads a TLV element of type T from a stream. More...
 
template<typename T >
shared_ptr< T > load (std::istream &is, IoEncoding encoding=BASE64)
 Reads a TLV element from a stream. More...
 
template<typename T >
shared_ptr< T > load (const std::string &filename, IoEncoding encoding=BASE64)
 Reads a TLV element from a file. More...
 
template<typename T >
void save (const T &obj, std::ostream &os, IoEncoding encoding=BASE64)
 Writes a TLV element to a stream. More...
 
template<typename T >
void save (const T &obj, const std::string &filename, IoEncoding encoding=BASE64)
 Writes a TLV element to a file. More...
 

Enumeration Type Documentation

◆ IoEncoding

Indicates how a file or stream of bytes is encoded.

Enumerator
NO_ENCODING 

Raw binary, without encoding.

BASE64 

Base64 encoding.

save() inserts a newline after every 64 characters, load() can accept base64 text with or without newlines.

HEX 

Hexadecimal encoding.

save() uses uppercase letters A-F, load() can accept mixed-case.

Definition at line 42 of file io.hpp.

Function Documentation

◆ loadBuffer()

shared_ptr< Buffer > ndn::io::loadBuffer ( std::istream &  is,
IoEncoding  encoding = BASE64 
)

Reads bytes from a stream until EOF.

Returns
a Buffer containing the bytes read from the stream
Exceptions
ErrorAn error occurred, e.g., malformed input.
std::invalid_argumentThe specified encoding is not supported.

Definition at line 37 of file io.cpp.

References BASE64, ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), HEX, ndn::security::transform::hexDecode(), NDN_THROW, NDN_THROW_NESTED, NO_ENCODING, ndn::security::transform::streamSink(), ndn::security::transform::stripSpace(), and ndn::to_string().

Referenced by ndn::io::detail::checkNestedError(), load(), and loadTlv().

◆ saveBuffer()

void ndn::io::saveBuffer ( span< const uint8_t >  buf,
std::ostream &  os,
IoEncoding  encoding = BASE64 
)

Writes a sequence of bytes to a stream.

Exceptions
Errorerror during saving
std::invalid_argumentthe specified encoding is not supported

Definition at line 63 of file io.cpp.

References BASE64, ndn::security::transform::base64Encode(), HEX, ndn::security::transform::hexEncode(), NDN_THROW, NDN_THROW_NESTED, NO_ENCODING, ndn::security::transform::streamSink(), and ndn::to_string().

Referenced by load(), and save().

◆ loadTlv()

template<typename T >
T ndn::io::loadTlv ( std::istream &  is,
IoEncoding  encoding = BASE64 
)

Reads a TLV element of type T from a stream.

Template Parameters
TClass type representing the TLV element; must be WireDecodable.
Returns
the parsed TLV element
Exceptions
ErrorAn error occurred, e.g., malformed input.
std::invalid_argumentThe specified encoding is not supported.

Definition at line 98 of file io.hpp.

References loadBuffer(), and NDN_THROW_NESTED.

◆ load() [1/2]

template<typename T >
shared_ptr<T> ndn::io::load ( std::istream &  is,
IoEncoding  encoding = BASE64 
)

Reads a TLV element from a stream.

Template Parameters
TType of TLV element; T must be WireDecodable and the nested type T::Error, if defined, must be a subclass of ndn::tlv::Error.
Returns
the TLV element, or nullptr if an error occurs
Note
This function has a peculiar error handling behavior. Consider using loadTlv() instead.

Definition at line 120 of file io.hpp.

References loadBuffer().

◆ load() [2/2]

template<typename T >
shared_ptr<T> ndn::io::load ( const std::string &  filename,
IoEncoding  encoding = BASE64 
)

Reads a TLV element from a file.

Template Parameters
TType of TLV element; T must be WireDecodable and the nested type T::Error, if defined, must be a subclass of ndn::tlv::Error.
Returns
the TLV element, or nullptr if an error occurs
Note
This function has a peculiar error handling behavior. Consider using loadTlv() instead.

Definition at line 153 of file io.hpp.

References BASE64, and saveBuffer().

◆ save() [1/2]

template<typename T >
void ndn::io::save ( const T &  obj,
std::ostream &  os,
IoEncoding  encoding = BASE64 
)

Writes a TLV element to a stream.

Template Parameters
Ttype of TLV element; T must be WireEncodable and the nested type T::Error, if defined, must be a subclass of ndn::tlv::Error
Exceptions
Errorerror during encoding or saving
std::invalid_argumentthe specified encoding is not supported

Definition at line 175 of file io.hpp.

References NDN_THROW_NESTED, and saveBuffer().

Referenced by save().

◆ save() [2/2]

template<typename T >
void ndn::io::save ( const T &  obj,
const std::string &  filename,
IoEncoding  encoding = BASE64 
)

Writes a TLV element to a file.

Template Parameters
Ttype of TLV element; T must be WireEncodable and the nested type T::Error, if defined, must be a subclass of ndn::tlv::Error
Exceptions
Errorerror during encoding or saving
std::invalid_argumentthe specified encoding is not supported

Definition at line 199 of file io.hpp.

References save().