/* Functions related to the java host instances. */
-/* Copyright (c) 2007-2012. The SimGrid Team.
+/* Copyright (c) 2007-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
+ * under the terms of the license (GNU LGPL) which comes with this package. */
#include "xbt/str.h"
#include "xbt/dict.h"
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");
}
jas_bind(tmp_jas, tmp_as, env);
- (*env)->SetObjectArrayElement(env, jtable, index, jas);
+ (*env)->SetObjectArrayElement(env, jtable, index, tmp_jas);
index++;
}
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) xbt_lib_get_level(host, JAVA_HOST_LEVEL);
+ 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;
+}