/* Functions related to the java host instances. */
-/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2019. 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. */
+#include "simgrid/Exception.hpp"
#include "simgrid/plugins/energy.h"
+#include "simgrid/plugins/load.h"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/s4u/Storage.hpp"
-#include "jmsg.h"
+#include "JavaContext.hpp"
+#include "jmsg.hpp"
#include "jmsg_host.h"
-#include "jxbt_utilities.h"
#include "jmsg_storage.h"
+#include "jxbt_utilities.hpp"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(java);
-SG_BEGIN_DECL()
-
static jmethodID jhost_method_Host_constructor;
static jfieldID jhost_field_Host_bind;
static jfieldID jhost_field_Host_name;
/* get the C string from the java string */
if (jname == nullptr) {
- jxbt_throw_null(env,bprintf("No host can have a null name"));
+ jxbt_throw_null(env, "No host can have a null name");
return nullptr;
}
const char *name = env->GetStringUTFChars(jname, 0);
return nullptr;
}
/* Sets the host name */
- jobject jname = env->NewStringUTF(host->getCname());
+ jobject jname = env->NewStringUTF(host->get_cname());
env->SetObjectField(jhost, jhost_field_Host_name, jname);
/* Bind & store it */
jhost_bind(jhost, host, env);
JNIEXPORT void JNICALL Java_org_simgrid_msg_Host_off(JNIEnv *env, jobject jhost) {
msg_host_t host = jhost_get_native(env, jhost);
- MSG_host_off(host);
+ if (not simgrid::ForcefulKillException::try_n_catch([host]() { MSG_host_off(host); }))
+ jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError", "Host turned off");
}
JNIEXPORT jint JNICALL Java_org_simgrid_msg_Host_getCount(JNIEnv * env, jclass cls) {
int index = 0;
jobjectArray jtable;
- std::unordered_map<std::string, msg_storage_t> mounted_storages = host->getMountedStorages();
+ std::unordered_map<std::string, msg_storage_t> mounted_storages = host->get_mounted_storages();
int count = mounted_storages.size();
jclass cls = env->FindClass("org/simgrid/msg/Storage");
return nullptr;
}
- for (auto elm : mounted_storages) {
- jname = env->NewStringUTF(elm.second->getName());
+ for (auto const& elm : mounted_storages) {
+ jname = env->NewStringUTF(elm.second->get_cname());
jstorage = Java_org_simgrid_msg_Storage_getByName(env,cls,jname);
env->SetObjectArrayElement(jtable, index, jstorage);
index++;
jobject jhost = static_cast<jobject>(host->extension(JAVA_HOST_LEVEL));
if (not jhost) {
- jstring jname = env->NewStringUTF(host->getCname());
+ jstring jname = env->NewStringUTF(host->get_cname());
jhost = Java_org_simgrid_msg_Host_getByName(env, cls_arg, jname);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Host_setAsyncMailbox(JNIEnv * env, jclass cls_arg, jobject jname)
{
const char *name = env->GetStringUTFChars((jstring) jname, 0);
- MSG_mailbox_set_async(name);
+ sg_mailbox_set_receiver(name);
env->ReleaseStringUTFChars((jstring) jname, name);
}
return MSG_host_get_power_peak_at(host, pstate);
}
-SG_END_DECL()
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getLoad(JNIEnv* env, jobject jhost)
+{
+ msg_host_t host = jhost_get_native(env, jhost);
+ return MSG_host_get_load(host);
+}
+
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getCurrentLoad (JNIEnv *env, jobject jhost)
+{
+ msg_host_t host = jhost_get_native(env, jhost);
+
+ if (not host) {
+ jxbt_throw_notbound(env, "host", jhost);
+ return 0;
+ }
+
+ return MSG_host_get_current_load(host);
+}
+
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getComputedFlops (JNIEnv *env, jobject jhost)
+{
+ msg_host_t host = jhost_get_native(env, jhost);
+
+ if (not host) {
+ jxbt_throw_notbound(env, "host", jhost);
+ return 0;
+ }
+
+ return MSG_host_get_computed_flops(host);
+}
+
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getAvgLoad (JNIEnv *env, jobject jhost)
+{
+ msg_host_t host = jhost_get_native(env, jhost);
+
+ if (not host) {
+ jxbt_throw_notbound(env, "host", jhost);
+ return 0;
+ }
+
+ return MSG_host_get_avg_load(host);
+}