#include "jmsg.h"
+/* Shut up some errors in eclipse online compiler. I wish such a pimple wouldn't be needed */
+#ifndef JNIEXPORT
+#define JNIEXPORT
+#endif
+#ifndef JNICALL
+#define JNICALL
+#endif
+/* end of eclipse-mandated pimple */
+
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
static JavaVM *__java_vm = NULL;
return;
}
- /* delete the global reference */
- jprocess_delete_global_ref(native_to_java_process(process), env);
-
/* kill the native process (this wrapper is call by the destructor of the java
* process instance)
*/
if (!MSG_host_get_data(host)) { /* native host not associated yet with java host */
- /* instanciate a new java host */
+ /* Instantiate a new java host */
jhost = jhost_new_instance(env);
if (!jhost) {
JNIEXPORT jint JNICALL
Java_org_simgrid_msg_MsgNative_hostGetNumber(JNIEnv * env, jclass cls)
{
- return (jint) MSG_get_host_number();
+ xbt_dynar_t hosts = MSG_hosts_as_dynar();
+ int nb_host = xbt_dynar_length(hosts);
+ xbt_dynar_free(&hosts);
+ return (jint) nb_host;
}
JNIEXPORT jobject JNICALL
* Unsortable functions *
***************************************************************************************/
-
-JNIEXPORT jint JNICALL
-Java_org_simgrid_msg_Msg_getErrCode(JNIEnv * env, jclass cls)
-{
- return (jint) MSG_get_errno();
-}
-
JNIEXPORT jdouble JNICALL
Java_org_simgrid_msg_Msg_getClock(JNIEnv * env, jclass cls)
{
argc = (int) (*env)->GetArrayLength(env, jargs);
argc++;
- argv = xbt_new0(char *, argc);
+ argv = xbt_new(char *, argc + 1);
argv[0] = strdup("java");
for (index = 0; index < argc - 1; index++) {
argv[index + 1] = strdup(tmp);
(*env)->ReleaseStringUTFChars(env, jval, tmp);
}
+ argv[argc] = NULL;
MSG_global_init(&argc, argv);
{
MSG_error_t rv;
int index;
- m_host_t *hosts;
+ xbt_dynar_t hosts;
jobject jhost;
/* Run everything */
XBT_INFO("Clean java world");
/* Cleanup java hosts */
- hosts = MSG_get_host_table();
- for (index = 0; index < MSG_get_host_number() - 1; index++) {
- jhost = (jobject) hosts[index]->data;
+ hosts = MSG_hosts_as_dynar();
+ for (index = 0; index < xbt_dynar_length(hosts) - 1; index++) {
+ jhost = (jobject) xbt_dynar_get_as(hosts,index,m_host_t)->data;
if (jhost)
jhost_unref(env, jhost);
}
-
+ xbt_dynar_free(&hosts);
XBT_INFO("Clean native world");
}
JNIEXPORT void JNICALL
jstring jname;
m_host_t host;
- int count = MSG_get_host_number();
- m_host_t *table = MSG_get_host_table();
+ xbt_dynar_t table = MSG_hosts_as_dynar();
+ int count = xbt_dynar_length(table);
jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host");
}
for (index = 0; index < count; index++) {
- host = table[index];
+ host = xbt_dynar_get_as(table,index,m_host_t);
jhost = (jobject) (MSG_host_get_data(host));
if (!jhost) {
(*env)->SetObjectArrayElement(env, jtable, index, jhost);
}
-
+ xbt_dynar_free(&table);
return jtable;
}