X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/27032003460976597e8a3fc709c0aae9fbc653a5..7e3052a90110227b0628cfde015552c1dd154563:/src/surf/xml/surfxml_sax_cb.cpp diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index 7d0f2fc34c..ce18fa9a58 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -177,9 +177,10 @@ unit_scale::unit_scale(std::initializer_list surf_parse_get_bandwidths(const char* string, const char* entity_kind, const std::string& name) +{ + static const unit_scale units{std::make_tuple("bps", 0.125, 2, true), std::make_tuple("bps", 0.125, 10, true), + std::make_tuple("Bps", 1.0, 2, true), std::make_tuple("Bps", 1.0, 10, true)}; + + std::vector bandwidths; + std::vector tokens; + boost::split(tokens, string, boost::is_any_of(";")); + for (auto token : tokens) { + bandwidths.push_back(surf_parse_get_value_with_unit( + token.c_str(), units, entity_kind, name, + "Append 'Bps' to get bytes per second (or 'bps' for bits but 1Bps = 8bps)", "Bps")); + } + + return bandwidths; +} + double surf_parse_get_speed(const char* string, const char* entity_kind, const std::string& name) { static const unit_scale units{std::make_tuple("f", 1.0, 10, true), std::make_tuple("flops", 1.0, 10, false)}; @@ -391,7 +409,7 @@ void STag_surfxml_platform() { surf_parsed_filename.c_str(), version); } void ETag_surfxml_platform(){ - simgrid::s4u::on_platform_created(); + simgrid::s4u::Engine::on_platform_created(); } void STag_surfxml_host(){ @@ -444,6 +462,12 @@ void ETag_surfxml_host() { sg_platf_new_host(&host); } +void STag_surfxml_disk() { + THROW_UNIMPLEMENTED; +} +void ETag_surfxml_disk() { +} + void STag_surfxml_host___link(){ XBT_DEBUG("Create a Host_link for %s",A_surfxml_host___link_id); simgrid::kernel::routing::HostLinkCreationArgs host_link; @@ -588,7 +612,7 @@ void ETag_surfxml_link(){ current_property_set = nullptr; link.id = std::string(A_surfxml_link_id); - link.bandwidth = surf_parse_get_bandwidth(A_surfxml_link_bandwidth, "bandwidth of link", link.id.c_str()); + link.bandwidths = surf_parse_get_bandwidths(A_surfxml_link_bandwidth, "bandwidth of link", link.id.c_str()); link.bandwidth_trace = A_surfxml_link_bandwidth___file[0] ? simgrid::kernel::profile::Profile::from_file(A_surfxml_link_bandwidth___file) : nullptr; @@ -614,6 +638,9 @@ void ETag_surfxml_link(){ case A_surfxml_link_sharing___policy_SPLITDUPLEX: link.policy = simgrid::s4u::Link::SharingPolicy::SPLITDUPLEX; break; + case A_surfxml_link_sharing___policy_WIFI: + link.policy = simgrid::s4u::Link::SharingPolicy::WIFI; + break; default: surf_parse_error(std::string("Invalid sharing policy in link ") + link.id); } @@ -659,7 +686,8 @@ void ETag_surfxml_backbone(){ link.properties = nullptr; link.id = std::string(A_surfxml_backbone_id); - link.bandwidth = surf_parse_get_bandwidth(A_surfxml_backbone_bandwidth, "bandwidth of backbone", link.id.c_str()); + link.bandwidths.push_back( + surf_parse_get_bandwidth(A_surfxml_backbone_bandwidth, "bandwidth of backbone", link.id.c_str())); link.latency = surf_parse_get_time(A_surfxml_backbone_latency, "latency of backbone", link.id.c_str()); link.policy = simgrid::s4u::Link::SharingPolicy::SHARED;