in src/log_producer_client.c [155:190]
log_producer_result log_producer_client_add_log(log_producer_client * client, int32_t kv_count, ...)
{
if (client == NULL || !client->valid_flag)
{
return LOG_PRODUCER_INVALID;
}
va_list argp;
va_start(argp, kv_count);
int32_t pairs = kv_count / 2;
char ** keys = (char **)malloc(pairs * sizeof(char *));
char ** values = (char **)malloc(pairs * sizeof(char *));
size_t * key_lens = (size_t *)malloc(pairs * sizeof(size_t));
size_t * val_lens = (size_t *)malloc(pairs * sizeof(size_t));
int32_t i = 0;
for (; i < pairs; ++i)
{
const char * key = va_arg(argp, const char *);
const char * value = va_arg(argp, const char *);
keys[i] = (char *)key;
values[i] = (char *)value;
key_lens[i] = strlen(key);
val_lens[i] = strlen(value);
}
log_producer_manager * manager = ((producer_client_private *)client->private_data)->producer_manager;
log_producer_result rst = log_producer_manager_add_log(manager, (uint32_t)time(NULL), pairs, keys, key_lens, values, val_lens);
free(keys);
free(values);
free(key_lens);
free(val_lens);
return rst;
}