Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cosmetics in the creation of NS3 clusters
[simgrid.git] / src / surf / network_ns3.cpp
index a2956c8..148d737 100644 (file)
@@ -80,42 +80,34 @@ static void ns3_add_netcard(simgrid::kernel::routing::NetCard* netcard)
 #include "src/surf/xml/platf.hpp" // FIXME: move that back to the parsing area
 static void parse_ns3_add_cluster(sg_platf_cluster_cbarg_t cluster)
 {
-  const char *groups = nullptr;
-
-  int start, end, i;
-  unsigned int iter;
-
   xbt_dynar_t tab_elements_num = xbt_dynar_new(sizeof(int), nullptr);
 
-  char *router_id,*host_id;
-
   xbt_dynar_t radical_elements = xbt_str_split(cluster->radical, ",");
+  unsigned int iter;
+  const char* groups = nullptr;
   xbt_dynar_foreach(radical_elements, iter, groups) {
     xbt_dynar_t radical_ends = xbt_str_split(groups, "-");
 
-    switch (xbt_dynar_length(radical_ends)) {
-    case 1:
-      start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
+    if (xbt_dynar_length(radical_ends) == 1) {
+      int start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char*));
       xbt_dynar_push_as(tab_elements_num, int, start);
-      router_id = bprintf("ns3_%s%d%s", cluster->prefix, start, cluster->suffix);
+      char* router_id = bprintf("ns3_%s%d%s", cluster->prefix, start, cluster->suffix);
       simgrid::s4u::Host::by_name_or_create(router_id)->extension_set(NS3_EXTENSION_ID, ns3_add_host_cluster(router_id));
       XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id);
       free(router_id);
-      break;
 
-    case 2:
-      start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
-      end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *));
-      for (i = start; i <= end; i++){
+    } else if (xbt_dynar_length(radical_ends) == 2) {
+      int start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char*));
+      int end   = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char*));
+      for (int i = start; i <= end; i++) {
         xbt_dynar_push_as(tab_elements_num, int, i);
-        router_id = bprintf("ns3_%s%d%s", cluster->prefix, i, cluster->suffix);
+        char* router_id = bprintf("ns3_%s%d%s", cluster->prefix, i, cluster->suffix);
         simgrid::s4u::Host::by_name_or_create(router_id)->extension_set(NS3_EXTENSION_ID, ns3_add_host_cluster(router_id));
         XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id);
         free(router_id);
       }
-      break;
 
-    default:
+    } else {
       XBT_DEBUG("Malformed radical");
     }
   }
@@ -127,8 +119,8 @@ static void parse_ns3_add_cluster(sg_platf_cluster_cbarg_t cluster)
   char * bw =  bprintf("%fBps", cluster->bw);
 
   xbt_dynar_foreach(tab_elements_num,cpt,elmts) {
-    host_id   = bprintf("%s%d%s", cluster->prefix, elmts, cluster->suffix);
-    router_id = bprintf("ns3_%s%d%s", cluster->prefix, elmts, cluster->suffix);
+    char* host_id   = bprintf("%s%d%s", cluster->prefix, elmts, cluster->suffix);
+    char* router_id = bprintf("ns3_%s%d%s", cluster->prefix, elmts, cluster->suffix);
     XBT_DEBUG("Create link from '%s' to '%s'",host_id,router_id);
 
     ns3_node_t host_src = ns3_find_host(host_id);
@@ -251,7 +243,7 @@ Link* NetworkNS3Model::createLink(const char *name, double bandwidth, double lat
   return new LinkNS3(this, name, properties, bandwidth, latency);
 }
 
-Action *NetworkNS3Model::communicate(simgrid::kernel::routing::NetCard *src,simgrid::kernel::routing::NetCard *dst, double size, double rate)
+Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
 {
   return new NetworkNS3Action(this, size, src, dst);
 }
@@ -303,12 +295,11 @@ void NetworkNS3Model::updateActionsState(double now, double delta)
         action->getState() == Action::State::running){
       double data_delta_sent = sgFlow->sentBytes_ - action->lastSent_;
 
-      std::vector<Link*> *route = new std::vector<Link*>();
+      std::vector<Link*> route = std::vector<Link*>();
 
-      routing_platf->getRouteAndLatency (action->src_, action->dst_, route, nullptr);
-      for (auto link : *route)
+      routing_platf->getRouteAndLatency(action->src_->pimpl_netcard, action->dst_->pimpl_netcard, &route, nullptr);
+      for (auto link : route)
         TRACE_surf_link_set_utilization (link->getName(), action->getCategory(), (data_delta_sent)/delta, now-delta, delta);
-      delete route;
 
       action->lastSent_ = sgFlow->sentBytes_;
     }
@@ -364,14 +355,14 @@ void LinkNS3::setLatencyTrace(tmgr_trace_t trace) {
  * Action *
  **********/
 
-NetworkNS3Action::NetworkNS3Action(Model *model, double size, simgrid::kernel::routing::NetCard *src, simgrid::kernel::routing::NetCard *dst)
-: NetworkAction(model, size, false)
+NetworkNS3Action::NetworkNS3Action(Model* model, double size, s4u::Host* src, s4u::Host* dst)
+    : NetworkAction(model, size, false)
 {
-  XBT_DEBUG("Communicate from %s to %s", src->name(), dst->name());
+  XBT_DEBUG("Communicate from %s to %s", src->name().c_str(), dst->name().c_str());
 
   src_ = src;
   dst_ = dst;
-  ns3_create_flow(src->name(), dst->name(), surf_get_clock(), size, this);
+  ns3_create_flow(src->name().c_str(), dst->name().c_str(), surf_get_clock(), size, this);
 
   Link::onCommunicate(this, src, dst);
 }