2011-06-01 16 views
5


Soy bastante nuevo intentando msgpack. Necesito serializar un objeto (instancia de una clase definida por el usuario), que contiene punteros (árbol interno, hashes, etc.) y algunos atributos de tipos básicos.Seriado de clase definido por el usuario, C++ y msgpack

Hasta ahora puedo hacer lo que se hace en el ejemplo rápido de msgpack.org wiki, simplemente serialice la clase en un msgpack::sbuffer, y luego lea el buffer para deserializar.

Pero ahora, quiero enviar ese búfer a un archivo, o el resultado de la serialización a un archivo y luego deserializarlo.
¿Alguien me puede dar algunos consejos sobre cómo hacerlo? Hojeo y leído lo suficiente como para cansarse de él :)

Mi mirada código como este:

msgpack::sbuffer sbuf; 
msgpack::pack(sbuf, cluster); //cluster is the instance of my class clustering 

//HERE I SHOULD SEND THE BUFFER TO A STREAM FILE, AND THEN LOAD IT IN THE UNPACK; 

msgpack::unpacked msg; 
msgpack::unpack(&msg, sbuf.data(), sbuf.size()); 
msgpack::object obj = msg.get(); 
clustering clustUnser 
obj.convert(&clustUnser); 

gracias a todos!
mejores,
Luchux.

Respuesta

3

A partir del ejemplo aquí:

http://wiki.msgpack.org/pages/viewpage.action?pageId=1081387

se ve como sbuf.data() devolvería la dirección y sbuf.size() devolverá el tamaño, de los datos que le escriba a el archivo binario

Cuando desee cargar los datos de un archivo binario, léalo en un búfer que haya asignado y luego pase la dirección y el tamaño a la llamada msgpack :: unpack.

+0

Gracias! Tenía prisa, así que implementé mis propios métodos de serialización. Pero volveré pronto, ¡y pruebe lo que sugirió! – Luchux

Cuestiones relacionadas