From: coldpeace Date: Fri, 1 Oct 2010 17:19:53 +0000 (+0000) Subject: reimplement lua bingdings code to support the new platforms format X-Git-Tag: v3_5~495 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3591ac3c90e43daccf244c3832159a36304c14c8 reimplement lua bingdings code to support the new platforms format git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8329 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/bindings/lua/simgrid_lua.c b/src/bindings/lua/simgrid_lua.c index cd9c316951..d15e48dd74 100644 --- a/src/bindings/lua/simgrid_lua.c +++ b/src/bindings/lua/simgrid_lua.c @@ -22,6 +22,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(lua,bindings,"Lua Bindings"); // Surf ( bypass XML ) #define LINK_MODULE_NAME "simgrid.Link" #define ROUTE_MODULE_NAME "simgrid.Route" +#define AS_MODULE_NAME "simgrid.AS" /* ********************************************************************************* */ /* helper functions */ @@ -306,6 +307,13 @@ static int Host_at(lua_State *L) ******************************************************************************************/ #include "surf/surfxml_parse.h" /* to override surf_parse and bypass the parser */ #include "surf/surf_private.h" + +typedef struct t_AS_attr +{ + const char* id; + const char *mode; +}AS_attr,*p_AS_attr; + typedef struct t_host_attr { //platform attribute @@ -344,12 +352,23 @@ typedef struct t_route_attr }route_attr,*p_route_attr; +//AS : One struct needed +static p_AS_attr AS; + //using xbt_dynar_t : static xbt_dynar_t host_list_d ; static xbt_dynar_t link_list_d ; static xbt_dynar_t route_list_d ; +/* + * Initialize platform model routing + */ +static void create_AS(const char* id,const char * mode) +{ + surf_AS_new(id,mode); +} + /** * create host resource via CPU model [for MSG] */ @@ -490,6 +509,38 @@ static void create_link_wsL07(const char *name, policy_initial_link, xbt_dict_new()); } + +/* + * init AS + */ + +static int AS_new(lua_State *L) +{ + const char *id; + const char *mode; + if(lua_istable(L,1)) + { + lua_pushstring(L,"id"); + lua_gettable(L,-2); + id = lua_tostring(L,-1); + lua_pop(L,1); + + lua_pushstring(L,"mode"); + lua_gettable(L,-2); + mode = lua_tostring(L,-1); + lua_pop(L,1); + } + else { + ERROR0("Bad Arguments to AS.new, Should be a table with named arguments"); + return -1; + } + AS = malloc(sizeof(AS_attr)); + AS->id = id; + AS->mode = mode; + + return 0; +} + /* * add new host to platform hosts list */ @@ -724,6 +775,10 @@ static int surf_parse_bypass_platform() p_link_attr p_link; p_route_attr p_route; + // Init routing mode + create_AS(AS->id,AS->mode); + + // Add Hosts xbt_dynar_foreach(host_list_d,i,p_host) { @@ -731,6 +786,7 @@ static int surf_parse_bypass_platform() p_host->state_initial,p_host->state_trace); //add to routing model host list surf_route_add_host((char*)p_host->id); + } //add Links @@ -742,12 +798,16 @@ static int surf_parse_bypass_platform() // add route xbt_dynar_foreach(route_list_d,i,p_route) { - surf_route_set_resource((char*)p_route->src_id,(char*)p_route->dest_id,p_route->links_id,0); + surf_routing_add_route((char*)p_route->src_id,(char*)p_route->dest_id,p_route->links_id); } /* */ + // Finalize AS + surf_AS_finalize(AS->id); + + // add traces surf_add_host_traces(); - surf_set_routes(); + //surf_set_routes(); surf_add_link_traces(); return 0; // must return 0 ?!! @@ -786,12 +846,12 @@ static int surf_wsL07_parse_bypass_platform() // add route xbt_dynar_foreach(route_list_d,i,p_route) { - surf_route_set_resource((char*)p_route->src_id,(char*)p_route->dest_id,p_route->links_id,0); + //surf_routing_add_route((char*)p_route->src_id,(char*)p_route->dest_id,p_route->links_id); } /* */ surf_wsL07_add_traces(); - surf_set_routes(); + //surf_set_routes(); return 0; @@ -916,6 +976,15 @@ static const luaL_reg Host_meta[] = { {0,0} }; +/* + * AS Methods + */ +static const luaL_reg AS_methods[] = { + {"new",AS_new}, + {0,0} +}; + + /* * Link Methods */ @@ -1156,6 +1225,11 @@ int luaopen_simgrid(lua_State* L) { lua_rawset(L,-3); lua_pop(L,1); + /* register the links methods to lua*/ + luaL_openlib(L,AS_MODULE_NAME,AS_methods,0); + luaL_newmetatable(L,AS_MODULE_NAME); + lua_pop(L,1); + /* register the links methods to lua*/ luaL_openlib(L,LINK_MODULE_NAME,Link_methods,0); luaL_newmetatable(L,LINK_MODULE_NAME);