/* * Class: CPointer * Method: getString * Signature: (I)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_CPointer_getString (JNIEnv *env, jobject self, jint index) { jbyte *peer = (jbyte *)env->GetLongField(self, FID_CPointer_peer); return JNU_NewStringNative(env, (const char *)peer + index); }
JNIEXPORT jint JNICALL Java_OnloadExt_FdStat__ILOnloadExt_Stat_2 (JNIEnv * env, jclass cls, jint fd_val, jobject stat) { jint rval; jclass stat_class; jfieldID field_sid; jfieldID field_name; jfieldID field_eid; jfieldID field_state; jstring stack_name; struct onload_stat native_stats; if ( !stat ) return -EINVAL; stat_class = (*env)->GetObjectClass(env, stat); if ( !stat_class ) return -EINVAL; field_sid = (*env)->GetFieldID(env, stat_class, "stackId", "I"); field_eid = (*env)->GetFieldID(env, stat_class, "endpointId", "I"); field_state = (*env)->GetFieldID(env, stat_class, "endpointState", "I"); field_name = (*env)->GetFieldID(env, stat_class, "stackName", "Ljava/lang/String;" ); if ( !field_sid || !field_name || !field_eid || !field_state ) return -EINVAL; (*env)->SetIntField( env, stat, field_sid, 0 ); (*env)->SetIntField( env, stat, field_eid, 0 ); (*env)->SetIntField( env, stat, field_state, 0 ); stack_name = JNU_NewStringNative(env, "" ); if ( stack_name ) (*env)->SetObjectField( env, stat, field_name, stack_name ); if ( fd_val < 0 ) return -EINVAL; rval = onload_fd_stat( fd_val, &native_stats ); if( rval ) { (*env)->SetIntField( env, stat, field_sid, native_stats.stack_id ); (*env)->SetIntField( env, stat, field_eid, native_stats.endpoint_id ); (*env)->SetIntField( env, stat, field_state, native_stats.endpoint_state ); if ( native_stats.stack_name ) { stack_name = JNU_NewStringNative(env, native_stats.stack_name ); if ( stack_name ) (*env)->SetObjectField( env, stat, field_name, stack_name ); } } return rval; }