Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid into no_simix_global
[simgrid.git] / src / surf / xml / surfxml_sax_cb.cpp
index 900b3aa..62947af 100644 (file)
@@ -28,8 +28,7 @@
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_parse, surf, "Logging specific to the SURF parsing module");
 
 std::string surf_parsed_filename; // Currently parsed file (for the error messages)
-std::vector<simgrid::kernel::resource::LinkImpl*>
-    parsed_link_list; /* temporary store of current link list of a route */
+std::vector<simgrid::s4u::LinkInRoute> parsed_link_list; /* temporary store of current link list of a route */
 
 /* Helping functions */
 void surf_parse_assert(bool cond, const std::string& msg)
@@ -237,8 +236,8 @@ void STag_surfxml_host()
   property_sets.emplace_back();
   host.id = A_surfxml_host_id;
 
-  host.speed_per_pstate =
-      xbt_parse_get_all_speeds(surf_parsed_filename, surf_parse_lineno, A_surfxml_host_speed, "speed of host", host.id);
+  host.speed_per_pstate = xbt_parse_get_all_speeds(surf_parsed_filename, surf_parse_lineno, A_surfxml_host_speed,
+                                                   "speed of host " + host.id);
 
   XBT_DEBUG("pstate: %s", A_surfxml_host_pstate);
   host.core_amount = surf_parse_get_int(A_surfxml_host_core);
@@ -276,9 +275,9 @@ void ETag_surfxml_disk() {
 
   disk.id       = A_surfxml_disk_id;
   disk.read_bw  = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_disk_read___bw,
-                                         "read_bw of disk ", disk.id);
+                                         "read_bw of disk " + disk.id);
   disk.write_bw = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_disk_write___bw,
-                                          "write_bw of disk ", disk.id);
+                                          "write_bw of disk " + disk.id);
 
   sg_platf_new_disk(&disk);
 }
@@ -307,29 +306,30 @@ void ETag_surfxml_cluster(){
   cluster.suffix      = A_surfxml_cluster_suffix;
   explodesRadical(A_surfxml_cluster_radical, &cluster.radicals);
 
-  cluster.speeds      = xbt_parse_get_all_speeds(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_speed,
-                                            "speed of cluster", cluster.id);
+  cluster.speeds = xbt_parse_get_all_speeds(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_speed,
+                                            "speed of cluster " + cluster.id);
   cluster.core_amount = surf_parse_get_int(A_surfxml_cluster_core);
-  cluster.bw = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_bw, "bw of cluster",
-                                       cluster.id);
-  cluster.lat =
-      xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_lat, "lat of cluster", cluster.id);
+  cluster.bw          = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_bw,
+                                       "bw of cluster " + cluster.id);
+  cluster.lat = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_lat,
+                                   "lat of cluster " + cluster.id);
   if(strcmp(A_surfxml_cluster_bb___bw,""))
     cluster.bb_bw = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_bb___bw,
-                                            "bb_bw of cluster", cluster.id);
+                                            "bb_bw of cluster " + cluster.id);
   if(strcmp(A_surfxml_cluster_bb___lat,""))
     cluster.bb_lat = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_bb___lat,
-                                        "bb_lat of cluster", cluster.id);
+                                        "bb_lat of cluster " + cluster.id);
   if(strcmp(A_surfxml_cluster_limiter___link,""))
     cluster.limiter_link =
         xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_limiter___link,
-                                "limiter_link of cluster", cluster.id);
+                                "limiter_link of cluster " + cluster.id);
   if(strcmp(A_surfxml_cluster_loopback___bw,""))
-    cluster.loopback_bw = xbt_parse_get_bandwidth(
-        surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_loopback___bw, "loopback_bw of cluster", cluster.id);
+    cluster.loopback_bw =
+        xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_loopback___bw,
+                                "loopback_bw of cluster " + cluster.id);
   if(strcmp(A_surfxml_cluster_loopback___lat,""))
     cluster.loopback_lat = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cluster_loopback___lat,
-                                              "loopback_lat of cluster", cluster.id);
+                                              "loopback_lat of cluster " + cluster.id);
 
   switch(AX_surfxml_cluster_topology){
   case A_surfxml_cluster_topology_FLAT:
@@ -378,7 +378,7 @@ void ETag_surfxml_cluster(){
     surf_parse_error(std::string("Invalid bb sharing policy in cluster ") + cluster.id);
   }
 
-  sg_platf_new_cluster(&cluster);
+  sg_platf_new_tag_cluster(&cluster);
 }
 
 void STag_surfxml_cluster(){
@@ -391,11 +391,11 @@ void STag_surfxml_cabinet(){
   cabinet.prefix  = A_surfxml_cabinet_prefix;
   cabinet.suffix  = A_surfxml_cabinet_suffix;
   cabinet.speed   = xbt_parse_get_speed(surf_parsed_filename, surf_parse_lineno, A_surfxml_cabinet_speed,
-                                      "speed of cabinet", cabinet.id.c_str());
-  cabinet.bw  = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cabinet_bw, "bw of cabinet",
-                                       cabinet.id.c_str());
-  cabinet.lat = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cabinet_lat, "lat of cabinet",
-                                   cabinet.id.c_str());
+                                      "speed of cabinet " + cabinet.id);
+  cabinet.bw = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_cabinet_bw,
+                                       "bw of cabinet " + cabinet.id);
+  cabinet.lat = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_cabinet_lat,
+                                   "lat of cabinet " + cabinet.id);
   explodesRadical(A_surfxml_cabinet_radical, &cabinet.radicals);
 
   sg_platf_new_cabinet(&cabinet);
@@ -405,12 +405,12 @@ void STag_surfxml_peer(){
   simgrid::kernel::routing::PeerCreationArgs peer;
 
   peer.id          = std::string(A_surfxml_peer_id);
-  peer.speed       = xbt_parse_get_speed(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_speed, "speed of peer",
-                                   peer.id.c_str());
-  peer.bw_in = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_bw___in, "bw_in of peer",
-                                       peer.id.c_str());
-  peer.bw_out      = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_bw___out,
-                                        "bw_out of peer", peer.id.c_str());
+  peer.speed =
+      xbt_parse_get_speed(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_speed, "speed of peer " + peer.id);
+  peer.bw_in = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_bw___in,
+                                       "bw_in of peer " + peer.id);
+  peer.bw_out = xbt_parse_get_bandwidth(surf_parsed_filename, surf_parse_lineno, A_surfxml_peer_bw___out,
+                                        "bw_out of peer " + peer.id);
   peer.coord       = A_surfxml_peer_coordinates;
   peer.speed_trace = nullptr;
   if (A_surfxml_peer_availability___file[0] != '\0') {
@@ -442,12 +442,12 @@ void ETag_surfxml_link(){
 
   link.id                  = std::string(A_surfxml_link_id);
   link.bandwidths          = xbt_parse_get_bandwidths(surf_parsed_filename, surf_parse_lineno, A_surfxml_link_bandwidth,
-                                             "bandwidth of link", link.id.c_str());
+                                             "bandwidth of link " + link.id);
   link.bandwidth_trace     = A_surfxml_link_bandwidth___file[0]
                              ? simgrid::kernel::profile::Profile::from_file(A_surfxml_link_bandwidth___file)
                              : nullptr;
-  link.latency = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_link_latency, "latency of link",
-                                    link.id.c_str());
+  link.latency =
+      xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_link_latency, "latency of link " + link.id);
   link.latency_trace       = A_surfxml_link_latency___file[0]
                            ? simgrid::kernel::profile::Profile::from_file(A_surfxml_link_latency___file)
                            : nullptr;
@@ -481,17 +481,20 @@ void ETag_surfxml_link(){
 
 void STag_surfxml_link___ctn()
 {
-  simgrid::kernel::resource::LinkImpl* link = nullptr;
+  const simgrid::s4u::Link* link;
+  simgrid::s4u::LinkInRoute::Direction direction = simgrid::s4u::LinkInRoute::Direction::NONE;
   switch (A_surfxml_link___ctn_direction) {
   case AU_surfxml_link___ctn_direction:
   case A_surfxml_link___ctn_direction_NONE:
-    link = simgrid::s4u::Link::by_name(std::string(A_surfxml_link___ctn_id))->get_impl();
+    link = simgrid::s4u::Link::by_name(std::string(A_surfxml_link___ctn_id));
     break;
   case A_surfxml_link___ctn_direction_UP:
-    link = simgrid::s4u::Link::by_name(std::string(A_surfxml_link___ctn_id) + "_UP")->get_impl();
+    link      = simgrid::s4u::SplitDuplexLink::by_name(std::string(A_surfxml_link___ctn_id));
+    direction = simgrid::s4u::LinkInRoute::Direction::UP;
     break;
   case A_surfxml_link___ctn_direction_DOWN:
-    link = simgrid::s4u::Link::by_name(std::string(A_surfxml_link___ctn_id) + "_DOWN")->get_impl();
+    link      = simgrid::s4u::SplitDuplexLink::by_name(std::string(A_surfxml_link___ctn_id));
+    direction = simgrid::s4u::LinkInRoute::Direction::DOWN;
     break;
   default:
     surf_parse_error(std::string("Invalid direction for link ") + A_surfxml_link___ctn_id);
@@ -509,21 +512,21 @@ void STag_surfxml_link___ctn()
       dirname = "";
   }
   surf_parse_assert(link != nullptr, std::string("No such link: '") + A_surfxml_link___ctn_id + "'" + dirname);
-  parsed_link_list.push_back(link);
+  parsed_link_list.emplace_back(link, direction);
 }
 
-void ETag_surfxml_backbone(){
-  simgrid::kernel::routing::LinkCreationArgs link;
+void ETag_surfxml_backbone()
+{
+  auto link = std::make_unique<simgrid::kernel::routing::LinkCreationArgs>();
 
-  link.id = std::string(A_surfxml_backbone_id);
-  link.bandwidths.push_back(xbt_parse_get_bandwidth(
-      surf_parsed_filename, surf_parse_lineno, A_surfxml_backbone_bandwidth, "bandwidth of backbone", link.id.c_str()));
-  link.latency    = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_backbone_latency,
-                                    "latency of backbone", link.id.c_str());
-  link.policy     = simgrid::s4u::Link::SharingPolicy::SHARED;
+  link->id = std::string(A_surfxml_backbone_id);
+  link->bandwidths.push_back(xbt_parse_get_bandwidth(
+      surf_parsed_filename, surf_parse_lineno, A_surfxml_backbone_bandwidth, "bandwidth of backbone " + link->id));
+  link->latency = xbt_parse_get_time(surf_parsed_filename, surf_parse_lineno, A_surfxml_backbone_latency,
+                                     "latency of backbone " + link->id);
+  link->policy  = simgrid::s4u::Link::SharingPolicy::SHARED;
 
-  sg_platf_new_link(&link);
-  routing_cluster_add_backbone(simgrid::s4u::Link::by_name(std::string(A_surfxml_backbone_id))->get_impl());
+  routing_cluster_add_backbone(std::move(link));
 }
 
 void STag_surfxml_route(){
@@ -614,7 +617,7 @@ void ETag_surfxml_bypassRoute(){
 
   route.link_list.swap(parsed_link_list);
 
-  sg_platf_new_bypassRoute(&route);
+  sg_platf_new_bypass_route(&route);
 }
 
 void ETag_surfxml_bypassASroute()
@@ -638,7 +641,7 @@ void ETag_surfxml_bypassZoneRoute()
   ASroute.gw_src = sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___src);
   ASroute.gw_dst = sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___dst);
 
-  sg_platf_new_bypassRoute(&ASroute);
+  sg_platf_new_bypass_route(&ASroute);
 }
 
 void ETag_surfxml_trace(){
@@ -700,15 +703,14 @@ void STag_surfxml_zone()
   simgrid::kernel::routing::ZoneCreationArgs zone;
   zone.id      = A_surfxml_zone_id;
   zone.routing = A_surfxml_zone_routing;
-  sg_platf_new_Zone_begin(&zone);
+  sg_platf_new_zone_begin(&zone);
 }
 
 void ETag_surfxml_zone()
 {
-  sg_platf_new_Zone_set_properties(property_sets.back());
+  sg_platf_new_zone_set_properties(property_sets.back());
   property_sets.pop_back();
-
-  sg_platf_new_Zone_seal();
+  sg_platf_new_zone_seal();
 }
 
 void STag_surfxml_config()
@@ -732,7 +734,7 @@ void ETag_surfxml_config()
     keys.push_back(kv.first);
   }
   std::sort(keys.begin(), keys.end());
-  for (std::string key : keys) {
+  for (const std::string& key : keys) {
     if (simgrid::config::is_default(key.c_str())) {
       std::string cfg = key + ":" + current_property_set.at(key);
       simgrid::config::set_parse(cfg);