Ejemplo n.º 1
0
/*
 * 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);
}
Ejemplo n.º 2
0
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;
}