join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
join::PackReader Class Reference

message pack reader class. More...

#include <pack.hpp>

Public Member Functions

 PackReader ()=default
 default constructor.
 
 PackReader (const PackReader &other)=delete
 copy constructor.
 
PackReader & operator= (const PackReader &other)=delete
 copy assignment.
 
 PackReader (PackReader &&other)=delete
 move constructor.
 
PackReader & operator= (PackReader &&other)=delete
 move assignment.
 
 ~PackReader ()=default
 destroy instance.
 
template<typename Handler >
int deserialize (const char *document, size_t length, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (const char *first, const char *last, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::string_view document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::stringstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::istringstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::fstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::ifstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::iostream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::istream &document, Handler &handler)
 deserialize a document.
 

Protected Member Functions

template<typename ProbeType >
int read (ProbeType &document, Value &value)
 parse a document into a value.
 
template<typename ProbeType , typename Handler >
int read (ProbeType &document, Handler &&handler)
 parse a document, resetting the handler on failure.
 
template<typename ProbeType , typename Handler >
int readValue (ProbeType &document, Handler &handler, size_t depth)
 parse value.
 
template<typename ProbeType , typename Handler >
int readNull (ProbeType &document, Handler &handler, bool isKey=false)
 parse a null value.
 
template<typename ProbeType , typename Handler >
int readFalse (ProbeType &document, Handler &handler, bool isKey=false)
 parse a false value.
 
template<typename ProbeType , typename Handler >
int readTrue (ProbeType &document, Handler &handler, bool isKey=false)
 parse a true value.
 
template<typename ProbeType , typename Handler >
int readArray (ProbeType &document, Handler &handler, size_t depth)
 parse an array value.
 
template<typename ProbeType , typename Handler >
int readObject (ProbeType &document, Handler &handler, size_t depth)
 parse an object value.
 
template<typename ProbeType , typename Handler >
int readKey (ProbeType &document, Handler &handler)
 parse a key of any type.
 
template<typename ProbeType , typename Handler >
int readString (ProbeType &document, Handler &handler, bool isKey=false)
 parse a string value.
 
template<typename ProbeType , typename Handler >
int readBin (ProbeType &document, Handler &handler)
 parse binary data.
 
template<typename ProbeType , typename Handler >
int readNumber (ProbeType &document, Handler &handler, bool isKey=false)
 parse a number value.
 
constexpr bool isNull (uint8_t c)
 check if null.
 
constexpr bool isFalse (uint8_t c)
 check if false.
 
constexpr bool isTrue (uint8_t c)
 check if true.
 
constexpr bool isInt (uint8_t c)
 check if 32 bits integer.
 
constexpr bool isUint (uint8_t c)
 check if unsigned 32 bits integer.
 
constexpr bool isInt64 (uint8_t c)
 check if 64 bits integer.
 
constexpr bool isUint64 (uint8_t c)
 check if unsigned 64 bits integer.
 
constexpr bool isReal (uint8_t c)
 check if real.
 
constexpr bool isNumber (uint8_t c)
 check if number.
 
constexpr bool isString (uint8_t c)
 check if string.
 
constexpr bool isBin (uint8_t c)
 check if binary data.
 
constexpr bool isArray (uint8_t c)
 check if array.
 
constexpr bool isObject (uint8_t c)
 check if object.
 

Static Protected Member Functions

template<typename ProbeType >
static int readBytes (ProbeType &document, uint32_t len, std::string &output)
 read bytes by chunks.
 
template<typename Type , typename ProbeType , typename Output >
requires std::is_arithmetic_v<Type>
static int unpack (ProbeType &document, Output &output)
 unpack value from stream.
 

Detailed Description

message pack reader class.

Constructor & Destructor Documentation

◆ PackReader() [1/3]

join::PackReader::PackReader ( )
default

default constructor.

◆ PackReader() [2/3]

join::PackReader::PackReader ( const PackReader & other)
delete

copy constructor.

Parameters
otherobject to copy.

◆ PackReader() [3/3]

join::PackReader::PackReader ( PackReader && other)
delete

move constructor.

Parameters
otherobject to move.

◆ ~PackReader()

join::PackReader::~PackReader ( )
default

destroy instance.

Member Function Documentation

◆ deserialize() [1/9]

template<typename Handler >
int join::PackReader::deserialize ( const char * document,
size_t length,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to parse.
lengthThe length of the document to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [2/9]

template<typename Handler >
int join::PackReader::deserialize ( const char * first,
const char * last,
Handler & handler )
inline

deserialize a document.

Parameters
firstThe first character of the document to parse.
lastThe last character of the document to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [3/9]

template<typename Handler >
int join::PackReader::deserialize ( std::fstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [4/9]

template<typename Handler >
int join::PackReader::deserialize ( std::ifstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [5/9]

template<typename Handler >
int join::PackReader::deserialize ( std::iostream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [6/9]

template<typename Handler >
int join::PackReader::deserialize ( std::istream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [7/9]

template<typename Handler >
int join::PackReader::deserialize ( std::istringstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [8/9]

template<typename Handler >
int join::PackReader::deserialize ( std::string_view document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [9/9]

template<typename Handler >
int join::PackReader::deserialize ( std::stringstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ isArray()

bool join::PackReader::isArray ( uint8_t c)
inlineconstexprprotected

check if array.

Parameters
ccharacter to check.
Returns
true if array, false otherwise.

◆ isBin()

bool join::PackReader::isBin ( uint8_t c)
inlineconstexprprotected

check if binary data.

Parameters
ccharacter to check.
Returns
true if binary data, false otherwise.

◆ isFalse()

bool join::PackReader::isFalse ( uint8_t c)
inlineconstexprprotected

check if false.

Parameters
ccharacter to check.
Returns
true if false, false otherwise.

◆ isInt()

bool join::PackReader::isInt ( uint8_t c)
inlineconstexprprotected

check if 32 bits integer.

Parameters
ccharacter to check.
Returns
true if 32 bits integer, false otherwise.

◆ isInt64()

bool join::PackReader::isInt64 ( uint8_t c)
inlineconstexprprotected

check if 64 bits integer.

Parameters
ccharacter to check.
Returns
true if 64 bits integer, false otherwise.

◆ isNull()

bool join::PackReader::isNull ( uint8_t c)
inlineconstexprprotected

check if null.

Parameters
ccharacter to check.
Returns
true if null, false otherwise.

◆ isNumber()

bool join::PackReader::isNumber ( uint8_t c)
inlineconstexprprotected

check if number.

Parameters
ccharacter to check.
Returns
true if number, false otherwise.

◆ isObject()

bool join::PackReader::isObject ( uint8_t c)
inlineconstexprprotected

check if object.

Parameters
ccharacter to check.
Returns
true if object, false otherwise.

◆ isReal()

bool join::PackReader::isReal ( uint8_t c)
inlineconstexprprotected

check if real.

Parameters
ccharacter to check.
Returns
true if real, false otherwise.

◆ isString()

bool join::PackReader::isString ( uint8_t c)
inlineconstexprprotected

check if string.

Parameters
ccharacter to check.
Returns
true if string, false otherwise.

◆ isTrue()

bool join::PackReader::isTrue ( uint8_t c)
inlineconstexprprotected

check if true.

Parameters
ccharacter to check.
Returns
true if true, false otherwise.

◆ isUint()

bool join::PackReader::isUint ( uint8_t c)
inlineconstexprprotected

check if unsigned 32 bits integer.

Parameters
ccharacter to check.
Returns
true if unsigned 32 bits integer, false otherwise.

◆ isUint64()

bool join::PackReader::isUint64 ( uint8_t c)
inlineconstexprprotected

check if unsigned 64 bits integer.

Parameters
ccharacter to check.
Returns
true if unsigned 64 bits integer, false otherwise.

◆ operator=() [1/2]

PackReader & join::PackReader::operator= ( const PackReader & other)
delete

copy assignment.

Parameters
otherobject to copy.
Returns
a reference of the current object.

◆ operator=() [2/2]

PackReader & join::PackReader::operator= ( PackReader && other)
delete

move assignment.

Parameters
otherobject to move.
Returns
a reference of the current object.

◆ read() [1/2]

template<typename ProbeType , typename Handler >
int join::PackReader::read ( ProbeType & document,
Handler && handler )
inlineprotected

parse a document, resetting the handler on failure.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ read() [2/2]

template<typename ProbeType >
int join::PackReader::read ( ProbeType & document,
Value & value )
inlineprotected

parse a document into a value.

Parameters
documentdocument to parse.
valuevalue receiving the document.
Returns
0 on success, -1 otherwise.

◆ readArray()

template<typename ProbeType , typename Handler >
int join::PackReader::readArray ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse an array value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ readBin()

template<typename ProbeType , typename Handler >
int join::PackReader::readBin ( ProbeType & document,
Handler & handler )
inlineprotected

parse binary data.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readBytes()

template<typename ProbeType >
static int join::PackReader::readBytes ( ProbeType & document,
uint32_t len,
std::string & output )
inlinestaticprotected

read bytes by chunks.

Parameters
documentdocument to parse.
lennumber of bytes to read.
outputstring receiving the bytes.
Returns
0 on success, -1 otherwise.

◆ readFalse()

template<typename ProbeType , typename Handler >
int join::PackReader::readFalse ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a false value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readKey()

template<typename ProbeType , typename Handler >
int join::PackReader::readKey ( ProbeType & document,
Handler & handler )
inlineprotected

parse a key of any type.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readNull()

template<typename ProbeType , typename Handler >
int join::PackReader::readNull ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a null value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readNumber()

template<typename ProbeType , typename Handler >
int join::PackReader::readNumber ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a number value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readObject()

template<typename ProbeType , typename Handler >
int join::PackReader::readObject ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse an object value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ readString()

template<typename ProbeType , typename Handler >
int join::PackReader::readString ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a string value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readTrue()

template<typename ProbeType , typename Handler >
int join::PackReader::readTrue ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a true value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readValue()

template<typename ProbeType , typename Handler >
int join::PackReader::readValue ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ unpack()

template<typename Type , typename ProbeType , typename Output >
requires std::is_arithmetic_v<Type>
static int join::PackReader::unpack ( ProbeType & document,
Output & output )
inlinestaticprotected

unpack value from stream.

Parameters
documentdocument to parse.
outputunpacked value.
Returns
0 on success, -1 otherwise.

The documentation for this class was generated from the following file: