Пример #1
0
saj_returnCode
checkJavaObject(
    JNIEnv *env,
    jobject java_object)
{
    saj_returnCode rc;
    jclass tempClass;

    rc = SAJ_RETCODE_ERROR;

    if(java_object != NULL){
        /* make sure there is a reference to SajSuperClass */
        if (GET_CACHED(gapiSuperClass_class) == NULL){
            tempClass = (*env)->FindClass(env, "org/opensplice/dds/dcps/SajSuperClass");
            saj_exceptionCheck(env);
            SET_CACHED(gapiSuperClass_class, (*env)->NewGlobalRef(env, tempClass));
            saj_exceptionCheck(env);
            (*env)->DeleteLocalRef(env, tempClass);
            saj_exceptionCheck(env);
        }

        /* Verify the java_object is an instance of SajSuperClass */
        if((*env)->IsInstanceOf(env, java_object, GET_CACHED(gapiSuperClass_class))){
            rc = SAJ_RETCODE_OK;
        }
        saj_exceptionCheck(env);
    }
    return rc;
}
Пример #2
0
saj_returnCode
saj_timeCopyOut(
    JNIEnv *env,
    gapi_time_t *src,
    jobject *dst)
{
    assert(src);
    assert(dst);

    if (*dst == NULL) {
	   *dst = (*env)->NewObject (env, GET_CACHED(time_t_class),
                                        GET_CACHED(time_t_constructor_mid),
                                        src->sec, src->nanosec);
        saj_exceptionCheck(env);
	if (*dst == NULL) {
	    return SAJ_RETCODE_ERROR;
	}
    } else {
        /* set the nanosec and sec fields of the java object */
        (*env)->SetIntField(env, *dst, GET_CACHED(time_t_sec_fid), src->sec);
        saj_exceptionCheck(env);
        (*env)->SetIntField(env, *dst, GET_CACHED(time_t_nanosec_fid), src->nanosec);
        saj_exceptionCheck(env);
    }
    return SAJ_RETCODE_OK;
}
Пример #3
0
saj_returnCode
saj_sampleInfoHolderCopyOut(
    JNIEnv              *env,
    gapi_sampleInfo	*src,
    jobject             *dst)
{
    jobject sampleInfo;
    jobject si;

    assert (dst);
    assert (*dst);

    sampleInfo = (*env)->GetObjectField (env, *dst, GET_CACHED(sampleInfoHolder_value_fid));
    saj_exceptionCheck(env);
    si = sampleInfo;

    if (saj_sampleInfoCopyOut (env, src, &sampleInfo) == SAJ_RETCODE_ERROR) {
	   return SAJ_RETCODE_ERROR;
    }
    if (sampleInfo != si) {
        (*env)->SetObjectField (env, *dst, GET_CACHED(sampleInfoHolder_value_fid), sampleInfo);
        saj_exceptionCheck(env);
    }
    return SAJ_RETCODE_OK;
}
Пример #4
0
saj_returnCode
saj_statusCopyOutRequestedIncompatibleQosStatus(
    JNIEnv *env,
    gapi_requestedIncompatibleQosStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    jobjectArray jqosCount;
    saj_returnCode rc;
    
    cls = GET_CACHED(requestedIncompatibleQosStatus_class);
    mid = GET_CACHED(requestedIncompatibleQosStatus_constructor_mid);
    rc = saj_statusCopyOutQosPolicyCountSeq(env, &status->policies, &jqosCount);
    
    if(rc == SAJ_RETCODE_OK){
        *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->total_count, 
                                            (jint)status->total_count_change,
                                            (jint)status->last_policy_id,
                                            jqosCount);
        saj_exceptionCheck(env);
    }
    return rc;
}
Пример #5
0
PA_ADDRCAST
saj_read_gapi_address(
    JNIEnv *env,
    jobject java_object)
{
    PA_ADDRCAST returnValue;
    saj_returnCode rc;

    returnValue = 0;

    if(java_object != NULL){
        rc = checkJavaObject(env, java_object);

        if(rc == SAJ_RETCODE_OK){
            if(GET_CACHED(sajSuperClassGapiPeer_fid) == NULL){
                SET_CACHED(sajSuperClassGapiPeer_fid, (*env)->GetFieldID(env, GET_CACHED(gapiSuperClass_class), "gapiObject", "J"));
                saj_exceptionCheck(env);
            }
            /* read field gapiObject from the object */
            returnValue = (PA_ADDRCAST)(*env)->GetLongField(env, java_object, GET_CACHED(sajSuperClassGapiPeer_fid));
            saj_exceptionCheck(env);
        }
    }
	return returnValue;
}
Пример #6
0
saj_returnCode
saj_statusCopyOutSampleRejectedStatus(
    JNIEnv *env,
    gapi_sampleRejectedStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    saj_returnCode rc;
    jobject jkind;
    
    cls = GET_CACHED(sampleRejectedStatus_class);
    mid = GET_CACHED(sampleRejectedStatus_constructor_mid);
    
    rc = saj_statusCopyOutSampleRejectedStatusKind(env, status->last_reason, 
                                                                    &jkind);
    if(rc == SAJ_RETCODE_OK){
        *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->total_count, 
                                            (jint)status->total_count_change,
                                            jkind,
                                            (jlong)status->last_instance_handle);
        saj_exceptionCheck(env);
    }
    return rc;
}
Пример #7
0
saj_returnCode
saj_timeCopyIn(
    JNIEnv *env,
    jobject src,
    gapi_time_t *dst)
{
    assert (src);
    assert (dst);

    dst->sec = (*env)->GetIntField(env, src, GET_CACHED(time_t_sec_fid));
    saj_exceptionCheck(env);
    dst->nanosec = (*env)->GetIntField(env, src, GET_CACHED(time_t_nanosec_fid));
    saj_exceptionCheck(env);

    return SAJ_RETCODE_OK;
}
Пример #8
0
/**
 * Class:     org_opensplice_dds_dcps_TopicImpl
 * Method:    jniGetAllDataDisposedTopicStatus
 * Signature: ()LDDS/AllDataDisposedTopicStatus;
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetAllDataDisposedTopicStatus)(
    JNIEnv *env, 
    jobject jtopic,
    jobject jstatusHolder)
{
    gapi_topic topic;
    jobject jstatus;
    gapi_allDataDisposedTopicStatus status;
    saj_returnCode rc;
    gapi_returnCode_t result;
    
    if(jstatusHolder){
        topic = (gapi_topic) saj_read_gapi_address(env, jtopic);
        result = gapi_topic_get_all_data_disposed_topic_status(topic, &status);
        
        if(result == GAPI_RETCODE_OK){
            rc = saj_statusCopyOutAllDataDisposedTopicStatus(env, &status, &jstatus);
            
            if(rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jstatusHolder, 
                            GET_CACHED(allDataDisposedTopicStatusHolder_value_fid), jstatus);
                (*env)->DeleteLocalRef(env, jstatus);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #9
0
saj_returnCode
saj_LookupTypeSupportConstructorSignature(
    JNIEnv* env,
    jobject jtypeSupport,
    gapi_char** result)
{
    jfieldID fid;
    jstring jresult;
    saj_returnCode rc;
    const char* data;

    rc = SAJ_RETCODE_ERROR;

    if(jtypeSupport != NULL)
    {
        fid = GET_CACHED(typeSupportConstructorSignature_fid);

        if(fid != NULL)
        {
            jresult = (jstring)((*env)->GetObjectField(env, jtypeSupport, fid));
            saj_exceptionCheck(env);

            if(jresult != NULL){
                data = (*env)->GetStringUTFChars(env, jresult, 0);
                saj_exceptionCheck(env);
                *result = gapi_string_dup(data);
                (*env)->ReleaseStringUTFChars(env, jresult, data);
                saj_exceptionCheck(env);
            }
            rc = SAJ_RETCODE_OK;
        }
    }
    return rc;
}
Пример #10
0
/**
 * Class:     org_opensplice_dds_dcps_DataReaderViewImpl
 * Method:    jniGetQos
 * Signature: (LDDS/DataReaderViewQosHolder;)V
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetQos)(
    JNIEnv *env,
    jobject jdataReaderView,
    jobject jqosHolder)
{
    gapi_dataReaderViewQos* qos;
    gapi_returnCode_t result;
    saj_returnCode rc;
    jobject jqos;
    gapi_dataReaderView dataReaderView;

    if(jqosHolder != NULL){
        dataReaderView = (gapi_dataReaderView)saj_read_gapi_address(env, jdataReaderView);
        jqos = NULL;
        qos = gapi_dataReaderViewQos__alloc();
        result = gapi_dataReaderView_get_qos(dataReaderView, qos);

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

            if(rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jqosHolder,
                        GET_CACHED(dataReaderViewQosHolder_value_fid), jqos);
                (*env)->DeleteLocalRef(env, jqos);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #11
0
saj_returnCode
saj_statusCopyOutQosPolicyCountSeq(
    JNIEnv *env,
    gapi_qosPolicyCountSeq *src,
    jobjectArray* dst)
{
    saj_returnCode rc; 
    jclass cls;
    unsigned int i;
    jobject jcount;
    
    rc = SAJ_RETCODE_OK;
    assert(dst != NULL);

    cls = GET_CACHED(qosPolicyCount_class);
    *dst = (*env)->NewObjectArray(env, src->_length, cls, NULL);
    saj_exceptionCheck(env);
    

    for(i=0; (i<src->_length) && (rc == SAJ_RETCODE_OK); i++){
        rc = saj_statusCopyOutQosPolicyCount(env, 
                                    &src->_buffer[i], 
                                    &jcount);
        (*env)->SetObjectArrayElement(env, *dst, (jsize)i, jcount);
        saj_exceptionCheck(env);
        (*env)->DeleteLocalRef(env, jcount);
        saj_exceptionCheck(env);
    }    
    return rc;
}
Пример #12
0
void
saj_topicListenerOnInconsistentTopic(
    void* listenerData, 
    gapi_topic topic,
    const gapi_inconsistentTopicStatus *status)
{
    saj_listenerData ld;
    JNIEnv *env;
    jobject jstatus;
    jobject jtopic;
    saj_returnCode rc;
    
    ld = saj_listenerData(listenerData);
    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);
    
    rc = saj_statusCopyOutInconsistentTopicStatus(env, 
                        (gapi_inconsistentTopicStatus *)status, &jstatus);
    
    if(rc == SAJ_RETCODE_OK){
        jtopic = saj_read_java_address(topic);
        (*env)->CallVoidMethod(
                            env, ld->jlistener, 
                            GET_CACHED(listener_onInconsistentTopic_mid), 
                            jtopic, jstatus);
    }

}
Пример #13
0
/**
 * Class:     org_opensplice_dds_dcps_PublisherImpl
 * Method:    jniGetDefaultDatawriterQos
 * Signature: (LDDS/DataWriterQosHolder;)V
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetDefaultDatawriterQos)(
    JNIEnv *env,
    jobject jpublisher,
    jobject jqosHolder)
{
    saj_returnCode rc;
    gapi_returnCode_t result;
    jobject jqos;
    gapi_publisher publisher;
    gapi_dataWriterQos *qos;
    
    jqos = NULL;
    
    if(jqosHolder != NULL){
        qos = gapi_dataWriterQos__alloc();
        publisher = (gapi_publisher)saj_read_gapi_address(env, jpublisher);
        result = gapi_publisher_get_default_datawriter_qos(publisher, qos); 
        
        if(result == GAPI_RETCODE_OK){
            rc = saj_DataWriterQosCopyOut(env, qos, &jqos);
            gapi_free(qos);
        
            if (rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jqosHolder, 
                                       GET_CACHED(dataWriterQosHolder_value_fid), jqos);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #14
0
void
saj_dataReaderListenerOnRequestedIncompatibleQos(
    void* listenerData,
    gapi_dataReader dataReader,
    const gapi_requestedIncompatibleQosStatus* status)
{
    saj_listenerData ld;
    JNIEnv *env;
    jobject jstatus;
    jobject jdataReader;
    saj_returnCode rc;

    ld = saj_listenerData(listenerData);
    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);

    rc = saj_statusCopyOutRequestedIncompatibleQosStatus(env,
            (gapi_requestedIncompatibleQosStatus *)status,
            &jstatus);

    if(rc == SAJ_RETCODE_OK) {
        jdataReader = saj_read_java_address(dataReader);
        (*env)->CallVoidMethod(env, ld->jlistener,
                               GET_CACHED(listener_onRequestedIncompatibleQos_mid),
                               jdataReader, jstatus);
    }
}
Пример #15
0
/**
 * Class:     org_opensplice_dds_dcps_DataWriterImpl
 * Method:    jniGetOfferedIncompatibleQosStatus
 * Signature: ()LDDS/OfferedIncompatibleQosStatus;
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetOfferedIncompatibleQosStatus)(
    JNIEnv *env,
    jobject jdataWriter,
    jobject jstatusHolder)
{
    gapi_dataWriter dataWriter;
    jobject jstatus;
    gapi_offeredIncompatibleQosStatus* status;
    saj_returnCode rc;
    gapi_returnCode_t result;

    if(jstatusHolder){
        dataWriter = (gapi_dataWriter) saj_read_gapi_address(env, jdataWriter);
        status = gapi_offeredIncompatibleQosStatus_alloc();
        result = gapi_dataWriter_get_offered_incompatible_qos_status(dataWriter, status);

        if(result == GAPI_RETCODE_OK){
            rc = saj_statusCopyOutOfferedIncompatibleQosStatus(env, status, &jstatus);

            if(rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jstatusHolder,
                            GET_CACHED(offeredIncompatibleQosStatusHolder_value_fid), jstatus);
                (*env)->DeleteLocalRef(env, jstatus);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
        gapi_free(status);
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #16
0
/**
 * Class:     org_opensplice_dds_dcps_DataWriterImpl
 * Method:    jniGetPublicationMatchStatus
 * Signature: ()LDDS/PublicationMatchStatus;
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetPublicationMatchedStatus)(
    JNIEnv *env,
    jobject jdataWriter,
    jobject jstatusHolder)
{
    gapi_dataWriter dataWriter;
    jobject jstatus;
    gapi_publicationMatchedStatus status;
    saj_returnCode rc;
    gapi_returnCode_t result;

    if(jstatusHolder){
        dataWriter = (gapi_dataWriter) saj_read_gapi_address(env, jdataWriter);
        result = gapi_dataWriter_get_publication_matched_status(dataWriter, &status);

        if(result == GAPI_RETCODE_OK){
            rc = saj_statusCopyOutPublicationMatchStatus(env, &status, &jstatus);

            if(rc == SAJ_RETCODE_OK){
                (*env)->SetObjectField(env, jstatusHolder,
                            GET_CACHED(publicationMatchedStatusHolder_value_fid), jstatus);
                (*env)->DeleteLocalRef(env, jstatus);
            } else {
                result = GAPI_RETCODE_ERROR;
            }
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #17
0
saj_returnCode
saj_statusCopyOutSampleRejectedStatusKind(
    JNIEnv *env,
    gapi_sampleRejectedStatusKind kind,
    jobject *jkind)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(sampleRejectedStatusKind_class);
    mid = GET_CACHED(sampleRejectedStatusKind_fromInt_mid);
    
    *jkind = (*env)->CallStaticObjectMethod(env, cls, mid, (jint)kind);
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #18
0
saj_returnCode
saj_statusCopyOutInconsistentTopicStatus(
    JNIEnv *env,
    gapi_inconsistentTopicStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(inconsistentTopicStatus_class);
    mid = GET_CACHED(inconsistentTopicStatus_constructor_mid);
    
    *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->total_count, 
                                            (jint)status->total_count_change);
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #19
0
saj_returnCode
saj_statusCopyOutQosPolicyCount(
    JNIEnv *env,
    gapi_qosPolicyCount* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(qosPolicyCount_class);
    mid = GET_CACHED(qosPolicyCount_constructor_mid);
    
    *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->policy_id, 
                                            (jint)status->count);
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #20
0
/**
 * Class:     DDS_WaitSet
 * Method:    jniWait
 * Signature: (LDDS/ConditionSeqHolder;LDDS/Duration_t;)I
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniWait)(
    JNIEnv *env,
    jobject jwaitSet,
    jobject jseqHolder,
    jobject jduration)
{
    gapi_waitSet waitSet;
    gapi_conditionSeq *conditionSeq;
    gapi_duration_t duration;
    jobjectArray jConditionSeq;
    saj_returnCode rc;
    gapi_returnCode_t result;
    
    if(jseqHolder != NULL){
        jConditionSeq = NULL;
        waitSet = (gapi_waitSet) saj_read_gapi_address(env, jwaitSet);
        rc = saj_durationCopyIn(env, jduration, &duration);
        
        if(rc == SAJ_RETCODE_OK){
            conditionSeq = gapi_conditionSeq__alloc();
            
            if(conditionSeq){
                conditionSeq->_maximum = 0;
                conditionSeq->_length = 0;
                conditionSeq->_release = 0;
                conditionSeq->_buffer = NULL;
            
                result = gapi_waitSet_wait(waitSet, conditionSeq, &duration);

                if((result == GAPI_RETCODE_OK) || (result == GAPI_RETCODE_TIMEOUT)){
                    rc = saj_LookupExistingConditionSeq(env, conditionSeq, &jConditionSeq);
                
                    if ( rc == SAJ_RETCODE_OK){
                        (*env)->SetObjectField(
                            env, 
                            jseqHolder,
                            GET_CACHED(conditionSeqHolder_value_fid),
                            jConditionSeq);
                    } else {
                        result = GAPI_RETCODE_ERROR;
                    }
                }
                gapi_free(conditionSeq);
            } else {
                result = GAPI_RETCODE_OUT_OF_RESOURCES;
            }
        } else {
            result = GAPI_RETCODE_ERROR;
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #21
0
saj_returnCode
saj_statusCopyOutOfferedDeadlineMissedStatus(
    JNIEnv *env,
    gapi_offeredDeadlineMissedStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(offeredDeadlineMissedStatus_class);
    mid = GET_CACHED(offeredDeadlineMissedStatus_constructor_mid);
    
    *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->total_count, 
                                            (jint)status->total_count_change,
                                            (jlong)status->last_instance_handle);
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #22
0
saj_returnCode
saj_durationCopyIn(
    JNIEnv *env,
    jobject javaDuration,
    gapi_duration_t *out)
{
    saj_returnCode rc;

    assert(out != NULL);

    rc = SAJ_RETCODE_OK;

    if(javaDuration != NULL){
        out->sec = (*env)->GetIntField(env, javaDuration, GET_CACHED(duration_t_sec_fid));
        saj_exceptionCheck(env);
        out->nanosec = (*env)->GetIntField(env, javaDuration, GET_CACHED(duration_t_nanosec_fid));
        saj_exceptionCheck(env);
    }

    return rc;
}
Пример #23
0
saj_returnCode
saj_statusCopyOutSubscriptionMatchStatus(
    JNIEnv *env,
    gapi_subscriptionMatchedStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(subscriptionMatchStatus_class);
    mid = GET_CACHED(subscriptionMatchStatus_constructor_mid);
    
    *jstatus = (*env)->NewObject(env, cls, mid, 
                                            (jint)status->total_count, 
                                            (jint)status->total_count_change,
                                            (jint)status->current_count, 
                                            (jint)status->current_count_change,
                                            (jlong)status->last_publication_handle);
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #24
0
saj_returnCode
saj_statusCopyOutLivelinessChangedStatus(
    JNIEnv *env,
    gapi_livelinessChangedStatus* status,
    jobject* jstatus)
{
    jclass cls;
    jmethodID mid;
    
    cls = GET_CACHED(livelinessChangedStatus_class);
    mid = GET_CACHED(livelinessChangedStatus_constructor_mid);
    
    *jstatus = (*env)->NewObject(env, cls, mid, 
                                        (jint)status->alive_count, 
                                        (jint)status->not_alive_count,
                                        (jint)status->alive_count_change,
                                        (jint)status->not_alive_count_change,
                                        (jlong)status->last_publication_handle);
    
    saj_exceptionCheck(env);
    
    return SAJ_RETCODE_OK;
}
Пример #25
0
void
saj_write_gapi_address(
    JNIEnv *env,
	jobject java_object,
	PA_ADDRCAST address)
{
    saj_returnCode rc;

    if(java_object != NULL){
        rc = checkJavaObject(env, java_object);

        if( rc == SAJ_RETCODE_OK){
            if (GET_CACHED(sajSuperClassGapiPeer_fid) == NULL) {
                SET_CACHED(sajSuperClassGapiPeer_fid, (*env)->GetFieldID(env, GET_CACHED(gapiSuperClass_class),
    				       "gapiPeer",
    				       "J"));
                saj_exceptionCheck(env);
            }
        	/* write value to java object */
        	(*env)->SetLongField(env, java_object, GET_CACHED(sajSuperClassGapiPeer_fid), address);
            saj_exceptionCheck(env);
        }
    }
}
Пример #26
0
/**
 * Class:     DDS_WaitSet
 * Method:    jniGetConditions
 * Signature: (LDDS/ConditionSeqHolder;)I
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetConditions)(
    JNIEnv *env,
    jobject jwaitSet,
    jobject jseqHolder)
{
    gapi_waitSet waitSet;
    gapi_conditionSeq *seq;
    jobjectArray jSeq;
    saj_returnCode rc;
    gapi_returnCode_t result;
    
    if(jseqHolder != NULL){
        waitSet = (gapi_waitSet) saj_read_gapi_address(env, jwaitSet);
        seq = gapi_conditionSeq__alloc();
            
        if(seq){
            seq->_maximum = 0;
            seq->_length = 0;
            seq->_release = 0;
            seq->_buffer = NULL;
            
            result = gapi_waitSet_get_conditions(waitSet, seq);
            
            if (result == GAPI_RETCODE_OK){
                rc = saj_LookupExistingConditionSeq(env, seq, &jSeq);
                
                if (rc == SAJ_RETCODE_OK){
                    (*env)->SetObjectField(
                        env, 
                        jseqHolder,
                        GET_CACHED(conditionSeqHolder_value_fid),
                        jSeq
                    );
                } else {
                    result = GAPI_RETCODE_ERROR;
                }
            }
            gapi_free(seq);
        } else {
            result = GAPI_RETCODE_OUT_OF_RESOURCES;
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}
Пример #27
0
void
saj_dataReaderListenerOnDataAvailable(
    void* listenerData,
    gapi_dataReader dataReader)
{
    saj_listenerData ld;
    JNIEnv *env;
    jobject jdataReader;

    ld = saj_listenerData(listenerData);
    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);

    jdataReader = saj_read_java_address(dataReader);
    (*env)->CallVoidMethod(env, ld->jlistener,
                           GET_CACHED(listener_onDataAvailable_mid),
                           jdataReader);
}
Пример #28
0
void
saj_extTopicListenerOnAllDataDisposed(
    void* listenerData, 
    gapi_topic topic)
{
    saj_listenerData ld;
    JNIEnv *env;
    jobject jtopic;
    
    ld = saj_listenerData(listenerData);
    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);
    
    jtopic = saj_read_java_address(topic);
    (*env)->CallVoidMethod(env, ld->jlistener, 
                                GET_CACHED(listener_onAllDataDisposed_mid), 
                                jtopic);
}
Пример #29
0
/**
 * Class:     org_opensplice_dds_dcps_SubscriberImpl
 * Method:    jniGetDatareaders
 * Signature: (LDDS/DataReaderSeqHolder;III)I
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetDatareaders)(
    JNIEnv *env,
    jobject jsubscriber,
    jobject jseqHolder,
    jint jsampleStates,
    jint jviewStates,
    jint jinstanceStates)
{
    gapi_subscriber subscriber;
    gapi_returnCode_t grc;
    gapi_dataReaderSeq *readerSeq;
    saj_returnCode rc;
    jobjectArray jreaderSeq;
    jint jresult;

    if(jseqHolder != NULL){
        readerSeq = gapi_dataReaderSeq__alloc();
        if (readerSeq)
        {
            subscriber = (gapi_subscriber)saj_read_gapi_address(env, jsubscriber);
            grc = gapi_subscriber_get_datareaders(subscriber, readerSeq,
                                        (const gapi_sampleStateMask)jsampleStates,
                                        (const gapi_viewStateMask)jviewStates,
                                        (const gapi_instanceStateMask)jinstanceStates);

            if(grc == GAPI_RETCODE_OK){
                rc = saj_LookupExistingDataReaderSeq(env, readerSeq, &jreaderSeq);

                if(rc == SAJ_RETCODE_OK){
                    (*env)->SetObjectField(env, jseqHolder,
                                GET_CACHED(dataReaderSeqHolder_value_fid), jreaderSeq);
                }
                gapi_free(readerSeq);
            }
            jresult = (jint)grc;
        } else {
            jresult = (jint)GAPI_RETCODE_OUT_OF_RESOURCES;
        }
    } else {
        jresult = (jint)GAPI_RETCODE_BAD_PARAMETER;
    }
    return jresult;
}
Пример #30
0
/**
 * Class:     org_opensplice_dds_dcps_MultiTopicImpl
 * Method:    jniGetExpressionParameters
 * Signature: ()[Ljava/lang/String;
 */
JNIEXPORT jint JNICALL
SAJ_FUNCTION(jniGetExpressionParameters)(
    JNIEnv *env,
    jobject jmultiTopic,
    jobject jseqHolder)
{
    gapi_multiTopic multiTopic;
    gapi_stringSeq *seq;
    jobjectArray jseq;
    saj_returnCode rc;
    gapi_returnCode_t result;
    
    if(jseqHolder){
        multiTopic = (gapi_multiTopic) saj_read_gapi_address(env, jmultiTopic);
        seq = gapi_stringSeq__alloc();
        
        if(seq){
            seq->_maximum = 0;
            seq->_length = 0;
            seq->_release = 0;
            seq->_buffer = NULL;
            
            result = gapi_multiTopic_get_expression_parameters(multiTopic, seq);
            
            if(result == GAPI_RETCODE_OK){
                rc = saj_stringSequenceCopyOut(env, *seq, &jseq);
                
                if(rc == SAJ_RETCODE_OK){        
                    (*env)->SetObjectField(env, jseqHolder, GET_CACHED(stringSeqHolder_stringSeq_fid), jseq);
                    (*env)->DeleteLocalRef(env, jseq);
                } else {
                    result = GAPI_RETCODE_ERROR;
                }
            }
            gapi_free(seq);
        } else {
            result = GAPI_RETCODE_OUT_OF_RESOURCES;
        }
    } else {
        result = GAPI_RETCODE_BAD_PARAMETER;
    }
    return (jint)result;
}