Пример #1
0
Файл: main.c Проект: bq/qeo-core
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);
}