Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove debuging printf
[simgrid.git] / src / bindings / java / jmsg_as.c
index 3fae715..30f8b0e 100644 (file)
@@ -81,7 +81,6 @@ Java_org_simgrid_msg_As_getSons(JNIEnv * env, jobject jas) {
   char *key;
 
   xbt_dict_foreach(dict,cursor,key,tmp_as) {
-    printf("Son: %s\n", key);
     tmp_jas = jas_new_instance(env);
     if (!tmp_jas) {
       jxbt_throw_jni(env, "java As instantiation failed");
@@ -94,7 +93,7 @@ Java_org_simgrid_msg_As_getSons(JNIEnv * env, jobject jas) {
     }
     jas_bind(tmp_jas, tmp_as, env);
 
-    (*env)->SetObjectArrayElement(env, jtable, index, jas);
+    (*env)->SetObjectArrayElement(env, jtable, index, tmp_jas);
     index++;
 
   }
@@ -123,3 +122,53 @@ 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);
+
+  xbt_dynar_t table =  MSG_environment_as_get_hosts(as);
+  int count = xbt_dynar_length(table);
+
+  jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host");
+
+  if (!cls) {
+    return NULL;
+  }
+  
+  jtable = (*env)->NewObjectArray(env, (jsize) count, cls, NULL);
+
+  if (!jtable) {
+    jxbt_throw_jni(env, "Hosts table allocation failed");
+    return NULL;
+  }
+
+  for (index = 0; index < count; index++) {
+
+    host = xbt_dynar_get_as(table,index,msg_host_t);
+
+    jhost = (jobject) (MSG_host_get_data(host));
+    if (!jhost) {
+      jname = (*env)->NewStringUTF(env, MSG_host_get_name(host));
+
+      jhost = Java_org_simgrid_msg_Host_getByName(env, cls, jname);
+
+      /* FIXME: leak of jname ? */
+    }
+
+    (*env)->SetObjectArrayElement(env, jtable, index, jhost);
+  }
+  xbt_dynar_free(&table);
+  return jtable;
+}