Ejemplo n.º 1
0
void
os_reportClearApiInfo(void)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);

    if (report->reportContext) {
        os_free(report->reportContext);
        report->reportContext = NULL;
    }
    if (report->sourceLine) {
        os_free(report->sourceLine);
        report->sourceLine = NULL;
    }
    if (report->callStack) {
        os_free(report->callStack);
        report->callStack = NULL;
    }
    if (report->description) {
        os_free(report->description);
        report->description = NULL;
    }
    os_threadMemFree(OS_THREAD_API_INFO);
}
Ejemplo n.º 2
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);
    }
}
Ejemplo n.º 3
0
os_result
os_threadUnprotect(void)
{
    os_result result;
    os_threadProtectInfo *pi;

    pi = os_threadMemGet(OS_THREAD_PROTECT);
    if (pi) {
        pi->protectCount--;
#ifndef INTEGRITY
        if (pi->protectCount == 0) {
            if (pthread_sigmask(SIG_SETMASK,&pi->oldMask,NULL) != 0) {
                result = os_resultFail;
            } else {
                result = os_resultSuccess;
            }
        } else {
#endif
            result = os_resultSuccess;
#ifndef INTEGRITY
        }
#endif
    } else {
        result = os_resultFail;
    }

    return result;
}
Ejemplo n.º 4
0
os_result
os_threadProtect(void)
{
    os_result result;
    os_threadProtectInfo *pi;

    pi = os_threadMemGet(OS_THREAD_PROTECT);
    if (pi == NULL) {
        pi = os_threadMemMalloc(OS_THREAD_PROTECT,
                                sizeof(os_threadProtectInfo), NULL, NULL);
        if (pi) {
            pi->protectCount = 1;
            result = os_resultSuccess;
        } else {
            result = os_resultFail;
        }
    } else {
        pi->protectCount++;
        result = os_resultSuccess;
    }
#ifndef INTEGRITY
    if ((result == os_resultSuccess) && (pi->protectCount == 1)) {
        if (pthread_sigmask(SIG_SETMASK,
                         &os_threadBlockAllMask,
                         &pi->oldMask) != 0) {
            result = os_resultFail;
        }
    }
#endif
    return result;
}
Ejemplo n.º 5
0
void*
DJA_UtilityBridge_us_getThreadSessionUserData()
{
    DLRL_INFO(INF_ENTER);
    DLRL_INFO(INF_EXIT);
    return (void*)(*(JNIEnv**)os_threadMemGet(OS_THREAD_JVM));
}
Ejemplo n.º 6
0
void
DJA_UtilityBridge_us_doThreadDetach(
    DLRL_Exception* exception,
    void* userData)
{
    JavaVM *jvm;
    JNIEnv* env;
    jint jresult;

    DLRL_INFO(INF_ENTER);

    assert(exception);

    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);
    jresult = (*env)->GetJavaVM(env, &jvm);
    if(jresult != 0){
        DLRL_Exception_THROW(exception, DLRL_OUT_OF_MEMORY, "Unable to complete operation. Out of resources.");
    }
    jresult = (*jvm)->DetachCurrentThread(jvm);
    os_threadMemFree(OS_THREAD_JVM);
    if(jresult != 0){
        DLRL_Exception_THROW(exception, DLRL_OUT_OF_MEMORY, "Unable to complete operation. Out of resources.");
    }

    DLRL_Exception_EXIT(exception);
    DLRL_INFO(INF_EXIT);
}
Ejemplo n.º 7
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);
    }

}
Ejemplo n.º 8
0
void
os_reportSetApiInfoDescription(
    const char   *description,
    ...)
{
    os_reportInfo *report;
    va_list args;
    char * descriptionCopy = NULL; /* since description may point to report->description*/

    if (description) {
        descriptionCopy = os_strdup(description);
    }

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report) {
        if (report->description) {
            os_free(report->description);
            report->description = NULL;
        }
        if (descriptionCopy) {
            report->description = (char*) os_malloc(OS_MAX_DESCRIPTIONSIZE);
            if (report->description) {
                va_start(args, description);
                os_vsnprintf(report->description, OS_MAX_DESCRIPTIONSIZE-1, descriptionCopy, args);
                va_end(args);
            }
        }
    }
    os_free(descriptionCopy);
}
Ejemplo n.º 9
0
static void
os_reportSetApiInfoRec(
    const char   *reportContext,
    const char   *sourceLine,
    const char   *callStack,
    os_int32      reportCode,
    const char   *description,
    va_list       args)
{
    os_reportInfo *report;
    char * descriptionCopy = NULL; /* since description may point to report->description*/

    if (description) {
        descriptionCopy = os_strdup(description);
    }

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report == NULL) {
        report = (os_reportInfo *)os_threadMemMalloc(OS_THREAD_API_INFO, sizeof(os_reportInfo));
        if (report) memset(report, 0, sizeof(os_reportInfo));
    }
    if (report) {
        if (report->reportContext) {
            os_free(report->reportContext);
            report->reportContext = NULL;
        }
        if (reportContext) {
            report->reportContext = os_strdup(reportContext);
        }
        if (report->sourceLine) {
            os_free(report->sourceLine);
            report->sourceLine = NULL;
        }
        if (sourceLine) {
            report->sourceLine = os_strdup(sourceLine);
        }
        if (report->callStack) {
            os_free(report->callStack);
            report->callStack = NULL;
        }
        if (callStack) {
            report->callStack = os_strdup(callStack);
        }
        report->reportCode = reportCode;
        if (report->description) {
            os_free(report->description);
            report->description = NULL;
        }
        if (descriptionCopy) {
            report->description = (char*) os_malloc(OS_MAX_DESCRIPTIONSIZE);
            if (report->description) {
                os_vsnprintf(report->description, OS_MAX_DESCRIPTIONSIZE-1, descriptionCopy, args);
            }
        }
    }
    os_free(descriptionCopy);
}
Ejemplo n.º 10
0
os_reportInfo *
os_reportGetApiInfo(void)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);

    return report;
}
Ejemplo n.º 11
0
static void
printThreadMessage(
    const char *context)
{
    char *msg = os_threadMemGet(OS_THREAD_WARNING);
    if (msg) {
        OS_REPORT(OS_ERROR,context,0,msg);
        os_threadMemFree(OS_THREAD_WARNING);
    }
}
Ejemplo n.º 12
0
void
os_reportSetApiInfoCode(
    os_int32 reportCode)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report) {
        report->reportCode = reportCode;
    }
}
Ejemplo n.º 13
0
void
saj_listenerDetach(
   void* listener_data)
{   
    JavaVM *jvm;
    JNIEnv* env;
    jint jresult;
    
    env = *(JNIEnv**)os_threadMemGet(OS_THREAD_JVM);
    jresult = (*env)->GetJavaVM(env, &jvm);
    assert(jresult == 0);
    jresult = (*jvm)->DetachCurrentThread(jvm);
    os_threadMemFree(OS_THREAD_JVM);
    assert(jresult == 0);
}
Ejemplo n.º 14
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);
}
Ejemplo n.º 15
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);
}
Ejemplo n.º 16
0
void
os_reportSetApiInfoLine(
    const char   *sourceLine)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report) {
        if (report->sourceLine) {
            os_free(report->sourceLine);
            report->sourceLine = NULL;
        }
        if (sourceLine) {
            report->sourceLine = os_strdup(sourceLine);
        }
    }
}
Ejemplo n.º 17
0
void
os_reportSetApiInfoContext(
    const char   *reportContext)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report) {
        if (report->reportContext) {
            os_free(report->reportContext);
            report->reportContext = NULL;
        }
        if (reportContext) {
            report->reportContext = os_strdup(reportContext);
        }
    }
}
Ejemplo n.º 18
0
void
os_reportSetApiInfoStack(
    const char   *callStack)
{
    os_reportInfo *report;

    report = (os_reportInfo *)os_threadMemGet(OS_THREAD_API_INFO);
    if (report) {
        if (report->callStack) {
            os_free(report->callStack);
            report->callStack = NULL;
        }
        if (callStack) {
            report->callStack = os_strdup(callStack);
        }
    }
}
Ejemplo n.º 19
0
void
saj_destroy_user_data_callback(
    void* entityUserData,
    void* userData)
{
    saj_userData ud;
    JNIEnv* env;
    void* threadData;

    ud = saj_userData(entityUserData);
    threadData = os_threadMemGet(OS_THREAD_JVM);
    if (threadData) {
        env = *(JNIEnv**)threadData;
        saj_destroy_user_data(env, ud);
    } else {
        OS_REPORT(OS_WARNING,"saj_destroy_user_data_callback",0,
                  "No JNIEnv reference found, "
                  "possible leakage of a Java object");
    }
    return;
}
Ejemplo n.º 20
0
c_bool
saj_setThreadEnv(
    JNIEnv *env)
{
    void *threadData;
    c_bool result;

    threadData = os_threadMemGet(OS_THREAD_JVM);
    if (threadData) {
        *(JNIEnv**)threadData = env;
        result = FALSE;
    } else {
        threadData = os_threadMemMalloc(OS_THREAD_JVM, sizeof(env));
        if (threadData) {
            *(JNIEnv**)threadData = env;
            result = TRUE;
        } else {
            result = FALSE;
            assert(0);
        }
    }
    return result;
}
Ejemplo n.º 21
0
JNIEnv *
saj_getThreadEnv()
{
    return (JNIEnv *)os_threadMemGet(OS_THREAD_JVM);
}