Exemplo n.º 1
0
DDS_SubscriberQos *
DDS_SubscriberQos__alloc (
    void
)
{
    return (DDS_SubscriberQos *)
           gapi_subscriberQos__alloc ();

}
Exemplo n.º 2
0
gapi_returnCode_t
gapi_subscriber_set_qos (
    gapi_subscriber _this,
    const gapi_subscriberQos *qos)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    u_result uResult;
    _Subscriber subscriber;
    v_subscriberQos subscriberQos;
    gapi_context        context;

    GAPI_CONTEXT_SET(context, _this, GAPI_METHOD_SET_QOS);

    subscriber = gapi_subscriberClaim(_this, &result);

    if ( subscriber && qos ) {
        result = gapi_subscriberQosIsConsistent(qos, &context);
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }

    if ((result == GAPI_RETCODE_OK ) && (_EntityEnabled(subscriber))) {
        gapi_subscriberQos * existing_qos = gapi_subscriberQos__alloc();

        result = gapi_subscriberQosCheckMutability(qos,
                                                   _SubscriberGetQos(subscriber,
                                                                     existing_qos),
                                                   &context);
        gapi_free(existing_qos);
    }



    if ( result == GAPI_RETCODE_OK ) {
        subscriberQos = u_subscriberQosNew(NULL);
        if (subscriberQos) {
            if ( copySubscriberQosIn(qos, subscriberQos) ) {
                uResult = u_entitySetQoS(_EntityUEntity(subscriber),
                                         (v_qos)(subscriberQos) );
                result = kernelResultToApiResult(uResult);
            } else {
                result = GAPI_RETCODE_OUT_OF_RESOURCES;
            }
            u_subscriberQosFree(subscriberQos);
        } else {
            result = GAPI_RETCODE_OUT_OF_RESOURCES;
        }
    }

    _EntityRelease(subscriber);

    return result;
}
Exemplo n.º 3
0
/**
 * Class:     org_opensplice_dds_dcps_SubscriberImpl
 * Method:    jniSetQos
 * Signature: (LDDS/SubscriberQos;)I
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniSetQos)(
    JNIEnv *env,
    jobject jsubscriber,
    jobject jqos)
{
    gapi_subscriberQos* qos;
    gapi_subscriber subscriber;
    saj_returnCode rc;
    jint result;

    qos = gapi_subscriberQos__alloc();
    subscriber = (gapi_subscriber)saj_read_gapi_address(env, jsubscriber);
    rc = saj_SubscriberQosCopyIn(env, jqos, qos);
    result = (jint)GAPI_RETCODE_ERROR;

    if(rc == SAJ_RETCODE_OK){
        result = (jint)gapi_subscriber_set_qos(subscriber, qos);
    }
    gapi_free(qos);

    return result;
}
Exemplo n.º 4
0
/**
 * Class:     org_opensplice_dds_dcps_SubscriberImpl
 * Method:    jniGetQos
 * Signature: (LDDS/SubscriberQosHolder;)V
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetQos)(
    JNIEnv *env,
    jobject jsubscriber,
    jobject jqosHolder)
{
    gapi_subscriberQos* qos;
    saj_returnCode rc;
    gapi_returnCode_t result;
    jobject jqos;
    gapi_subscriber subscriber;

    if(jqosHolder != NULL){
        subscriber = (gapi_subscriber)saj_read_gapi_address(env, jsubscriber);
        jqos = NULL;

        qos = gapi_subscriberQos__alloc();
        result = gapi_subscriber_get_qos(subscriber, qos);

        if(result == GAPI_RETCODE_OK){
            rc = saj_SubscriberQosCopyOut(env, qos, &jqos);
            gapi_free(qos);

            if(rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jqosHolder,
                        GET_CACHED(subscriberQosHolder_value_fid), jqos);
                (*env)->DeleteLocalRef(env, jqos);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Exemplo n.º 5
0
/**
 * Class:     org_opensplice_dds_dcps_SubscriberImpl
 * Method:    jniCreateDatareader
 * Signature: (LDDS/TopicDescription;LDDS/DataReaderQos;LDDS/DataReaderListener;)LDDS/DataReader;
 */
JNIEXPORT jobject JNICALL
SAJ_FUNCTION(jniCreateDatareader)(
    JNIEnv *env,
    jobject jsubscriber,
    jobject jdescription,
    jobject jqos,
    jobject jlistener,
    jint jmask)
{
    jobject jreader;
    jobject jtypeSupport;
    gapi_subscriber subscriber;
    gapi_dataReader reader;
    gapi_dataReaderQos* readerQos;
    gapi_domainParticipant participant;
    gapi_typeSupport typeSupport;
    gapi_string typeName;
    gapi_topicDescription description;
    struct gapi_dataReaderListener *listener;
    gapi_char* dataReaderClassName;
    gapi_char* signature;
    saj_returnCode rc;

    listener = NULL;
    jreader = NULL;
    reader = GAPI_OBJECT_NIL;

    subscriber = (gapi_subscriber) saj_read_gapi_address(env, jsubscriber);
    participant = gapi_subscriber_get_participant(subscriber);
    description = (gapi_topicDescription) saj_read_gapi_address(env, jdescription);

    typeName = gapi_topicDescription_get_type_name(description);
    typeSupport = gapi_domainParticipant_get_typesupport(participant, (const gapi_char*) typeName);
    gapi_free(typeName);

    jtypeSupport = saj_read_java_address((gapi_object)typeSupport);
    rc = saj_LookupTypeSupportDataReader(env, jtypeSupport, &dataReaderClassName);

    if(rc == SAJ_RETCODE_OK){
        if ((*env)->IsSameObject (env, jqos, GET_CACHED(DATAREADER_QOS_DEFAULT)) == JNI_TRUE) {
            readerQos = (gapi_dataReaderQos *)GAPI_DATAREADER_QOS_DEFAULT;
            rc = SAJ_RETCODE_OK;
        } else if ((*env)->IsSameObject (env, jqos, GET_CACHED(DATAREADER_QOS_USE_TOPIC_QOS)) == JNI_TRUE) {
            readerQos = (gapi_dataReaderQos *)GAPI_DATAREADER_QOS_USE_TOPIC_QOS;
            rc = SAJ_RETCODE_OK;
        } else {
            readerQos = gapi_dataReaderQos__alloc();
            rc = saj_DataReaderQosCopyIn(env, jqos, readerQos);
        }

        if(rc == SAJ_RETCODE_OK){
            listener = saj_dataReaderListenerNew(env, jlistener);
            reader = gapi_subscriber_create_datareader(subscriber, description,
                                                        readerQos, listener, (gapi_statusMask)jmask);

            if (reader != GAPI_OBJECT_NIL){
                rc = saj_LookupTypeSupportConstructorSignature(env, jtypeSupport, &signature);

                if(rc == SAJ_RETCODE_OK){
                    gapi_subscriberQos *sqos = gapi_subscriberQos__alloc();
                    rc = saj_construct_typed_java_object(env, dataReaderClassName,
                                                        (PA_ADDRCAST)reader,
                                                        &jreader, signature,
                                                        jtypeSupport);
                    gapi_free(signature);

                    if(listener != NULL){
                        saj_write_java_listener_address(env, reader, listener->listener_data);
                    }

                    if(sqos){
                        if(gapi_subscriber_get_qos(subscriber, sqos) == GAPI_RETCODE_OK){
                            if(sqos->entity_factory.autoenable_created_entities) {
                                gapi_entity_enable(reader);
                            }
                        }
                        gapi_free(sqos);
                    }
                }
            } else if(listener != NULL){
                saj_listenerDataFree(env, saj_listenerData(listener->listener_data));
            }
        }
        if ((readerQos != (gapi_dataReaderQos *)GAPI_DATAREADER_QOS_DEFAULT) &&
            (readerQos != (gapi_dataReaderQos *)GAPI_DATAREADER_QOS_USE_TOPIC_QOS)) {
            gapi_free(readerQos);
        }
        gapi_free(dataReaderClassName);
    }

    return jreader;
}