mirror of
				https://github.com/msgpack/msgpack-c.git
				synced 2025-10-25 18:23:00 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <msgpack.h>
 | |
| #include <stdio.h>
 | |
| 
 | |
| void print(char const* buf, unsigned int len)
 | |
| {
 | |
|     size_t i = 0;
 | |
|     for(; i < len ; ++i)
 | |
|         printf("%02x ", 0xff & buf[i]);
 | |
|     printf("\n");
 | |
| }
 | |
| 
 | |
| int main(void)
 | |
| {
 | |
|     msgpack_sbuffer sbuf;
 | |
|     msgpack_packer pk;
 | |
|     msgpack_zone mempool;
 | |
|     msgpack_object deserialized;
 | |
| 
 | |
|     /* msgpack::sbuffer is a simple buffer implementation. */
 | |
|     msgpack_sbuffer_init(&sbuf);
 | |
| 
 | |
|     /* serialize values into the buffer using msgpack_sbuffer_write callback function. */
 | |
|     msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write);
 | |
| 
 | |
|     msgpack_pack_array(&pk, 3);
 | |
|     msgpack_pack_int(&pk, 1);
 | |
|     msgpack_pack_true(&pk);
 | |
|     msgpack_pack_str(&pk, 7);
 | |
|     msgpack_pack_str_body(&pk, "example", 7);
 | |
| 
 | |
|     print(sbuf.data, sbuf.size);
 | |
| 
 | |
|     /* deserialize the buffer into msgpack_object instance. */
 | |
|     /* deserialized object is valid during the msgpack_zone instance alive. */
 | |
|     msgpack_zone_init(&mempool, 2048);
 | |
| 
 | |
|     msgpack_unpack(sbuf.data, sbuf.size, NULL, &mempool, &deserialized);
 | |
| 
 | |
|     /* print the deserialized object. */
 | |
|     msgpack_object_print(stdout, deserialized);
 | |
|     puts("");
 | |
| 
 | |
|     msgpack_zone_destroy(&mempool);
 | |
|     msgpack_sbuffer_destroy(&sbuf);
 | |
| 
 | |
|     return 0;
 | |
| }
 | 
