예제 #1
0
jni_result
jni_writerWrite(
    jni_writer wri,
    const c_char* xmlUserData)
{

    jni_result r;
    jni_writerCopyArg copyArg;
    sd_validationResult valResult;
    
    if( (wri == NULL) || (xmlUserData == NULL) || (wri->uwriter == NULL) || (xmlUserData == NULL)){
        r = JNI_RESULT_BAD_PARAMETER;
    } 
    else{
        copyArg = os_malloc(C_SIZEOF(jni_writerCopyArg));
        copyArg->writer = wri;
        copyArg->xmlData = xmlUserData;
        
        r = jni_convertResult(u_writerWrite(wri->uwriter,
                                            copyArg,
                                            u_timeGet(),
                                            U_INSTANCEHANDLE_NIL));
        valResult = sd_serializerLastValidationResult(wri->deserializer);
        
        if(valResult != SD_VAL_SUCCESS){
            OS_REPORT_2(OS_ERROR, CONT_DCPSJNI, 0, 
                        "Write of userdata failed.\nReason: %s\nError: %s\n",
                        sd_serializerLastValidationMessage(wri->deserializer),
                        sd_serializerLastValidationLocation(wri->deserializer));           
            r = JNI_RESULT_ERROR;
        }
        os_free(copyArg);
    }
    return r;
}
예제 #2
0
jni_result
jni_nameServiceFree()
{
    u_result r;
    jni_mapping mapping;
    r = U_RESULT_OK;
    
    if(ns != NULL){
        ns->refCount--;
        
        if(ns->refCount == 0){
           mapping = jni_mapping(c_iterTakeFirst(mappings));

            while(mapping != NULL){
                os_free(mapping->uri);
                os_free(mapping);
                mapping = jni_mapping(c_iterTakeFirst(mappings));        
            }
            c_iterFree(mappings);
            os_free(ns);
            ns = NULL;
            r = u_userDetach();
        } else{
            r = U_RESULT_OK;
        }
    } else{
      r = U_RESULT_NOT_INITIALISED;
    }
    return jni_convertResult(r);
}
예제 #3
0
jni_result
jni_participantFree(
    jni_participant p)
{
    jni_result r;
    jni_partition partition;
    
    r = JNI_RESULT_OK;
    
    if(p != NULL){
        if((p->publishers != NULL) && (c_iterLength(p->publishers) != 0)){
            r = JNI_RESULT_PRECONDITION_NOT_MET;
        }
        else if((p->subscribers != NULL) && (c_iterLength(p->subscribers) != 0)){
            r = JNI_RESULT_PRECONDITION_NOT_MET;
        }
        else if((p->topics != NULL) && (c_iterLength(p->topics) != 0)){
            r = JNI_RESULT_PRECONDITION_NOT_MET;
        }
        else if((p->partitions != NULL) && (c_iterLength(p->partitions) != 0)){
            partition = jni_partition(c_iterTakeFirst(p->partitions));
            
            while((partition != NULL) && (r == JNI_RESULT_OK)){
                r = jni_partitionFree(partition);
                partition = jni_partition(c_iterTakeFirst(p->partitions));
            }
        }
        else{
          /*DO NOTHING.*/
        }
        
        if(r == JNI_RESULT_OK){
            if(p->publishers != NULL){
                c_iterFree(p->publishers);
            }
            if(p->subscribers != NULL){
                c_iterFree(p->subscribers);
            }
            if(p->topics != NULL){
                c_iterFree(p->topics);
            }
            if(p->partitions != NULL){
                c_iterFree(p->partitions);
            }
            if(p->uparticipant != NULL){
                r = jni_convertResult(u_participantFree(p->uparticipant));
            }
            else{
                r = JNI_RESULT_OK;
            }
            os_free(p);
        }        
    }
    else{
        r = JNI_RESULT_BAD_PARAMETER;
    }
    return r;
}
예제 #4
0
jni_result
jni_writerFree( 
    jni_writer wri)
{
    jni_result r;
    
    if(wri != NULL){
        r = jni_convertResult(u_writerFree(wri->uwriter));
        sd_serializerFree(wri->deserializer);
        os_free(wri);
    }
    else{
        r = JNI_RESULT_BAD_PARAMETER;
    }
    return r;
}
예제 #5
0
jni_result
jni_partitionFree(
    jni_partition _this)
{
    jni_result r;
    
    r = JNI_RESULT_OK;
    
    if((_this == NULL) || (_this->upartition == NULL)){
        OS_REPORT(OS_ERROR, CONT_DCPSJNI, 0, "Supplied partition is NULL"); 
        r = JNI_RESULT_BAD_PARAMETER;
    }
    else{
        r = jni_convertResult(u_partitionFree(_this->upartition));
        
        if(r == JNI_RESULT_OK){            
            os_free(_this);
        }
    }
    return r;
}
예제 #6
0
jni_result
jni_topicFree(
    jni_topic topic)
{
    jni_result r;
    
    if(topic != NULL){
        r = jni_convertResult(u_topicFree(topic->utopic));
        os_free(jni_topicDescription(topic)->name);
        os_free(jni_topicDescription(topic)->typeName);
        
        if(jni_topicDescription(topic)->keyList != NULL){
            os_free(jni_topicDescription(topic)->keyList);
        }
        os_free(topic);
    }
    else{
        r = JNI_RESULT_BAD_PARAMETER;
    }
    return r;
}