From: Paul Bédaride Date: Thu, 6 Jun 2013 16:57:26 +0000 (+0200) Subject: Add AS support in MSG and java bindings X-Git-Tag: v3_11_beta~297^2^2~28^2~8 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/db82f9e75280108116a8e70d2e7a163080020d29 Add AS support in MSG and java bindings --- diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 84cb6ccedf..4e42ec5b46 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -386,6 +386,8 @@ set(BINDINGS_SRC set(JMSG_C_SRC src/bindings/java/jmsg.c src/bindings/java/jmsg.h + src/bindings/java/jmsg_as.c + src/bindings/java/jmsg_as.h src/bindings/java/jmsg_comm.c src/bindings/java/jmsg_comm.h src/bindings/java/jmsg_file.c @@ -411,6 +413,7 @@ set(JMSG_C_SRC ) set(JMSG_JAVA_SRC + src/bindings/java/org/simgrid/msg/As.java src/bindings/java/org/simgrid/msg/Comm.java src/bindings/java/org/simgrid/msg/File.java src/bindings/java/org/simgrid/msg/Host.java diff --git a/include/msg/datatypes.h b/include/msg/datatypes.h index 78af98ed5f..357748aeee 100644 --- a/include/msg/datatypes.h +++ b/include/msg/datatypes.h @@ -27,6 +27,8 @@ SG_BEGIN_DECL() * want to send your task, but only the name of this mailbox. */ typedef struct s_smx_rvpoint *msg_mailbox_t; +/* ******************************** Environment ************************************ */ +typedef struct s_as *msg_as_t; /* ******************************** Host ************************************ */ diff --git a/include/msg/msg.h b/include/msg/msg.h index 8c9c4db58a..657a35792c 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -69,6 +69,11 @@ XBT_PUBLIC(void) MSG_set_function(const char *host_id, XBT_PUBLIC(double) MSG_get_clock(void); XBT_PUBLIC(unsigned long int) MSG_get_sent_msg(void); +/************************** Environment ***********************************/ +XBT_PUBLIC(msg_as_t) MSG_environment_get_routing_root(void); +XBT_PUBLIC(const char *) MSG_environment_as_get_name(msg_as_t as); +XBT_PUBLIC(xbt_dict_t) MSG_environment_as_get_routing_sons(msg_as_t as); +XBT_PUBLIC(const char *)MSG_environment_as_get_property_value(msg_as_t as, const char *name); /************************** File handling ***********************************/ XBT_PUBLIC(double) MSG_file_read(void* ptr, size_t size, size_t nmemb, msg_file_t stream); diff --git a/src/bindings/java/jmsg.c b/src/bindings/java/jmsg.c index 8a6a626e11..30f90dcb3e 100644 --- a/src/bindings/java/jmsg.c +++ b/src/bindings/java/jmsg.c @@ -16,6 +16,8 @@ #include "jmsg_process.h" +#include "jmsg_as.h" + #include "jmsg_host.h" #include "jmsg_task.h" #include "jxbt_utilities.h" @@ -170,6 +172,26 @@ Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv * env, jclass cls, (*env)->ReleaseStringUTFChars(env, jplatformFile, platformFile); } + +JNIEXPORT jobject JNICALL +Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv * env, jclass cls) +{ + msg_as_t as = MSG_environment_get_routing_root(); + jobject jas = jas_new_instance(env); + if (!jas) { + jxbt_throw_jni(env, "java As instantiation failed"); + return NULL; + } + jas = jas_ref(env, jas); + if (!jas) { + jxbt_throw_jni(env, "new global ref allocation failed"); + return NULL; + } + jas_bind(jas, as, env); + + return (jobject) jas; +} + JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_debug(JNIEnv * env, jclass cls, jstring js) { diff --git a/src/bindings/java/jmsg.h b/src/bindings/java/jmsg.h index 73e9ad9460..4d9a5d4d91 100644 --- a/src/bindings/java/jmsg.h +++ b/src/bindings/java/jmsg.h @@ -56,6 +56,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_critical(JNIEnv *, jclass, JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv * env, jclass cls, jstring jplatformFile); +JNIEXPORT jobject JNICALL +Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv * env, jclass cls); JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_deployApplication(JNIEnv * env, jclass cls, jstring jdeploymentFile); diff --git a/src/bindings/java/jmsg_vm.c b/src/bindings/java/jmsg_vm.c index 8948b57fb0..395b8d2234 100644 --- a/src/bindings/java/jmsg_vm.c +++ b/src/bindings/java/jmsg_vm.c @@ -135,7 +135,7 @@ Java_org_simgrid_msg_VM_save(JNIEnv *env, jobject jvm) { MSG_vm_save(vm); } JNIEXPORT void JNICALL -Java_org_simgrid_msg_VM_retore(JNIEnv *env, jobject jvm) { +Java_org_simgrid_msg_VM_restore(JNIEnv *env, jobject jvm) { msg_vm_t vm = jvm_get_native(env,jvm); MSG_vm_restore(vm); } diff --git a/src/bindings/java/jmsg_vm.h b/src/bindings/java/jmsg_vm.h index 808fbd71f7..7bfe807cf1 100644 --- a/src/bindings/java/jmsg_vm.h +++ b/src/bindings/java/jmsg_vm.h @@ -146,4 +146,6 @@ Java_org_simgrid_msg_VM_save(JNIEnv *env, jobject jvm); JNIEXPORT void JNICALL Java_org_simgrid_msg_VM_restore(JNIEnv *env, jobject jvm); +JNIEXPORT jobject JNICALL +Java_org_simgrid_msg_VM_get_pm(JNIEnv *env, jobject jvm); #endif diff --git a/src/bindings/java/org/simgrid/msg/Msg.java b/src/bindings/java/org/simgrid/msg/Msg.java index 2cf133a523..5e67165bc7 100644 --- a/src/bindings/java/org/simgrid/msg/Msg.java +++ b/src/bindings/java/org/simgrid/msg/Msg.java @@ -183,6 +183,8 @@ public final class Msg { */ public final static native void createEnvironment(String platformFile); + public final static native As environmentGetRoutingRoot(); + /** * The method to deploy the simulation. * diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 74133ae405..65694ccc28 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -713,6 +713,16 @@ XBT_PUBLIC_DATA(s_surf_model_description_t) surf_new_model_description[]; XBT_PUBLIC_DATA(xbt_dynar_t) model_list; XBT_PUBLIC_DATA(xbt_dynar_t) model_list_invoke; +/*******************************************/ +/*** SURF Platform *************************/ +/*******************************************/ +typedef struct s_as *AS_t; + +XBT_PUBLIC_DATA(AS_t) surf_AS_get_routing_root(void); +XBT_PUBLIC_DATA(const char *)surf_AS_get_name(AS_t as); +XBT_PUBLIC_DATA(xbt_dict_t) surf_AS_get_routing_sons(AS_t as); + + /*******************************************/ /*** SURF Globals **************************/ /*******************************************/ diff --git a/src/msg/msg_environment.c b/src/msg/msg_environment.c index 497b254c37..78184f7b80 100644 --- a/src/msg/msg_environment.c +++ b/src/msg/msg_environment.c @@ -48,3 +48,22 @@ void MSG_post_create_environment(void) { __MSG_host_create(xbt_dict_cursor_get_elm(cursor)); } } + +msg_as_t MSG_environment_get_routing_root() { + return surf_AS_get_routing_root(); +} + +const char *MSG_environment_as_get_name(msg_as_t as) { + return surf_AS_get_name(as); +} + +xbt_dict_t MSG_environment_as_get_routing_sons(msg_as_t as) { + xbt_dict_t res = surf_AS_get_routing_sons(as); + return res; +} + +const char *MSG_environment_as_get_property_value(msg_as_t as, const char *name) +{ + xbt_dict_t dict = xbt_lib_get_or_null(as_router_lib, MSG_environment_as_get_name(as), ROUTING_PROP_ASR_LEVEL); + return xbt_dict_get_or_null(dict, name); +} diff --git a/src/surf/surf_private.h b/src/surf/surf_private.h index 076a05c426..2fb09bf4cd 100644 --- a/src/surf/surf_private.h +++ b/src/surf/surf_private.h @@ -104,7 +104,6 @@ int net_get_link_latency_limited(surf_action_t action); */ int __surf_is_absolute_file_path(const char *file_path); -typedef struct s_as *AS_t; typedef struct s_routing_edge { AS_t rc_component; e_surf_network_element_type_t rc_type; diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 5901fbd2ff..c4a0fa3168 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -1229,3 +1229,17 @@ void routing_exit(void) { finalize_rec(routing_platf->root); xbt_free(routing_platf); } + +AS_t surf_AS_get_routing_root() { + return routing_platf->root; +} + +const char *surf_AS_get_name(AS_t as) { + return as->name; +} + +xbt_dict_t surf_AS_get_routing_sons(AS_t as) { + return as->routing_sons; +} + +