예제 #1
0
/*
 * Class:     com_sun_tools_jdi_SharedMemoryTransport
 * Method:    startListening0
 * Signature: (Ljava/lang/String;)J
 */
JNIEXPORT jlong JNICALL Java_com_sun_tools_jdi_SharedMemoryTransportService_startListening0
  (JNIEnv *env, jobject thisObject, jstring address)
{
    const char *addrChars = NULL;
    jint rc;
    jstring retAddress = NULL;
    SharedMemoryTransport *transport = NULL;


    if (address != NULL) {
        addrChars = (*env)->GetStringUTFChars(env, address, NULL);
        if ((*env)->ExceptionOccurred(env)) {
            return TRANSPORT_TO_ID(transport);
        } else if (addrChars == NULL) {
            throwException(env, "java/lang/InternalError", "GetStringUTFChars failed");
            return TRANSPORT_TO_ID(transport);
        }
    }

    rc = shmemBase_listen(addrChars, &transport);
    if (rc != SYS_OK) {
        throwShmemException(env, "shmemBase_listen failed", rc);
    } 
        
    if (addrChars != NULL) {
        (*env)->ReleaseStringUTFChars(env, address, addrChars);
    }

    return TRANSPORT_TO_ID(transport);
}
예제 #2
0
파일: shmemBack.c 프로젝트: lmsf/jdk9-dev
static jdwpTransportError JNICALL
shmemStartListening(jdwpTransportEnv* env, const char *address, char **actualAddress)
{
    jint rc;

    if (connection != NULL || transport != NULL) {
        RETURN_ERROR(JDWPTRANSPORT_ERROR_ILLEGAL_STATE, "already connected or already listening");
    }

    rc = shmemBase_listen(address, &transport);

    /*
     * If a name was selected by the function above, find it and return
     * it in place of the original arg.
     */
    if (rc == SYS_OK) {
        char *name;
        char *name2;
        rc = shmemBase_name(transport, &name);
        if (rc == SYS_OK) {
            name2 = (callbacks->alloc)((int)strlen(name) + 1);
            if (name2 == NULL) {
                RETURN_ERROR(JDWPTRANSPORT_ERROR_OUT_OF_MEMORY, "out of memory");
            } else {
                strcpy(name2, name);
                *actualAddress = name2;
            }
        }
    } else {
        RETURN_IO_ERROR("failed to create shared memory listener");
    }
    return JDWPTRANSPORT_ERROR_NONE;
}