diff options
Diffstat (limited to 'src/exporter/cjson_exporter.c')
| -rw-r--r-- | src/exporter/cjson_exporter.c | 92 |
1 files changed, 55 insertions, 37 deletions
diff --git a/src/exporter/cjson_exporter.c b/src/exporter/cjson_exporter.c index 23e890e..3c8fdd4 100644 --- a/src/exporter/cjson_exporter.c +++ b/src/exporter/cjson_exporter.c @@ -123,9 +123,6 @@ void kv_pair_fill_with_fields(struct export_kv_pair *dest, const struct field *s { dest->key = strdup(src->key); dest->type = src->type; - if (dest->type == FIELD_VALUE_UUID) { - dest->type = FIELD_VALUE_CSTRING; - } switch (src->type) { case FIELD_VALUE_INTEGER: dest->value_longlong = src->value_longlong; @@ -136,12 +133,6 @@ void kv_pair_fill_with_fields(struct export_kv_pair *dest, const struct field *s case FIELD_VALUE_CSTRING: dest->value_str = strdup(src->value_str); break; - case FIELD_VALUE_UUID: { - char uuid_str[37]; - uuid_unparse(src->value_uuid, uuid_str); - dest->value_str = strdup(uuid_str); - break; - } default: assert(0); } @@ -246,11 +237,6 @@ bool field_list_cmp(const struct field_list *a, const struct field_list *b) return false; } break; - case FIELD_VALUE_UUID: - if (uuid_compare(a->field[i].value_uuid, b->field[i].value_uuid) != 0) { - return false; - } - break; default: assert(0); } @@ -278,9 +264,6 @@ struct field_list *field_list_dup(const struct field_list *src) case FIELD_VALUE_CSTRING: dest->field[i].value_str = strdup(src->field[i].value_str); break; - case FIELD_VALUE_UUID: - memcpy(dest->field[i].value_uuid, src->field[i].value_uuid, sizeof(uuid_t)); - break; default: assert(0); } @@ -564,7 +547,6 @@ void kv_pair_write_to_json(const struct export_kv_pair *pairs, struct json_write json_writer_double_field(writer, pairs->key, pairs->value_double); break; case FIELD_VALUE_CSTRING: - case FIELD_VALUE_UUID: json_writer_str_field(writer, pairs->key, pairs->value_str, strlen(pairs->value_str)); break; default: @@ -572,30 +554,33 @@ void kv_pair_write_to_json(const struct export_kv_pair *pairs, struct json_write } } -void kv_pair_free_list(struct export_kv_pair *pairs, size_t len) -{ - for (int i = 0; i < len; i++) { - struct export_kv_pair *pair = &pairs[i]; - if (pair->type == FIELD_VALUE_CSTRING) { - free(pair->value_str); - } - free(pair->key); - } - free(pairs); -} - void field_list_write_to_json(const struct field_list *field_list, struct json_writer *json_obj) { - struct export_kv_pair *pairs = malloc(sizeof(struct export_kv_pair) * field_list->n_field); + struct export_kv_pair pairs = {0}; + for (int i = 0; i < field_list->n_field; i++) { if (field_list->n_field == 0) { continue; } - - kv_pair_fill_with_fields(&pairs[i], &field_list->field[i]); - kv_pair_write_to_json(&pairs[i], json_obj); + memset(&pairs, 0, sizeof(struct export_kv_pair)); + pairs.key = (char *)field_list->field[i].key; + pairs.type = field_list->field[i].type; + switch (pairs.type) + { + case FIELD_VALUE_INTEGER: + pairs.value_longlong = field_list->field[i].value_longlong; + break; + case FIELD_VALUE_DOUBLE: + pairs.value_double = field_list->field[i].value_double; + break; + case FIELD_VALUE_CSTRING: + pairs.value_str = (char *)field_list->field[i].value_str; + break; + default: + break; + } + kv_pair_write_to_json(&pairs, json_obj); } - kv_pair_free_list(pairs, field_list->n_field); } void cell_iter_read_dimensions(const struct cell_iter *iter, struct export_kv_pair **exported_dimensions, size_t *n_dimension_out) @@ -617,6 +602,18 @@ void cell_iter_read_dimensions(const struct cell_iter *iter, struct export_kv_pa } } +void kv_pair_free_list(struct export_kv_pair *pairs, size_t len) +{ + for (int i = 0; i < len; i++) { + struct export_kv_pair *pair = &pairs[i]; + if (pair->type == FIELD_VALUE_CSTRING) { + free(pair->value_str); + } + free(pair->key); + } + free(pairs); +} + // return 1 if added, 0 if not added int json_obj_add(struct cellwise_rec_for_export *tag_field_pair, const struct cell_iter *iter) { @@ -956,9 +953,30 @@ void fieldstat_json_exporter_set_global_dimension(struct fieldstat_json_exporter free(exporter->global_tag_list->field); free(exporter->global_tag_list); } - struct field_list tmp = {(struct field *)tag_list, n_field}; - exporter->global_tag_list = field_list_dup(&tmp); + exporter->global_tag_list = malloc(sizeof(struct field_list)); + exporter->global_tag_list->n_field = n_field; + exporter->global_tag_list->field = malloc(sizeof(struct field) * n_field); + for (size_t i = 0; i < n_field; i++) { + struct field *field = &exporter->global_tag_list->field[i]; + field->key = strdup(tag_list[i].key); + field->type = tag_list[i].type; + switch (field->type) + { + case FIELD_VALUE_INTEGER: + field->value_longlong = tag_list[i].value_longlong; + break; + case FIELD_VALUE_CSTRING: + field->value_str = strdup(tag_list[i].value_str); + break; + case FIELD_VALUE_DOUBLE: + field->value_double = tag_list[i].value_double; + break; + + default: + break; + } + } } void fieldstat_json_exporter_free(struct fieldstat_json_exporter *exporter) |
