/************************************************************************** * FUNCTION: JNU_CallbackResponse_initIDs_FromClass_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ static jboolean JNU_CallbackResponse_initIDs_FromClass_OK(JNIEnv *jniEnv, jclass enumCallbackResponse) { _TRACE2 ("NATIVE: Executing JNU_CallbackResponse_initIDs_FromClass_OK(..)\n"); /* get field IDs */ FID_CR_value = (*jniEnv)->GetFieldID(jniEnv, enumCallbackResponse, "value", "I"); if (FID_CR_value == NULL) { _TRACE2("NATIVE ERROR: FID_CR_value is NULL\n"); return JNI_FALSE; /* EXIT POINT! */ } _TRACE2 ("NATIVE: JNU_CallbackResponse_initIDs_FromClass_OK(...) returning normally\n"); return JNI_TRUE; }
/************************************************************************** * FUNCTION: U_printSaClusterNotificationBuffer_4 * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaClusterNotificationBuffer_4(const char *msg, const SaClmClusterNotificationBufferT_4 *saClusterNotificationBufferPtr) { // VARIABLES int _idx; // BODY _TRACE_INLINE("%s", msg); _TRACE2("NATIVE: \tAddress of saClusterNotificationBuffer:%p:\n", saClusterNotificationBufferPtr); _TRACE2("NATIVE: \t viewNumber:%lu\n", (unsigned long)saClusterNotificationBufferPtr->viewNumber); _TRACE2("NATIVE: \t numberOfItems:%u\n", (unsigned int)saClusterNotificationBufferPtr->numberOfItems); _TRACE2("NATIVE: \t notification: %p\n", saClusterNotificationBufferPtr->notification); // TODO should be some sensible error handling for invalid numberOfItems values... for (_idx = 0; _idx < saClusterNotificationBufferPtr->numberOfItems; _idx++) { _TRACE2("NATIVE: \t notification[%d]:\n", _idx); U_printSaClusterNotification_4("", & (saClusterNotificationBufferPtr-> notification[_idx])); } }
/************************************************************************** * FUNCTION: JNU_CsiManager_initIDs_FromClass_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ static jboolean JNU_CsiManager_initIDs_FromClass_OK(JNIEnv *jniEnv, jclass classCsiManager) { // BODY _TRACE2("NATIVE: Executing JNU_CsiManager_initIDs_FromClass_OK(...)\n"); // get field IDs FID_amfLibraryHandle = (*jniEnv)->GetFieldID(jniEnv, classCsiManager, "amfLibraryHandle", "Lorg/saforum/ais/amf/AmfHandle;"); if (FID_amfLibraryHandle == NULL) { _TRACE2("NATIVE ERROR: FID_amfLibraryHandle is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } _TRACE2 ("NATIVE: JNU_CsiManager_initIDs_FromClass_OK(...) returning normally\n"); return JNI_TRUE; }
/************************************************************************** * FUNCTION: JNU_copyFromStringToSaNameT_NotNull * TYPE: internal function * OVERVIEW: copies the content of the specified String object to * the specified SaNameT parameter. * INTERFACE: * parameters: * fromStr [in] * - the source Java string. It must not be null. * If longer than SA_MAX_NAME_LENGTH, AisInvalidParamException is thrown. * toSaNamePtr [in/out] * - a pointer to the SaNameT structure into which * the content of the source Java string is copied. * * returns: JNI_TRUE if the copy operation succeeded. * If JNI_FALSE, then there is a pending Java exception. * NOTE: *************************************************************************/ jboolean JNU_copyFromStringToSaNameT_NotNull(JNIEnv *jniEnv, jstring fromStr, SaNameT *toSaNamePtr) { // VARIABLES jsize _strLen; // BODY assert(fromStr != NULL); assert(toSaNamePtr != NULL); _TRACE2("NATIVE: Executing JNU_copyFromStringToSaNameT_NotNull(...)\n"); // check if string is not too long _strLen = (*jniEnv)->GetStringUTFLength(jniEnv, fromStr); if (_strLen > SA_MAX_NAME_LENGTH) { _TRACE2("NATIVE ERROR: fromStr is too long %d\n", _strLen); JNU_throwNewByName(jniEnv, "ais/AisInvalidParamException", AIS_ERR_INVALID_PARAM_MSG); return JNI_FALSE; } // copy string content toSaNamePtr->length = (SaUint16T)_strLen; (*jniEnv)->GetStringUTFRegion(jniEnv, fromStr, (jsize)0, (*jniEnv)->GetStringLength(jniEnv, fromStr), (char *)toSaNamePtr->value); assert((*jniEnv)->ExceptionCheck(jniEnv) == JNI_FALSE); _TRACE2 ("NATIVE: JNU_copyFromStringToSaNameT(...) returning normally\n"); return JNI_TRUE; }
/************************************************************************** * FUNCTION: JNU_TrackFlags_initIDs_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ jboolean JNU_TrackFlags_initIDs_OK(JNIEnv *jniEnv) { // BODY _TRACE2("NATIVE: Executing JNU_TrackFlags_initIDs_OK(...)\n"); // get TrackFlags class & create a global reference right away /* EnumTrackFlags = (*jniEnv)->NewGlobalRef( jniEnv, (*jniEnv)->FindClass( jniEnv, "org/saforum/ais/TrackFlags" ) ); */ EnumTrackFlags = JNU_GetGlobalClassRef(jniEnv, "org/saforum/ais/TrackFlags"); if (EnumTrackFlags == NULL) { _TRACE2("NATIVE ERROR: EnumTrackFlags is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } // get IDs return JNU_TrackFlags_initIDs_FromClass_OK(jniEnv, EnumTrackFlags); }
/************************************************************************** * FUNCTION: JNU_GetGlobalClassRef * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: a global class reference for the specified class, or NULL *************************************************************************/ jclass JNU_GetGlobalClassRef(JNIEnv *jniEnv, const char *className) { // VARIABLES // jni jclass _cls; jclass _globalCls; // BODY #ifndef NDEBUG _TRACE2("NATIVE: Executing JNU_GetGlobalClassRef(...,%s)\n", className); #endif // NDEBUG _cls = (*jniEnv)->FindClass(jniEnv, className); if (_cls == NULL) { #ifndef NDEBUG _TRACE2("NATIVE ERROR: FindClass() returned NULL!\n"); JNU_ExceptionDescribeDoNotClear(jniEnv); #endif // NDEBUG return NULL; // EXIT POINT! Exception pending... } _globalCls = (*jniEnv)->NewGlobalRef(jniEnv, _cls); if (_globalCls == NULL) { #ifndef NDEBUG _TRACE2("NATIVE ERROR: NewGlobalRef() returned NULL\n"); JNU_ExceptionDescribeDoNotClear(jniEnv); #endif // NDEBUG return NULL; // EXIT POINT! Exception pending... } return _globalCls; }
/************************************************************************** * FUNCTION: U_printSaAmfCSIAttributeList * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaAmfCSIAttributeList(const char *msg, const SaAmfCSIAttributeListT *csiAttrListPtr) { unsigned int _idx; _TRACE_INLINE("%s (attr pointer: %p), (length: %u)\n", msg, (void *)csiAttrListPtr->attr, (unsigned int)csiAttrListPtr->number); // some error handling if (csiAttrListPtr->attr == NULL) { _TRACE2("WARNING: Pointer to attribute list NULL!!!\n"); return; } if (csiAttrListPtr->number > 32) { _TRACE2("WARNING: attribute list seems to be too long!!!\n"); return; } // print the attributes for (_idx = 0; _idx < csiAttrListPtr->number; _idx++) { _TRACE2("\t\tattribute[%u]: {%s/%s} \n", _idx, csiAttrListPtr->attr[_idx].attrName, csiAttrListPtr->attr[_idx].attrValue); } }
/************************************************************************** * FUNCTION: JNU_CsiManager_initIDs_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ jboolean JNU_CsiManager_initIDs_OK(JNIEnv *jniEnv) { // BODY _TRACE2("NATIVE: Executing JNU_CsiManager_initIDs_OK(...)\n"); // get CsiManager class & create a global reference right away /* ClassCsiManager = (*jniEnv)->NewGlobalRef( jniEnv, (*jniEnv)->FindClass( jniEnv, "org/opensaf/ais/amf/CsiManagerImpl" ) ); */ ClassCsiManager = JNU_GetGlobalClassRef(jniEnv, "org/opensaf/ais/amf/CsiManagerImpl"); if (ClassCsiManager == NULL) { _TRACE2("NATIVE ERROR: ClassCsiManager is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } // get IDs return JNU_CsiManager_initIDs_FromClass_OK(jniEnv, ClassCsiManager); }
/************************************************************************** * FUNCTION: JNU_throwNewByName * TYPE: internal function * OVERVIEW: Throws a newly created Exception specified by its class * name. The constructor taking a String parameter * (a message describing the cause of the Exception) * is used. * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void JNU_throwNewByName(JNIEnv *jniEnv, const char *className, const char *msg) { // BODY _TRACE2("NATIVE: Executing JNU_ThrowNewByName(...)\n"); jclass _class = (*jniEnv)->FindClass(jniEnv, className); if (_class != NULL) { (*jniEnv)->ThrowNew(jniEnv, _class, msg); _TRACE2("NATIVE: Throwing %s (with message: >>%s<<)\n", className, msg); } (*jniEnv)->DeleteLocalRef(jniEnv, _class); }
/************************************************************************** * FUNCTION: JNU_newStringFromSaNameT * TYPE: internal function * OVERVIEW: Creates a new String object from the specified * SaNameT parameter. * INTERFACE: * parameters: * saNamePtr [in] * The SaName to be stringified * returns: the newly created String * NOTE: *************************************************************************/ jstring JNU_newStringFromSaNameT(JNIEnv *jniEnv, const SaNameT *saNamePtr) { // BODY _TRACE2("NATIVE: Executing JNU_newStringFromSaNameT(...)\n"); SaUint8T _eValue[SA_MAX_NAME_LENGTH + 1]; memcpy(_eValue, saNamePtr->value, SA_MAX_NAME_LENGTH); _eValue[saNamePtr->length] = 0x00; _TRACE2("NATIVE: Creating a new String from %s\n", _eValue); return (*jniEnv)->NewStringUTF(jniEnv, (char *)_eValue); }
/************************************************************************** * FUNCTION: U_printSaClusterNotification_4 * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaClusterNotification_4(const char *msg, const SaClmClusterNotificationT_4 *saClusterNotificationPtr) { // BODY _TRACE_INLINE("%s", msg); _TRACE2("NATIVE: \t\t(Address of saClusterNotification:%p:)\n", saClusterNotificationPtr); _TRACE2("NATIVE: \t\t clusterChange:%u\n", saClusterNotificationPtr->clusterChange); U_printSaClusterNode_4("NATIVE: \t\t clusterNode\n", &(saClusterNotificationPtr->clusterNode)); }
/************************************************************************** * FUNCTION: JNU_jByteArray_unlink * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none *************************************************************************/ void JNU_jByteArray_unlink(JNIEnv *jniEnv, jbyteArray byteArray, void *saBuffer) { // BODY #ifndef NDEBUG assert(byteArray != NULL); assert(saBuffer != NULL); _TRACE2("NATIVE: Executing JNU_jByteArray_unlink(...)\n"); #endif // NDEBUG (*jniEnv)->ReleaseByteArrayElements(jniEnv, byteArray, saBuffer, 0); #ifndef NDEBUG _TRACE2("NATIVE: JNU_jByteArray_unlink(...) returning normally\n"); #endif // NDEBUG return; }
/************************************************************************** * FUNCTION: U_printSaCheckpointDescriptor * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaCheckpointDescriptor(const char *msg, const SaCkptCheckpointDescriptorT *saCheckpointDescriptorPtr) { // BODY _TRACE_INLINE("%s", msg); _TRACE2("NATIVE: \t\t(Address of saCheckpointDescriptor:%p:)\n", saCheckpointDescriptorPtr); _TRACE2("NATIVE: \t\t numberOfSections:%u\n", (unsigned int)saCheckpointDescriptorPtr->numberOfSections); _TRACE2("NATIVE: \t\t memoryUsed:%lu\n", (unsigned long)saCheckpointDescriptorPtr->memoryUsed); U_printSaCheckpointCreationAttributes ("NATIVE: \t\t checkpointCreationAttributes\n", &(saCheckpointDescriptorPtr->checkpointCreationAttributes)); }
/************************************************************************** * FUNCTION: U_printSaClusterNode_4 * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaClusterNode_4(const char *msg, const SaClmClusterNodeT_4 *saClusterNodePtr) { // BODY _TRACE_INLINE("%s", msg); _TRACE2("NATIVE: \t\t\tnodeId:%u\n", (unsigned int)saClusterNodePtr->nodeId); U_printSaNodeAddress("NATIVE: \t\t\tnodeAddress: ", &(saClusterNodePtr->nodeAddress)); U_printSaName("NATIVE: \t\t\tnodeName: ", &(saClusterNodePtr->nodeName)); _TRACE2("NATIVE: \t\t\tmember: %d\n", saClusterNodePtr->member); _TRACE2("NATIVE: \t\t\tbootTimestamp:%lu\n", (unsigned long)saClusterNodePtr->bootTimestamp); _TRACE2("NATIVE: \t\t\tinitialViewNumber:%lu\n", (unsigned long)saClusterNodePtr->initialViewNumber); }
/************************************************************************** * FUNCTION: JNU_Version_initIDs_FromClass_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ static jboolean JNU_Version_initIDs_FromClass_OK(JNIEnv *jniEnv, jclass classVersion) { // BODY _TRACE2("NATIVE: Executing JNU_Version_initIDs_FromClass_OK(...)\n"); // get field IDs FID_releaseCode = (*jniEnv)->GetFieldID(jniEnv, classVersion, "releaseCode", "C"); if (FID_releaseCode == NULL) { _TRACE2("NATIVE ERROR: FID_releaseCode is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } FID_majorVersion = (*jniEnv)->GetFieldID(jniEnv, classVersion, "majorVersion", "S"); if (FID_majorVersion == NULL) { _TRACE2("NATIVE: FID_majorVersion is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } FID_minorVersion = (*jniEnv)->GetFieldID(jniEnv, classVersion, "minorVersion", "S"); if (FID_minorVersion == NULL) { _TRACE2("NATIVE: FID_minorVersion is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } CID_Version_constructor = (*jniEnv)->GetMethodID(jniEnv, classVersion, "<init>", "(CSS)V"); _TRACE2 ("NATIVE: JNU_Version_initIDs_FromClass_OK(...) returning normally\n"); return JNI_TRUE; }
/************************************************************************** * FUNCTION: U_printSaAmfCSIFlags * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaAmfCSIFlags(const char *msg, const SaAmfCSIFlagsT csiFlags) { _TRACE_INLINE("%s", msg); switch (csiFlags) { case SA_AMF_CSI_ADD_ONE: _TRACE2("CSI ADD ONE (%u)\n", (unsigned int)csiFlags); break; case SA_AMF_CSI_TARGET_ONE: _TRACE2("CSI TARGET ONE (%u)\n", (unsigned int)csiFlags); break; case SA_AMF_CSI_TARGET_ALL: _TRACE2("CSI TARGET ALL (%u)\n", (unsigned int)csiFlags); break; default: _TRACE2("CSI INVALID!!! (%u)\n", (unsigned int)csiFlags); break; } }
/************************************************************************** * FUNCTION: U_printSaAmfCSIStandbyDescriptor * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaAmfCSIStandbyDescriptor(const char *msg, const SaAmfCSIStandbyDescriptorT *standbyDescriptorPtr) { _TRACE_INLINE("%s", msg); U_printSaName("\t\tactiveCompName: ", &standbyDescriptorPtr->activeCompName); _TRACE2("\t\tstandbyRank: %u\n", (unsigned int)standbyDescriptorPtr->standbyRank); }
/************************************************************************** * FUNCTION: JNU_GetEnvForCallback * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_OK if a valid jniEnv pointer was returned, a negative value otherwise * NOTE: -> no exception is thrown! *************************************************************************/ jint JNU_GetEnvForCallback(JavaVM *vmPtr, JNIEnv **envPtrPtr) //jint JNU_GetEnvForCallback( JavaVM* vmPtr, void** envPtrPtr ) { // VARIABLES // jni jint _status; // BODY _TRACE2("NATIVE: Executing JNU_GetEnvForCallback(%p,...)\n", (void *)vmPtr); // get context _status = (*cachedJVM)->GetEnv(vmPtr, (void **)envPtrPtr, JNI_VERSION_1_2); if (_status != JNI_OK) { // TODO error handling _TRACE2("NATIVE ERROR: _status by GetEnv() is %d\n", _status); } return _status; }
/************************************************************************** * FUNCTION: U_printSaName * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaName(const char *msg, const SaNameT *saNamePtr) { _TRACE_INLINE("%s", msg); if (saNamePtr == NULL) { _TRACE2("NULL STRING \n"); return; // EXIT POINT!!! } _TRACE_INLINE("%.*s (length:%d)\n", saNamePtr->length, saNamePtr->value, saNamePtr->length); }
/************************************************************************** * FUNCTION: U_printSaAmfHAState * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaAmfHAState(const char *msg, const SaAmfHAStateT haState) { _TRACE_INLINE("%s", msg); switch (haState) { case SA_AMF_HA_ACTIVE: _TRACE2("HA ACTIVE (%d)\n", haState); break; case SA_AMF_HA_STANDBY: _TRACE2("HA STANDBY (%d)\n", haState); break; case SA_AMF_HA_QUIESCED: _TRACE2("HA QUIESCED (%d)\n", haState); break; case SA_AMF_HA_QUIESCING: _TRACE2("HA QUIESCING (%d)\n", haState); break; default: _TRACE2("HA INVALID!!! (%d)\n", haState); break; } }
/************************************************************************** * FUNCTION: JNU_ComponentRegistry_initIDs_FromClass_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ static jboolean JNU_ComponentRegistry_initIDs_FromClass_OK( JNIEnv* jniEnv, jclass classComponentRegistry ) { // BODY _TRACE2( "NATIVE: Executing JNU_ComponentRegistry_initIDs_FromClass_OK(...)\n" ); // get field IDs FID_amfLibraryHandle = (*jniEnv)->GetFieldID( jniEnv, classComponentRegistry, "amfLibraryHandle", "Lorg/saforum/ais/amf/AmfHandle;" ); if( FID_amfLibraryHandle == NULL ){ _TRACE2( "NATIVE ERROR: FID_amfLibraryHandle is NULL\n" ); return JNI_FALSE; // EXIT POINT! Exception pending... } FID_componentName = (*jniEnv)->GetFieldID( jniEnv, classComponentRegistry, "componentName", "Ljava/lang/String;" ); if( FID_componentName == NULL ){ _TRACE2( "NATIVE ERROR: FID_componentName is NULL\n" ); return JNI_FALSE; // EXIT POINT! Exception pending... } _TRACE2( "NATIVE: JNU_ComponentRegistry_initIDs_FromClass_OK(...) returning normally\n" ); return JNI_TRUE; }
/************************************************************************** * FUNCTION: U_printSaAmfCSIActiveDescriptor * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaAmfCSIActiveDescriptor(const char *msg, const SaAmfCSIActiveDescriptorT *activeDescriptorPtr) { _TRACE_INLINE("%s", msg); _TRACE2("\t\ttransitionDescriptor: "); switch (activeDescriptorPtr->transitionDescriptor) { case SA_AMF_CSI_NEW_ASSIGN: _TRACE2("CSI NEW ASSIGN (%d)\n", activeDescriptorPtr->transitionDescriptor); break; case SA_AMF_CSI_QUIESCED: _TRACE2("CSI QUIESCED (%d)\n", activeDescriptorPtr->transitionDescriptor); break; case SA_AMF_CSI_NOT_QUIESCED: _TRACE2("CSI NOT QUIESCED (%d)\n", activeDescriptorPtr->transitionDescriptor); break; case SA_AMF_CSI_STILL_ACTIVE: _TRACE2("CSI STILL ACTIVE (%d)\n", activeDescriptorPtr->transitionDescriptor); break; default: _TRACE2("CSI INVALID!!! (%d)\n", activeDescriptorPtr->transitionDescriptor); break; } U_printSaName("\t\tactiveCompName: ", &activeDescriptorPtr->activeCompName); }
/************************************************************************** * FUNCTION: JNU_newStringFromSaNodeAddressT * TYPE: internal function * OVERVIEW: Creates a new String object from the specified * SaNodeAddressT parameter. * INTERFACE: * parameters: TODO * returns: the newly created String * NOTE: *************************************************************************/ jstring JNU_newStringFromSaNodeAddressT(JNIEnv *jniEnv, const SaClmNodeAddressT *saClmNodeAddressPtr) { // BODY assert(saClmNodeAddressPtr != NULL); assert(saClmNodeAddressPtr->length <= SA_CLM_MAX_ADDRESS_LENGTH); _TRACE2 ("NATIVE: Executing JNU_newStringFromSaNodeAddressT(...) MODIFIED \n"); _TRACE2("NATIVE: saClmNodeAddress = %p ; saClmNodeAddress.length: %d\n", saClmNodeAddressPtr, saClmNodeAddressPtr->length); SaUint8T _eValue[SA_CLM_MAX_ADDRESS_LENGTH + 1]; memcpy(_eValue, saClmNodeAddressPtr->value, saClmNodeAddressPtr->length); _eValue[saClmNodeAddressPtr->length] = 0x00; _TRACE2("NATIVE: Creating a new String from %s\n", _eValue); return (*jniEnv)->NewStringUTF(jniEnv, (char *)_eValue); }
/************************************************************************** * FUNCTION: JNU_CallbackResponse_initIDs_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ jboolean JNU_CallbackResponse_initIDs_OK(JNIEnv *jniEnv) { _TRACE2("NATIVE: Executing JNU_CallbackResponse_initIDs_OK(...)\n"); /* get CallbackResponse class & create a global reference right away */ EnumCallbackResponse = JNU_GetGlobalClassRef(jniEnv, "org/saforum/ais/CallbackResponse"); if (EnumCallbackResponse == NULL) { _TRACE2("NATIVE ERROR: EnumCallbackResponse is NULL\n"); return JNI_FALSE; /* EXIT POINT! */ } /* get IDs */ return JNU_CallbackResponse_initIDs_FromClass_OK(jniEnv, EnumCallbackResponse); }
/************************************************************************** * FUNCTION: JNU_jByteArray_link * TYPE: internal function * OVERVIEW: links the content of the Java * byte array object to * the specified native buffer. * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: -> If JNI_FALSE is returned, then an exception is already pending! * -> A zero length java byte array is allowed, in which case * the native buffer will be set to NULL *************************************************************************/ jboolean JNU_jByteArray_link(JNIEnv *jniEnv, jbyteArray byteArray, SaSizeT *saSizePtr, void **saBufferPtr) { // VARIABLES jsize _len; // BODY #ifndef NDEBUG assert(byteArray != NULL); assert(saSizePtr != NULL); assert(saBufferPtr != NULL); _TRACE2("NATIVE: Executing JNU_jByteArray_link(...)\n"); #endif // NDEBUG // length _len = (*jniEnv)->GetArrayLength(jniEnv, byteArray); *saSizePtr = (SaSizeT)_len; // id if (_len == 0) { // we allow byteArray length to be 0 at this level! #ifndef NDEBUG _TRACE2("NATIVE WARNING: _len is NULL\n"); #endif // NDEBUG *saBufferPtr = NULL; } else { *saBufferPtr = (void *) (*jniEnv)->GetByteArrayElements(jniEnv, byteArray, NULL); if (*saBufferPtr == NULL) { #ifndef NDEBUG _TRACE2("NATIVE ERROR: *saBufferPtr is NULL\n"); #endif // NDEBUG return JNI_FALSE; // OutOfMemoryError thrown already... } } #ifndef NDEBUG _TRACE2("NATIVE: JNU_jByteArray_link(...) returning normally\n"); #endif // NDEBUG return JNI_TRUE; }
/************************************************************************** * FUNCTION: JNU_TrackFlags_initIDs_FromClass_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ static jboolean JNU_TrackFlags_initIDs_FromClass_OK(JNIEnv *jniEnv, jclass enumTrackFlags) { // BODY _TRACE2("NATIVE: Executing JNU_TrackFlags_initIDs_FromClass_OK(...)\n"); // get field IDs FID_TF_value = (*jniEnv)->GetFieldID(jniEnv, enumTrackFlags, "value", "I"); if (FID_TF_value == NULL) { _TRACE2("NATIVE ERROR: FID_TF_value is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } _TRACE2 ("NATIVE: JNU_TrackFlags_initIDs_FromClass_OK(...) returning normally\n"); return JNI_TRUE; }
/************************************************************************** * FUNCTION: JNU_Version_initIDs_OK * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: JNI_FALSE if an error occured, JNI_TRUE otherwise * NOTE: If JNI_FALSE is returned, then an exception is already pending! *************************************************************************/ jboolean JNU_Version_initIDs_OK(JNIEnv *jniEnv) { // BODY _TRACE2("NATIVE: Executing JNU_Version_initIDs_OK(...)\n"); // get Version class & create a global reference right away /* ClassVersion = (*jniEnv)->NewGlobalRef( jniEnv, (*jniEnv)->FindClass( jniEnv, "org/saforum/ais/Version" ) ); */ ClassVersion = JNU_GetGlobalClassRef(jniEnv, "org/saforum/ais/Version"); if (ClassVersion == NULL) { _TRACE2("NATIVE ERROR: ClassVersion is NULL\n"); return JNI_FALSE; // EXIT POINT! Exception pending... } // get IDs return JNU_Version_initIDs_FromClass_OK(jniEnv, ClassVersion); }
void CPigEngine::LoadScriptFile(CPigBehaviorScriptType* pScript, const WIN32_FIND_DATA* pffd, tstring strFileName) { // Initialize the specified object HRESULT hr = pScript->Load(pffd, strFileName); if (SUCCEEDED(hr) && SUCCEEDED(hr = AddInvokeCommands(pScript))) return; // Display the error information IErrorInfo* pei; HRESULT hrEI = GetErrorInfo(0, &pei); _com_error err(hr, pei); _bstr_t bstrDesc(err.Description()); _TRACE2("CPigEngine::LoadScriptFile(%s): %s\n", strFileName.c_str(), (bstrDesc.length()) ? LPCTSTR(bstrDesc) : err.ErrorMessage()); }
/************************************************************************** * FUNCTION: U_printSaNodeAddress * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaNodeAddress(const char *msg, const SaClmNodeAddressT *saClmNodeAddressPtr) { // BODY _TRACE2("%s", msg); if (saClmNodeAddressPtr->length > SA_CLM_MAX_ADDRESS_LENGTH) { _TRACE_INLINE("INVALID STRING (length: %d)\n", saClmNodeAddressPtr->length); } else { SaUint8T _eValue[SA_CLM_MAX_ADDRESS_LENGTH + 1]; memcpy(_eValue, saClmNodeAddressPtr->value, saClmNodeAddressPtr->length); _eValue[saClmNodeAddressPtr->length] = 0x00; _TRACE_INLINE("%s (length: %d)\n", _eValue, saClmNodeAddressPtr->length); } }
/************************************************************************** * FUNCTION: U_printSaCheckpointCreationAttributes * TYPE: internal function * OVERVIEW: * INTERFACE: * parameters: TODO * returns: none * NOTE: *************************************************************************/ void U_printSaCheckpointCreationAttributes(const char *msg, const SaCkptCheckpointCreationAttributesT *saCheckpointCreationAttributesPtr) { // BODY _TRACE_INLINE("%s", msg); _TRACE2("NATIVE: \t\t\tcreationFlags:%u\n", (unsigned int)saCheckpointCreationAttributesPtr->creationFlags); _TRACE2("NATIVE: \t\t\tcheckpointSize: %lu\n", (unsigned long)saCheckpointCreationAttributesPtr-> checkpointSize); _TRACE2("NATIVE: \t\t\tretentionDuration: %lu\n", (unsigned long)saCheckpointCreationAttributesPtr-> retentionDuration); _TRACE2("NATIVE: \t\t\tmaxSections:%u\n", (unsigned int)saCheckpointCreationAttributesPtr->maxSections); _TRACE2("NATIVE: \t\t\tmaxSectionSize: %lu\n", (unsigned long)saCheckpointCreationAttributesPtr-> maxSectionSize); _TRACE2("NATIVE: \t\t\tmaxSectionIdSize: %lu\n", (unsigned long)saCheckpointCreationAttributesPtr-> maxSectionIdSize); }