X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e50b37c2b4b53892d701c4f8076ef14232a212c0..51d040b6cc70ac5a722a72bb1f7598b97f699a66:/src/bindings/java/jmsg_as.c diff --git a/src/bindings/java/jmsg_as.c b/src/bindings/java/jmsg_as.c index 3fae715ba2..26ad667d3d 100644 --- a/src/bindings/java/jmsg_as.c +++ b/src/bindings/java/jmsg_as.c @@ -123,3 +123,64 @@ Java_org_simgrid_msg_As_getProperty(JNIEnv *env, jobject jas, jobject jname) { return jproperty; } +JNIEXPORT jobject JNICALL +Java_org_simgrid_msg_As_getModel(JNIEnv * env, jobject jas) { + msg_as_t as = jas_get_native(env, jas); + return (*env)->NewStringUTF(env, MSG_environment_as_get_model(as)); +} + +JNIEXPORT jobjectArray JNICALL +Java_org_simgrid_msg_As_getHosts(JNIEnv * env, jobject jas) +{ + int index; + jobjectArray jtable; + jobject jhost; + jstring jname; + msg_host_t host; + msg_as_t as = jas_get_native(env, jas); + printf("t5\n"); + + xbt_dynar_t table = MSG_environment_as_get_hosts(as); + int count = xbt_dynar_length(table); + printf("t6-count: %d\n", count); + + jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host"); + + if (!cls) { + return NULL; + } + + jtable = (*env)->NewObjectArray(env, (jsize) count, cls, NULL); + printf("t7\n"); + + if (!jtable) { + jxbt_throw_jni(env, "Hosts table allocation failed"); + return NULL; + } + printf("t8\n"); + + for (index = 0; index < count; index++) { + printf("t9\n"); + + host = xbt_dynar_get_as(table,index,msg_host_t); + printf("t9: %p\n", host); + + jhost = (jobject) (MSG_host_get_data(host)); + printf("t9\n"); + printf("name: %s\n", MSG_host_get_name(host)); + if (!jhost) { + jname = (*env)->NewStringUTF(env, MSG_host_get_name(host)); + printf("t10\n"); + + jhost = Java_org_simgrid_msg_Host_getByName(env, cls, jname); + printf("t11\n"); + + /* FIXME: leak of jname ? */ + } + + (*env)->SetObjectArrayElement(env, jtable, index, jhost); + } + printf("t9\n"); + xbt_dynar_free(&table); + return jtable; +}