- simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("ACTOR_STATE")->pushEvent("sleep");
-
- try {
- simcall_process_sleep(nb_sec);
- }
- catch(xbt_ex& e) {
- if (e.category == cancel_error) {
- XBT_DEBUG("According to the JAVA API, a sleep call should only deal with HostFailureException, I'm lost.");
- // adsein: MSG_TASK_CANCELED is assigned when someone kills the process that made the sleep, this is not
- // correct. For instance, when the node is turned off, the error should be MSG_HOST_FAILURE, which is by the way
- // and according to the JAVA document, the only exception that can be triggered by MSG_Process_sleep call.
- // To avoid possible impacts in the code, I just raised a host_failure exception for the moment in the JAVA code
- // and did not change anythings at the C level.
- // See comment in the jmsg_process.c file, function JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep(JNIEnv *env, jclass cls, jlong jmillis, jint jnanos)
- status = MSG_TASK_CANCELED;
- } else
- throw;
- }
-
- if (TRACE_actor_is_enabled())
- simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("ACTOR_STATE")->popEvent();