}
msg_file_t jfile_get_native(JNIEnv *env, jobject jfile) {
- msg_file_t file = (msg_file_t)(*env)->GetLongField(env, jfile, jfile_field_bind);
- return file;
+ msg_file_t file = (msg_file_t)(*env)->GetLongField(env, jfile, jfile_field_bind);
+ return file;
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_File_nativeInit(JNIEnv *env, jclass cls) {
- jclass class_File = (*env)->FindClass(env, "org/simgrid/msg/File");
- jfile_field_bind = jxbt_get_jfield(env , class_File, "bind", "J");
- xbt_assert((jfile_field_bind != NULL), "Can't find \"bind\" field in File class.");
+ jclass class_File = (*env)->FindClass(env, "org/simgrid/msg/File");
+ jfile_field_bind = jxbt_get_jfield(env , class_File, "bind", "J");
+ xbt_assert((jfile_field_bind != NULL), "Can't find \"bind\" field in File class.");
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_File_open(JNIEnv *env, jobject jfile, jobject jstorage, jobject jpath, jobject jmode) {
+ const char *storage = (*env)->GetStringUTFChars(env, jstorage, 0);
+ const char *path = (*env)->GetStringUTFChars(env, jpath, 0);
+ const char *mode = (*env)->GetStringUTFChars(env, jmode, 0);
+ msg_file_t file;
+ xbt_ex_t e;
+ TRY {
+ file = MSG_file_open(storage, path, mode);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
+ jfile_bind(env, jfile, file);
- const char *storage = (*env)->GetStringUTFChars(env, jstorage, 0);
- const char *path = (*env)->GetStringUTFChars(env, jpath, 0);
- const char *mode = (*env)->GetStringUTFChars(env, jmode, 0);
-
- msg_file_t file = MSG_file_open(storage, path, mode);
-
- jfile_bind(env, jfile, file);
-
- (*env)->ReleaseStringUTFChars(env, jstorage, storage);
- (*env)->ReleaseStringUTFChars(env, jpath, path);
- (*env)->ReleaseStringUTFChars(env, jmode, mode);
+ (*env)->ReleaseStringUTFChars(env, jstorage, storage);
+ (*env)->ReleaseStringUTFChars(env, jpath, path);
+ (*env)->ReleaseStringUTFChars(env, jmode, mode);
}
JNIEXPORT jlong JNICALL
Java_org_simgrid_msg_File_read(JNIEnv *env, jobject jfile, jlong jsize, jlong jnmemb) {
- msg_file_t file = jfile_get_native(env, jfile);
-
- size_t n = MSG_file_read(NULL,(size_t)jsize, (size_t)jnmemb, file);
-
- return (jlong)n;
+ msg_file_t file = jfile_get_native(env, jfile);
+ size_t n;
+ xbt_ex_t e;
+ TRY {
+ n = MSG_file_read(NULL,(size_t)jsize, (size_t)jnmemb, file);
+ }
+ CATCH (e) {
+ xbt_ex_free(e);
+ }
+ return (jlong)n;
}
JNIEXPORT jlong JNICALL
Java_org_simgrid_msg_File_write(JNIEnv *env, jobject jfile, jlong jsize, jlong jnmemb) {
- msg_file_t file = jfile_get_native(env, jfile);
-
- size_t n = MSG_file_write(NULL, (size_t)jsize, (size_t)jnmemb, file);
-
- return (jlong)n;
+ msg_file_t file = jfile_get_native(env, jfile);
+ xbt_ex_t e;
+ size_t n;
+ TRY {
+ n = MSG_file_write(NULL, (size_t)jsize, (size_t)jnmemb, file);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
+ return (jlong)n;
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_File_close(JNIEnv *env, jobject jfile) {
- msg_file_t file = jfile_get_native(env, jfile);
+ msg_file_t file = jfile_get_native(env, jfile);
- MSG_file_close(file);
- jfile_bind(env, jfile, NULL);
+ MSG_file_close(file);
+ jfile_bind(env, jfile, NULL);
}