Skip to content

Commit 1ce8d04

Browse files
committed
mp: use referenced values when composing CFL object
When creating a CFL object from a MessagePack buffer, now the strings and bytes data types are created as references, that means we don't copy the data to the new buffer. This change has been made for performance reasons by using the updated CFL library v0.5.0. Signed-off-by: Eduardo Silva <[email protected]>
1 parent bf4cb71 commit 1ce8d04

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/flb_mp.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,7 @@ static int mp_object_to_cfl(void **ptr, msgpack_object *o)
757757
break;
758758
case MSGPACK_OBJECT_STR:
759759
var = cfl_variant_create_from_string_s((char *) o->via.str.ptr,
760-
o->via.str.size);
760+
o->via.str.size, CFL_TRUE);
761761
if (!var) {
762762
return -1;
763763
}
@@ -766,7 +766,7 @@ static int mp_object_to_cfl(void **ptr, msgpack_object *o)
766766
break;
767767
case MSGPACK_OBJECT_BIN:
768768
var = cfl_variant_create_from_bytes((char *) o->via.str.ptr,
769-
o->via.str.size);
769+
o->via.str.size, CFL_TRUE);
770770
if (!var) {
771771
return -1;
772772
}
@@ -945,17 +945,17 @@ static int mp_cfl_to_msgpack(struct cfl_variant *var,
945945
/* we don't save references */
946946
break;
947947
case CFL_VARIANT_STRING:
948-
msgpack_pack_str(mp_pck, cfl_sds_len(var->data.as_string));
948+
msgpack_pack_str(mp_pck, cfl_variant_size_get(var));
949949
msgpack_pack_str_body(mp_pck,
950-
var->data.as_string, cfl_sds_len(var->data.as_string));
950+
var->data.as_string, cfl_variant_size_get(var));
951951
break;
952952
case CFL_VARIANT_BYTES:
953-
msgpack_pack_bin(mp_pck, cfl_sds_len(var->data.as_bytes));
953+
msgpack_pack_bin(mp_pck, cfl_variant_size_get(var));
954954
msgpack_pack_bin_body(mp_pck,
955-
var->data.as_bytes, cfl_sds_len(var->data.as_bytes));
955+
var->data.as_bytes, cfl_variant_size_get(var));
956956
break;
957957
case CFL_VARIANT_ARRAY:
958-
msgpack_pack_array(mp_pck, var->data.as_array->entry_count);
958+
msgpack_pack_array(mp_pck, var->data.as_array->entry_count);
959959
for (i = 0; i < var->data.as_array->entry_count; i++) {
960960
variant = var->data.as_array->entries[i];
961961
ret = mp_cfl_to_msgpack(variant, mp_sbuf, mp_pck);

0 commit comments

Comments
 (0)