diff options
author | Alfredo Cardigliano <alfredo.cardigliano@gmail.com> | 2020-05-25 16:37:00 +0200 |
---|---|---|
committer | Alfredo Cardigliano <alfredo.cardigliano@gmail.com> | 2020-05-25 16:37:00 +0200 |
commit | 2dce6cd525f707c61cc16cd25c563023b99f6073 (patch) | |
tree | 5aaed25ec205e9cdbb189d68f2d2a8d9c8488693 /example/ndpiReader.c | |
parent | 8fa5c31996bc2f7dc5d11164bb28b47238004b30 (diff) |
Add ndpi_serialize_start_of_list/ndpi_serialize_end_of_list to serialize simple lists in JSON
Diffstat (limited to 'example/ndpiReader.c')
-rw-r--r-- | example/ndpiReader.c | 136 |
1 files changed, 79 insertions, 57 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c index 15f5d6f9a..e5dc807b5 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -3079,86 +3079,108 @@ void serializerUnitTest() { ndpi_serializer serializer, deserializer; int i; u_int8_t trace = 0; + u_int8_t use_json = 0; - assert(ndpi_init_serializer(&serializer, ndpi_serialization_format_tlv) != -1); + assert(ndpi_init_serializer(&serializer, use_json ? ndpi_serialization_format_json : ndpi_serialization_format_tlv) != -1); for(i=0; i<16; i++) { char kbuf[32], vbuf[32]; - assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1); - snprintf(kbuf, sizeof(kbuf), "Hello %d", i); snprintf(vbuf, sizeof(vbuf), "World %d", i); + assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1); assert(ndpi_serialize_uint32_string(&serializer, i, "Hello") != -1); assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1); assert(ndpi_serialize_string_uint32(&serializer, kbuf, i*i) != -1); assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1); } - if(trace) - printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer)); + if (use_json) { - assert(ndpi_init_deserializer(&deserializer, &serializer) != -1); + assert(ndpi_serialize_start_of_list(&serializer, "List") != -1); - while(1) { - ndpi_serialization_type kt, et; - et = ndpi_deserialize_get_item_type(&deserializer, &kt); + for(i=0; i<4; i++) { + char kbuf[32], vbuf[32]; + snprintf(kbuf, sizeof(kbuf), "Ignored"); + snprintf(vbuf, sizeof(vbuf), "Item %d", i); + assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1); + assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1); + assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1); + } + assert(ndpi_serialize_end_of_list(&serializer) != -1); + assert(ndpi_serialize_string_string(&serializer, "Last", "Ok") != -1); - if(et == ndpi_serialization_unknown) - break; - else { - u_int32_t k32, v32; - ndpi_string ks, vs; - float vf; - - switch(kt) { - case ndpi_serialization_uint32: - ndpi_deserialize_key_uint32(&deserializer, &k32); - if(trace) printf("%u=", k32); + if(trace) { + u_int32_t buffer_len = 0; + char *buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len); + printf("%s\n", buffer); + } + + } else { + if(trace) + printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer)); + + assert(ndpi_init_deserializer(&deserializer, &serializer) != -1); + + while(1) { + ndpi_serialization_type kt, et; + et = ndpi_deserialize_get_item_type(&deserializer, &kt); + + if(et == ndpi_serialization_unknown) + break; + else { + u_int32_t k32, v32; + ndpi_string ks, vs; + float vf; + + switch(kt) { + case ndpi_serialization_uint32: + ndpi_deserialize_key_uint32(&deserializer, &k32); + if(trace) printf("%u=", k32); break; - case ndpi_serialization_string: - ndpi_deserialize_key_string(&deserializer, &ks); - if (trace) { - u_int8_t bkp = ks.str[ks.str_len]; - ks.str[ks.str_len] = '\0'; - printf("%s=", ks.str); - ks.str[ks.str_len] = bkp; - } + case ndpi_serialization_string: + ndpi_deserialize_key_string(&deserializer, &ks); + if (trace) { + u_int8_t bkp = ks.str[ks.str_len]; + ks.str[ks.str_len] = '\0'; + printf("%s=", ks.str); + ks.str[ks.str_len] = bkp; + } break; - default: - printf("Unsupported TLV key type %u\n", kt); + default: + printf("Unsupported TLV key type %u\n", kt); return; - } - - switch(et) { - case ndpi_serialization_uint32: - assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1); - if(trace) printf("%u\n", v32); - break; + } - case ndpi_serialization_string: - assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1); - if(trace) { - u_int8_t bkp = vs.str[vs.str_len]; - vs.str[vs.str_len] = '\0'; - printf("%s\n", vs.str); - vs.str[vs.str_len] = bkp; - } - break; + switch(et) { + case ndpi_serialization_uint32: + assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1); + if(trace) printf("%u\n", v32); + break; + + case ndpi_serialization_string: + assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1); + if(trace) { + u_int8_t bkp = vs.str[vs.str_len]; + vs.str[vs.str_len] = '\0'; + printf("%s\n", vs.str); + vs.str[vs.str_len] = bkp; + } + break; - case ndpi_serialization_float: - assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1); - if(trace) printf("%f\n", vf); - break; + case ndpi_serialization_float: + assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1); + if(trace) printf("%f\n", vf); + break; - default: - if (trace) printf("\n"); - printf("serializerUnitTest: unsupported type %u detected!\n", et); - return; - break; + default: + if (trace) printf("\n"); + printf("serializerUnitTest: unsupported type %u detected!\n", et); + return; + } } - } - ndpi_deserialize_next(&deserializer); + ndpi_deserialize_next(&deserializer); + } } ndpi_term_serializer(&serializer); |