void errno_enum_init(JNIEnv *env) { if (enum_class != NULL) return; enum_class = (*env)->FindClass(env, "java/lang/Enum"); PASS_EXCEPTIONS(env); enum_class = (*env)->NewGlobalRef(env, enum_class); enum_valueOf = (*env)->GetStaticMethodID(env, enum_class, "valueOf", "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;"); PASS_EXCEPTIONS(env); errno_class = (*env)->FindClass(env, "org/apache/hadoop/io/nativeio/Errno"); PASS_EXCEPTIONS(env); errno_class = (*env)->NewGlobalRef(env, errno_class); }
static void stat_init(JNIEnv *env) { // Init Stat jclass clazz = (*env)->FindClass(env, "org/apache/hadoop/io/nativeio/NativeIO$Stat"); PASS_EXCEPTIONS(env); stat_clazz = (*env)->NewGlobalRef(env, clazz); stat_ctor = (*env)->GetMethodID(env, stat_clazz, "<init>", "(Ljava/lang/String;Ljava/lang/String;I)V"); }
void fd_init(JNIEnv* env) { if (fd_class != NULL) return; // already initted fd_class = (*env)->FindClass(env, "java/io/FileDescriptor"); PASS_EXCEPTIONS(env); fd_class = (*env)->NewGlobalRef(env, fd_class); fd_descriptor = (*env)->GetFieldID(env, fd_class, "fd", "I"); PASS_EXCEPTIONS(env); #ifdef WINDOWS fd_handle = (*env)->GetFieldID(env, fd_class, "handle", "J"); PASS_EXCEPTIONS(env); #endif fd_constructor = (*env)->GetMethodID(env, fd_class, "<init>", "()V"); }
static void nioe_init(JNIEnv *env) { // Init NativeIOException nioe_clazz = (*env)->FindClass( env, "org/apache/hadoop/io/nativeio/NativeIOException"); PASS_EXCEPTIONS(env); nioe_clazz = (*env)->NewGlobalRef(env, nioe_clazz); nioe_ctor = (*env)->GetMethodID(env, nioe_clazz, "<init>", "(Ljava/lang/String;Lorg/apache/hadoop/io/nativeio/Errno;)V"); }
static void stat_init(JNIEnv *env, jclass nativeio_class) { // Init Stat jclass clazz = (*env)->FindClass(env, "org/apache/hadoop/io/nativeio/NativeIO$Stat"); PASS_EXCEPTIONS(env); stat_clazz = (*env)->NewGlobalRef(env, clazz); stat_ctor = (*env)->GetMethodID(env, stat_clazz, "<init>", "(Ljava/lang/String;Ljava/lang/String;IIJ)V"); jclass obj_class = (*env)->FindClass(env, "java/lang/Object"); assert(obj_class != NULL); jmethodID obj_ctor = (*env)->GetMethodID(env, obj_class, "<init>", "()V"); assert(obj_ctor != NULL); if (workaround_non_threadsafe_calls(env, nativeio_class)) { pw_lock_object = (*env)->NewObject(env, obj_class, obj_ctor); PASS_EXCEPTIONS(env); pw_lock_object = (*env)->NewGlobalRef(env, pw_lock_object); PASS_EXCEPTIONS(env); } }