static void dt_send(const struct dt_env *env, void *buf, size_t len_buf) { fstrm_res res; if (!buf) return; res = fstrm_iothr_submit(env->iothr, env->ioq, buf, len_buf, fstrm_free_wrapper, NULL); if (res != fstrm_res_success) free(buf); }
static void * thr_producer(void *arg) { struct producer *p = (struct producer *) arg; memset(&p->pstat, 0, sizeof(p->pstat)); for (unsigned i = 0; i < p->num_messages; i++) { fstrm_res res; size_t len = 0; uint8_t *message = NULL; ubuf *u = ubuf_init(512); unsigned ndups = (p->pstat.count_generated % 4) + 1; for (unsigned j = 0; j < ndups; j++) ubuf_add_cstr(u, test_string); ubuf_detach(u, &message, &len); ubuf_destroy(&u); res = fstrm_iothr_submit(p->iothr, p->ioq, message, len, fstrm_free_wrapper, NULL); if (res == fstrm_res_success) { p->pstat.count_submitted++; p->pstat.bytes_submitted += len; } else { free(message); } p->pstat.count_generated++; p->pstat.bytes_generated += len; if ((i % 1000) == 0) poll(NULL, 0, 1); } return NULL; }