in src/log_builder.c [488:519]
void add_log_key_value(log_group_builder *bder, char * key, size_t key_len, char * value, size_t value_len)
{
// sum total size
uint32_t kv_size = sizeof(char) * (key_len + value_len) + uint32_size((uint32_t)key_len) + uint32_size((uint32_t)value_len) + 2;
kv_size += 1 + uint32_size(kv_size);
log_tag * logs = &bder->grp->logs;
// ensure buffer size
if (bder->grp->log_now_buffer - logs->buffer + kv_size > logs->max_buffer_len )
{
// reset log_now_buffer
size_t delta = bder->grp->log_now_buffer - logs->buffer;
_adjust_buffer(logs, delta + kv_size);
bder->grp->log_now_buffer = logs->buffer + delta;
}
uint8_t * buf = (uint8_t *)bder->grp->log_now_buffer;
// key_value header
*buf++ = 0x12;
buf += uint32_pack(uint32_size(key_len) + uint32_size(value_len) + 2 + key_len + value_len, buf);
// key len
*buf++ = 0x0A;
buf += uint32_pack(key_len, buf);
// key
memcpy(buf, key, key_len);
buf += key_len;
// value len
*buf++ = 0x12;
buf += uint32_pack(value_len, buf);
// value
memcpy(buf, value, value_len);
buf += value_len;
bder->grp->log_now_buffer = (char *)buf;
}