-static int max_host_number = 0;
-static int max_link_number = 0;
-static int max_route_number = 0;
-
-static p_host_attr* host_list;
-static p_link_attr* link_list;
-static p_route_attr* route_list;
-
-static int Host_set_number(lua_State *L)
-{
- max_host_number = luaL_checkint(L,1);
- host_list = malloc(sizeof(host_attr)*max_host_number);
- return 0;
-}
-
-static int Link_set_number(lua_State *L)
-{
- max_link_number = luaL_checkint(L,1);
- link_list = malloc(sizeof(link_attr)*max_link_number);
- return 0;
-}
-
-static int Route_set_number(lua_State *L)
-{
- max_route_number = luaL_checkint(L,1);
- route_list = malloc(sizeof(route_attr)*max_link_number);
- return 0;
-}
-
-static int Host_new(lua_State *L) //(id,power)
-{
- p_host_attr host = malloc(sizeof(host_attr));
- host->id = luaL_checkstring(L,1);
- host->power = luaL_checknumber(L,2);
- if(host_index >= max_host_number)
- ERROR1("max host number:%d reached !!!",max_host_number);
- host_list[host_index] = host;
- host_list[host_index]->function = NULL;
- host_index++;
- return 0;
-}
-
-static int Link_new(lua_State *L) // (id,bandwidth,latency)
-{
-
- p_link_attr link = malloc(sizeof(link_attr));
- link->id = luaL_checkstring(L,1);
- link->bandwidth = luaL_checknumber(L,2);
- link->latency = luaL_checknumber(L,3);
- if(link_index >= max_link_number)
- ERROR1("max link number: %d reached !!!",max_link_number);
- link_list[link_index] = link;
- link_index++;
- return 0;
-}
-
-static int Route_new(lua_State *L) // (src_id,dest_id,links_number,link_table)
-{
- int i=0;
- p_route_attr route = malloc(sizeof(route_attr));
- route->src_id = luaL_checkstring(L,1);
- route->dest_id = luaL_checkstring(L,2);
- route->links_nb = luaL_checkint(L,3);
- route->links_id = malloc(sizeof(char*)*route->links_nb);
- lua_pushnil(L);
- while (lua_next(L,4) != 0) {
- if(i >= route->links_nb)
- ERROR1("Number of links should be less than %d",route->links_nb+1);
- route->links_id[i] = lua_tostring(L, -1);
- DEBUG2("index = %f , Link_id = %s \n",lua_tonumber(L, -2),lua_tostring(L, -1));
- i++;
- lua_pop(L, 1);
- }
- lua_pop(L, 1);
-
- //add route to platform's route list
- if(route_index >= max_route_number)
- ERROR1("max route number: %d reached !!!",max_route_number);
- route_list[route_index] = route;
- route_index++;
- return 0;
-}
-
-static int Host_set_function(lua_State *L) //(host,function,nb_args,list_args)
-{
- // look for the index of host in host_list
- const char *host_id = luaL_checkstring(L,1);
- int i;
- for(i=0;i< host_index;i++)
- {
- if(host_list[i]->id == host_id)
- {
- host_list[i]->function = luaL_checkstring(L,2);
- host_list[i]->args_nb = luaL_checkint(L,3);
- host_list[i]->args_list = malloc(sizeof(char*)*host_list[i]->args_nb);
- // fill the args list
- lua_pushnil(L);
- int j = 0;
- while (lua_next(L,4) != 0) {
- if(j >= host_list[i]->args_nb)
- ERROR1("Number of args should be less than %d",host_list[i]->args_nb+1);
- host_list[i]->args_list[j] = lua_tostring(L, -1);
- DEBUG2("index = %f , Arg_id = %s \n",lua_tonumber(L, -2),lua_tostring(L, -1));
- j++;
- lua_pop(L, 1);
- }
- lua_pop(L, 1);
- return 0;
- }
- }
- ERROR1("Host : %s Not Fount !!",host_id);
- return 1;