Hello Folks,
First of all, great work. Avro is fantastic.
question.
I have a json as shown below.
I would like to parse person fields including ip_addr so that
it can be packed.
const char PERSON_SCHEMA[] =
"{\
\"type\":\"record\",\
\"name\":\"Person\",\
\"fields\":[\
{\"name\": \"ID\", \"type\": \"long\"},\
{\"name\": \"FirstName\", \"type\": \"string\"},\
{\"name\": \"Email\", \"type\": \"string\"}\
{\
\"type\" : \"record\",\
\"name\" : \"ipaddr\",\
\"fields\" : [\
{\"name\": \"Fixed16\", \"type\": \"fixed\",
\"size\":16},\
{\"name\": \"Fixed4\", \"type\": \"fixed\",
\"size\":4},\
{ \"name\" : \"ip_family\", \"type\" : \"long\"
},\
{ \"name\" : \"hostip\", \"type\" :
[\"Fixed4\", \"Fixed16\"]},\
]\
}\
]\
}";
The original add_function is below.
void
add_person(avro_file_writer_t db, const char *name, const char
*email,
const char *phone, char* ip, long iptype)
{
avro_datum_t person = avro_record(person_schema);
avro_datum_t id_datum = avro_int64(++id);
avro_datum_t name_datum = avro_string(name);
avro_datum_t email_datum = avro_string(email);
if (avro_record_set(person, "ID", id_datum)
|| avro_record_set(person, "FirstName", name_datum)
|| avro_record_set(person, "Email", email_datum)) {
fprintf(stderr, "Unable to create Person datum
structure\n");
exit(EXIT_FAILURE);
}
if (avro_file_writer_append(db, person)) {
fprintf(stderr,
"Unable to write Person datum to memory
buffer\nMessage: %s\n", avro_strerror());
exit(EXIT_FAILURE);
}
/* Decrement all our references to prevent memory from leaking
*/
avro_datum_decref(id_datum);
avro_datum_decref(name_datum);
avro_datum_decref(email_datum);
avro_datum_decref(person);
}
would someone kindly let me know how to modify it so that I can parse
the ip_addr field as well?
thanks in advance