Skip to content

Commit c10ac2f

Browse files
committed
pack: allow json record to format without a 'date key' (#2352)
Signed-off-by: Eduardo Silva <[email protected]>
1 parent fc28991 commit c10ac2f

File tree

1 file changed

+37
-32
lines changed

1 file changed

+37
-32
lines changed

src/flb_pack.c

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -715,13 +715,11 @@ flb_sds_t flb_pack_msgpack_to_json_format(const char *data, uint64_t bytes,
715715
msgpack_sbuffer tmp_sbuf;
716716
msgpack_packer tmp_pck;
717717
msgpack_object *obj;
718+
msgpack_object *k;
719+
msgpack_object *v;
718720
struct tm tm;
719721
struct flb_time tms;
720722

721-
if (!date_key) {
722-
return NULL;
723-
}
724-
725723
/* Iterate the original buffer and perform adjustments */
726724
records = flb_mp_count(data, bytes);
727725
if (records <= 0) {
@@ -770,41 +768,48 @@ flb_sds_t flb_pack_msgpack_to_json_format(const char *data, uint64_t bytes,
770768
/* Get the record/map */
771769
map = root.via.array.ptr[1];
772770
map_size = map.via.map.size;
773-
msgpack_pack_map(&tmp_pck, map_size + 1);
774771

775-
/* Append date key */
776-
msgpack_pack_str(&tmp_pck, flb_sds_len(date_key));
777-
msgpack_pack_str_body(&tmp_pck, date_key, flb_sds_len(date_key));
772+
if (date_key != NULL) {
773+
msgpack_pack_map(&tmp_pck, map_size + 1);
774+
}
775+
else {
776+
msgpack_pack_map(&tmp_pck, map_size);
777+
}
778+
779+
if (date_key != NULL) {
780+
/* Append date key */
781+
msgpack_pack_str(&tmp_pck, flb_sds_len(date_key));
782+
msgpack_pack_str_body(&tmp_pck, date_key, flb_sds_len(date_key));
778783

779-
/* Append date value */
780-
switch (date_format) {
781-
case FLB_PACK_JSON_DATE_DOUBLE:
782-
msgpack_pack_double(&tmp_pck, flb_time_to_double(&tms));
783-
break;
784-
case FLB_PACK_JSON_DATE_ISO8601:
784+
/* Append date value */
785+
switch (date_format) {
786+
case FLB_PACK_JSON_DATE_DOUBLE:
787+
msgpack_pack_double(&tmp_pck, flb_time_to_double(&tms));
788+
break;
789+
case FLB_PACK_JSON_DATE_ISO8601:
785790
/* Format the time, use microsecond precision not nanoseconds */
786-
gmtime_r(&tms.tm.tv_sec, &tm);
787-
s = strftime(time_formatted, sizeof(time_formatted) - 1,
788-
FLB_PACK_JSON_DATE_ISO8601_FMT, &tm);
789-
790-
len = snprintf(time_formatted + s,
791-
sizeof(time_formatted) - 1 - s,
792-
".%06" PRIu64 "Z",
793-
(uint64_t) tms.tm.tv_nsec / 1000);
794-
s += len;
795-
msgpack_pack_str(&tmp_pck, s);
796-
msgpack_pack_str_body(&tmp_pck, time_formatted, s);
797-
break;
798-
case FLB_PACK_JSON_DATE_EPOCH:
799-
msgpack_pack_uint64(&tmp_pck, (long long unsigned)(tms.tm.tv_sec));
800-
break;
791+
gmtime_r(&tms.tm.tv_sec, &tm);
792+
s = strftime(time_formatted, sizeof(time_formatted) - 1,
793+
FLB_PACK_JSON_DATE_ISO8601_FMT, &tm);
794+
795+
len = snprintf(time_formatted + s,
796+
sizeof(time_formatted) - 1 - s,
797+
".%06" PRIu64 "Z",
798+
(uint64_t) tms.tm.tv_nsec / 1000);
799+
s += len;
800+
msgpack_pack_str(&tmp_pck, s);
801+
msgpack_pack_str_body(&tmp_pck, time_formatted, s);
802+
break;
803+
case FLB_PACK_JSON_DATE_EPOCH:
804+
msgpack_pack_uint64(&tmp_pck, (long long unsigned)(tms.tm.tv_sec));
805+
break;
806+
}
801807
}
802808

803809
/* Append remaining keys/values */
804810
for (i = 0; i < map_size; i++) {
805-
msgpack_object *k = &map.via.map.ptr[i].key;
806-
msgpack_object *v = &map.via.map.ptr[i].val;
807-
811+
k = &map.via.map.ptr[i].key;
812+
v = &map.via.map.ptr[i].val;
808813
msgpack_pack_object(&tmp_pck, *k);
809814
msgpack_pack_object(&tmp_pck, *v);
810815
}

0 commit comments

Comments
 (0)