static void run_writer(pid_t peer) { // writer is a type_unnest writer qeo_factory_t *factory; qeocore_type_t *type_unnest; qeocore_writer_t *writer; qeocore_data_t *outer=NULL; int status; /* initialize */ assert(NULL != (factory = qeocore_factory_new(QEO_IDENTITY_DEFAULT))); init_factory(factory); assert(NULL != (type_unnest = type_unnest_register(factory))); assert(NULL != (writer = qeocore_writer_open(factory, type_unnest, NULL, QEOCORE_EFLAG_STATE_DATA | QEOCORE_EFLAG_ENABLE, NULL, NULL))); log_pid("=================================== writer initialized"); assert(NULL != (outer = qeocore_writer_data_new(writer))); /* fill outer struct */ assert(QEO_OK == qeocore_data_set_member(outer, _outer_int32_id, &_outer_int32_value)); assert(QEO_OK == qeocore_data_set_member(outer, _outer_int8_id, &_outer_int8_value)); assert(QEO_OK == qeocore_data_set_member(outer, _outer_string_id, &_outer_string_value)); assert(QEO_OK == qeocore_data_set_member(outer, _outer_int16_id, &_outer_int16_value)); assert(QEO_OK == qeocore_data_set_member(outer, _outer_int64_id, &_outer_int64_value)); log_verbose(" =================== _outer_int32_value = %u \n", _outer_int32_value ); log_verbose(" =================== _outer_int8_value = %u \n", _outer_int8_value ); log_verbose(" =================== _outer_int16_value = %u \n", _outer_int16_value ); log_verbose(" =================== _outer_int64_value = %"PRIu64" \n", _outer_int64_value ); /* write */ assert(QEO_OK == qeocore_writer_write(writer, outer)); log_pid("===================================== writer wrote outer data"); assert(peer == waitpid(peer, &status, 0)); assert(0 == status); log_pid("===================================== writer done"); /* clean up */ qeocore_data_free(outer); qeocore_writer_close(writer); qeocore_type_free(type_unnest); qeocore_factory_close(factory); }
static void run_reader(void) { qeo_factory_t *factory; qeocore_type_t *type_unnest; qeocore_reader_t *reader; qeocore_reader_listener_t listener = { .on_data = my_on_data_available }; sem_init(&_sync, 0, 0); assert(NULL != (factory = qeocore_factory_new(QEO_IDENTITY_DEFAULT))); init_factory(factory); assert(NULL != (type_unnest = type_unnest_register(factory))); assert(NULL != (reader = qeocore_reader_open(factory, type_unnest, NULL, QEOCORE_EFLAG_STATE_DATA | QEOCORE_EFLAG_ENABLE, &listener, NULL))); log_pid("=============================== reader initialized"); sem_wait(&_sync); /* wait for sample */ log_pid("=============================== reader done"); sem_destroy(&_sync); qeocore_reader_close(reader); qeocore_type_free(type_unnest); qeocore_factory_close(factory); }