/* * 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); }
/* * Class: com_sun_tools_jdi_SharedMemoryTransport * Method: accept0 * Signature: (J)J */ JNIEXPORT jlong JNICALL Java_com_sun_tools_jdi_SharedMemoryTransport_accept0 (JNIEnv *env, jobject thisObject, jlong id) { SharedMemoryConnection *connection = NULL; SharedMemoryTransport *transport = ID_TO_TRANSPORT(id); jint rc = shmemBase_accept(transport, &connection); if (rc != SYS_OK) { throwShmemException(env, "shmemBase_accept failed", rc); } return CONNECTION_TO_ID(connection); }
/* * Class: com_sun_tools_jdi_SharedMemoryTransport * Method: name * Signature: (J)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_sun_tools_jdi_SharedMemoryTransportService_name (JNIEnv *env, jobject thisObject, jlong id) { char *namePtr; jstring nameString = NULL; SharedMemoryTransport *transport = ID_TO_TRANSPORT(id); jint rc = shmemBase_name(transport, &namePtr); if (rc != SYS_OK) { throwShmemException(env, "shmemBase_name failed", rc); } else { nameString = (*env)->NewStringUTF(env, namePtr); if ((nameString == NULL) && !(*env)->ExceptionOccurred(env)) { throwException(env, "java/lang/InternalError", "Unable to create string"); } } return nameString; }
/* * Class: com_sun_tools_jdi_SharedMemoryTransport * Method: accept0 * Signature: (J)J */ JNIEXPORT jlong JNICALL Java_com_sun_tools_jdi_SharedMemoryTransportService_accept0 (JNIEnv *env, jobject thisObject, jlong id, jlong timeout) { SharedMemoryConnection *connection = NULL; SharedMemoryTransport *transport = ID_TO_TRANSPORT(id); jint rc; rc = shmemBase_accept(transport, (long)timeout, &connection); if (rc != SYS_OK) { if (rc == SYS_TIMEOUT) { throwException(env, "com/sun/jdi/connect/spi/TransportTimeoutException", "Timed out waiting for target VM to connect"); } else { throwShmemException(env, "shmemBase_accept failed", rc); } return -1; } return CONNECTION_TO_ID(connection); }
/* * Class: com_sun_tools_jdi_SharedMemoryTransport * Method: attach0 * Signature: (Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_com_sun_tools_jdi_SharedMemoryTransportService_attach0 (JNIEnv *env, jobject thisObject, jstring address, jlong timeout) { SharedMemoryConnection *connection = NULL; jint rc; const char *addrChars; addrChars = (*env)->GetStringUTFChars(env, address, NULL); if ((*env)->ExceptionOccurred(env)) { return CONNECTION_TO_ID(connection); } else if (addrChars == NULL) { throwException(env, "java/lang/InternalError", "GetStringUTFChars failed"); return CONNECTION_TO_ID(connection); } rc = shmemBase_attach(addrChars, (long)timeout, &connection); if (rc != SYS_OK) { throwShmemException(env, "shmemBase_attach failed", rc); } (*env)->ReleaseStringUTFChars(env, address, addrChars); return CONNECTION_TO_ID(connection); }