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; }
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); }
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; }
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; }
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; }
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; }