int main(int argc, const char **argv) { int done = 0; qeo_factory_t *qeo; /* R/W for chat participants */ qeo_state_change_reader_t *part_change_reader; /* R/W for chat messages */ qeo_event_writer_t *msg_writer; qeo_event_reader_t *msg_reader; /* local variables for storing the message before sending */ char buf[128]; org_qeo_sample_simplechat_ChatMessage_t chat_msg = { .message = buf }; /* initialize */ qeo = qeo_factory_create(); if (qeo != NULL){ /* initialize the state R/W */ _part_writer = qeo_factory_create_state_writer(qeo, org_qeo_sample_simplechat_ChatParticipant_type, NULL, 0); _part_reader = qeo_factory_create_state_reader(qeo, org_qeo_sample_simplechat_ChatParticipant_type, NULL, 0); part_change_reader = qeo_factory_create_state_change_reader(qeo, org_qeo_sample_simplechat_ChatParticipant_type, &_part_listener, 0); /* initialize the message R/W */ msg_writer = qeo_factory_create_event_writer(qeo, org_qeo_sample_simplechat_ChatMessage_type, NULL, 0); msg_reader = qeo_factory_create_event_reader(qeo, org_qeo_sample_simplechat_ChatMessage_type, &_msg_listener, 0); /* set up some defaults */ update_participant(NULL, ORG_QEO_SAMPLE_SIMPLECHAT_CHATSTATE_AVAILABLE); /* start conversing */ printf("New chat session opened. Type '/help' for commands.\n"); printf("You can now start chatting...\n"); while (!done) { if(fgets(buf, sizeof(buf), stdin) != NULL) { chomp(buf); if ('/' == buf[0]) { handle_command(&buf[1], &done); } else { chat_msg.from = _me.name; qeo_event_writer_write(msg_writer, &chat_msg); } } } /* clean up */ qeo_event_reader_close(msg_reader); qeo_event_writer_close(msg_writer); qeo_state_change_reader_close(part_change_reader); qeo_state_reader_close(_part_reader); qeo_state_writer_close(_part_writer); qeo_factory_close(qeo); free(_me.name); } return 0; }
static void run_test_read() { qeo_factory_t *factory; qeo_state_reader_t *reader; qeo_state_reader_listener_t sr_cbs = { .on_update = on_update }; sem_init(&_sync, 0, 0); _pid = getpid(); log_verbose("[PID %d] Creating factory", _pid); assert(NULL != (factory = qeo_factory_create_by_id(QEO_IDENTITY_DEFAULT))); assert(NULL != (reader = qeo_factory_create_state_reader(factory, _tsm_types, &sr_cbs, 0))); sem_wait(&_sync); log_verbose("[PID %d] Closing factory", _pid); //qeo_state_change_reader_close(change); qeo_state_reader_close(reader); qeo_factory_close(factory); }