Ejemplo n.º 1
0
v_subscriber
v_participantGetBuiltinSubscriber(
    v_participant p)
{
    v_subscriberQos sQos;
    v_readerQos rQos;
    v_kernel kernel;
    c_bool create_builtin_readers = FALSE;

    assert(p != NULL);
    assert(C_TYPECHECK(p, v_participant));

    c_mutexLock(&p->builtinLock);
    if (p->builtinSubscriber == NULL) {
        kernel = v_objectKernel(p);
        sQos = v_subscriberQosNew(kernel, NULL);
        sQos->presentation.access_scope = V_PRESENTATION_TOPIC;
        c_free(sQos->partition);
        sQos->partition = c_stringNew(c_getBase(c_object(kernel)),
                                      V_BUILTIN_PARTITION);
        sQos->entityFactory.autoenable_created_entities = TRUE;

        p->builtinSubscriber = v_subscriberNew(p, V_BUILTINSUBSCRIBER_NAME,
                                               sQos, TRUE);
        v_subscriberQosFree(sQos);

        create_builtin_readers = TRUE;
        c_mutexUnlock(&p->builtinLock);

        assert(p->builtinSubscriber != NULL);

        rQos = v_readerQosNew(kernel, NULL);
        rQos->durability.kind = V_DURABILITY_TRANSIENT;
        rQos->reliability.kind = V_RELIABILITY_RELIABLE;
        rQos->history.kind = V_HISTORY_KEEPLAST;
        rQos->history.depth = 1;

#define _CREATE_READER_(topicName) {\
            q_expr expr; \
            v_dataReader dr; \
            expr = q_parse("select * from " topicName);\
            dr = v_dataReaderNew(p->builtinSubscriber, topicName "Reader", \
                                   expr, NULL, rQos, TRUE);\
            c_free(dr); \
            q_dispose(expr); \
        }
        _CREATE_READER_(V_PARTICIPANTINFO_NAME)
        _CREATE_READER_(V_TOPICINFO_NAME)
        _CREATE_READER_(V_PUBLICATIONINFO_NAME)
        _CREATE_READER_(V_SUBSCRIPTIONINFO_NAME)
#undef _CREATE_READER_
        v_readerQosFree(rQos);
    } else {
        c_mutexUnlock(&p->builtinLock);
    }

    return c_keep(p->builtinSubscriber);
}
Ejemplo n.º 2
0
void
v_qosFree(
    v_qos qos)
{
    if(qos != NULL){
        switch(qos->kind){
        case V_PARTICIPANT_QOS:
            v_participantQosFree(v_participantQos(qos));
        break;
        case V_TOPIC_QOS:
            v_topicQosFree(v_topicQos(qos));
        break;
        case V_WRITER_QOS:
            v_writerQosFree(v_writerQos(qos));
        break;
        case V_READER_QOS:
            v_readerQosFree(v_readerQos(qos));
        break;
        case V_PUBLISHER_QOS:
            v_publisherQosFree(v_publisherQos(qos));
        break;
        case V_SUBSCRIBER_QOS:
            v_subscriberQosFree(v_subscriberQos(qos));
        break;
        case V_PARTITION_QOS:
        case V_INDEX_QOS:
        case V_WRITERHISTORY_QOS:
        case V_GROUPHISTORY_QOS:
        case V_VIEW_QOS:
        case V_DATAVIEW_QOS:
        case V_KERNEL_QOS:
        case V_COUNT_QOS:
        break;
        default:
        break;
        }
    }
}