8 #define SCARAB_API_EXPORTS 10 #include "msgpack.hpp" 14 using std::stringstream;
24 LOGGER( dlog,
"param_msgpack" );
36 msgpack::unpacked t_unpacked;
37 msgpack::unpack( t_unpacked, a_msgpack_string.data(), a_msgpack_string.size()) ;
38 msgpack::object t_deserialized = t_unpacked.get();
39 LDEBUG( dlog,
"msgpack deserialization result is: (size = " << t_deserialized.via.array.size <<
")\n" << t_deserialized );
43 if( t_deserialized.type != 7 )
48 for(
unsigned i_element=0; i_element < t_deserialized.via.array.size; ++i_element )
50 t_config->
replace( t_deserialized.via.array.ptr[2 * i_element].as<std::string>(),
53 LDEBUG( dlog,
"Unpacked string:\n" << *t_config );
60 LDEBUG( dlog,
"Unpacking msgpack element of type: " << a_msgpack_element.type );
61 switch ( a_msgpack_element.type )
67 return new param_value( a_msgpack_element.as<
bool>() );
70 return new param_value( a_msgpack_element.as<
unsigned >() );
73 return new param_value( a_msgpack_element.as<
int >() );
76 return new param_value( a_msgpack_element.as<
float >() );
79 return new param_value( a_msgpack_element.as< std::string >() );
84 for(
unsigned i_element = 0; i_element < a_msgpack_element.via.array.size; ++i_element )
88 return t_config_array;
94 for(
unsigned i_element = 0; i_element < a_msgpack_element.via.array.size; ++i_element )
96 t_config_node->
replace( a_msgpack_element.via.array.ptr[2 * i_element].as<std::string>(),
103 LWARN( dlog,
"Cannot handle 'bin'" );
107 LWARN( dlog,
"Type unrecognized: " << a_msgpack_element.type );
111 LWARN( dlog,
"Code should not reach this point" );
void replace(const std::string &a_name, const param &a_value)
creates a copy of a_value
static bool write_string(const param &a_to_write, std::string &a_string, json_writing_style a_style)
virtual ~param_output_msgpack()
void push_back(const param &a_value)
LOGGER(mtlog,"authentication")