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...
 
optional< BlockloadBlock (std::istream &is, IoEncoding encoding=BASE64)
 Reads a TLV block from a stream. More...
 
void saveBuffer (const uint8_t *buf, size_t size, std::ostream &os, IoEncoding encoding=BASE64)
 Writes a byte buffer to a stream. More...
 
void saveBlock (const Block &block, std::ostream &os, IoEncoding encoding=BASE64)
 Writes a TLV block to 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 41 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
Errorerror during loading
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 loadBlock().

◆ loadBlock()

optional< Block > ndn::io::loadBlock ( std::istream &  is,
IoEncoding  encoding = BASE64 
)

Reads a TLV block from a stream.

Returns
a Block, or nullopt if an error occurs

Definition at line 63 of file io.cpp.

References loadBuffer(), and nonstd::optional_lite::nullopt.

Referenced by load().

◆ saveBuffer()

void ndn::io::saveBuffer ( const uint8_t *  buf,
size_t  size,
std::ostream &  os,
IoEncoding  encoding = BASE64 
)

Writes a byte buffer to a stream.

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

Definition at line 77 of file io.cpp.

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

Referenced by saveBlock().

◆ saveBlock()

void ndn::io::saveBlock ( const Block block,
std::ostream &  os,
IoEncoding  encoding = BASE64 
)

Writes a TLV block to a stream.

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

Definition at line 102 of file io.cpp.

References saveBuffer(), ndn::Block::size(), and ndn::Block::wire().

Referenced by save().

◆ 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

Definition at line 100 of file io.hpp.

References loadBlock().

◆ 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

Definition at line 125 of file io.hpp.

◆ 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 153 of file io.hpp.

References NDN_THROW_NESTED, and saveBlock().

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 177 of file io.hpp.

References save().