X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f8f0be85ee23b69476ce45197e33bb96bfdbdd98..5178c3d78c741bc724a439f407d441300355c40d:/src/surf/workstation_KCCFLN05.c diff --git a/src/surf/workstation_KCCFLN05.c b/src/surf/workstation_KCCFLN05.c index 49173ae975..a439c6ce9f 100644 --- a/src/surf/workstation_KCCFLN05.c +++ b/src/surf/workstation_KCCFLN05.c @@ -82,25 +82,14 @@ static void *name_service(const char *name) xbt_ex_t e; void *res=NULL; - - TRY { res = xbt_dict_get_or_null(workstation_set, name); } CATCH(e) { + if (e.category != not_found_error) + RETHROW; WARN1("Host '%s' not found, verifing if it is a router", name); res = NULL; - } - - - if(res == NULL){ - TRY { - res = xbt_dict_get_or_null(router_set, name); - } CATCH(e) { - if (e.category != not_found_error) - RETHROW; - xbt_ex_free(e); - res = NULL; - } + xbt_ex_free(e); } return res; @@ -737,15 +726,15 @@ static void router_new(const char *name) INFO1("Creating a router %s", name); - cpu_KCCFLN05_t router; - router = xbt_new0(s_cpu_KCCFLN05_t, 1); + router_KCCFLN05_t router; + router = xbt_new0(s_router_KCCFLN05_t, 1); router->name = xbt_strdup(name); router->id = nb_routers++; xbt_dict_set(router_set, name, router, router_free); } -static void parse_route_set_routers(void) +static void parse_routers(void) { //add a dumb router just to be GTNETS compatible router_new(A_surfxml_router_name); @@ -964,18 +953,41 @@ static double impact_on_dst_with_other_send; static void parse_route_set_endpoints(void) { - src_id = ((cpu_KCCFLN05_t) name_service(A_surfxml_route_src))->id; - dst_id = ((cpu_KCCFLN05_t) name_service(A_surfxml_route_dst))->id; + cpu_KCCFLN05_t cpu_tmp = NULL; + + cpu_tmp = (cpu_KCCFLN05_t) name_service(A_surfxml_route_src); + if(cpu_tmp != NULL) { + src_id = cpu_tmp->id; + }else { + xbt_assert1(xbt_dict_get_or_null(router_set, A_surfxml_route_src), + "Invalid name '%s': neither a cpu nor a router!", + A_surfxml_route_src); + src_id=-1; + return; + } + + cpu_tmp = (cpu_KCCFLN05_t) name_service(A_surfxml_route_dst); + if(cpu_tmp != NULL) { + dst_id = cpu_tmp->id; + }else { + xbt_assert1(xbt_dict_get_or_null(router_set, A_surfxml_route_dst), + "Invalid name '%s': neither a cpu nor a router!", + A_surfxml_route_dst); + dst_id=-1; + return ; + } + surf_parse_get_double(&impact_on_src, A_surfxml_route_impact_on_src); surf_parse_get_double(&impact_on_dst, A_surfxml_route_impact_on_dst); surf_parse_get_double(&impact_on_src_with_other_recv, A_surfxml_route_impact_on_src_with_other_recv); surf_parse_get_double(&impact_on_dst_with_other_send, A_surfxml_route_impact_on_dst_with_other_send); - + nb_link = 0; - link_list_capacity = 20; + link_list_capacity = 1; link_list = xbt_new(network_link_KCCFLN05_t, link_list_capacity); + } static void parse_route_elem(void) @@ -994,6 +1006,7 @@ static void parse_route_elem(void) static void parse_route_set_route(void) { + if( src_id != -1 && dst_id != -1 ) route_new(src_id, dst_id, link_list, nb_link, impact_on_src, impact_on_dst, impact_on_src_with_other_recv, impact_on_dst_with_other_send); @@ -1014,7 +1027,7 @@ static void parse_file(const char *file) /* Figuring out the router (added after GTNETS) */ surf_parse_reset_parser(); - STag_surfxml_router_fun=parse_route_set_routers; + STag_surfxml_router_fun=parse_routers; surf_parse_open(file); xbt_assert1((!surf_parse()),"Parse error in %s",file); surf_parse_close(); @@ -1134,46 +1147,3 @@ void surf_workstation_resource_init_KCCFLN05(const char *filename) xbt_dynar_push(resource_list, &surf_workstation_resource); } - -void surf_workstation_resource_init_KCCFLN05_proportional(const char *filename) -{ - xbt_assert0(!surf_cpu_resource, "CPU resource type already defined"); - xbt_assert0(!surf_network_resource, "network resource type already defined"); - resource_init_internal(); - parse_file(filename); - - surf_workstation_resource->common_public->name = "Workstation KCCFLN05 (proportional)"; - use_sdp_solver=1; - xbt_dynar_push(resource_list, &surf_workstation_resource); -} - -void surf_workstation_resource_init_KCCFLN05_Vegas(const char *filename) -{ - xbt_assert0(!surf_cpu_resource, "CPU resource type already defined"); - xbt_assert0(!surf_network_resource, "network resource type already defined"); - resource_init_internal(); - parse_file(filename); - - lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp, func_vegas_fpi); - - surf_workstation_resource->common_public->name = "Workstation KCCFLN05 (Vegas)"; - use_lagrange_solver=1; - xbt_dynar_push(resource_list, &surf_workstation_resource); -} - -void surf_workstation_resource_init_KCCFLN05_Reno(const char *filename) -{ - xbt_assert0(!surf_cpu_resource, "CPU resource type already defined"); - xbt_assert0(!surf_network_resource, "network resource type already defined"); - resource_init_internal(); - parse_file(filename); - - lmm_set_default_protocol_function(func_reno_f, func_reno_fp, func_reno_fpi); - - surf_workstation_resource->common_public->name = "Workstation KCCFLN05 (Reno)"; - use_lagrange_solver=1; - xbt_dynar_push(resource_list, &surf_workstation_resource); -} - - -