Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
inline a signal
[simgrid.git] / src / surf / sg_platf.cpp
index e3898d1..3f68d25 100644 (file)
@@ -172,6 +172,27 @@ void sg_platf_new_router(sg_platf_router_cbarg_t router)
 }
 
 void sg_platf_new_link(sg_platf_link_cbarg_t link){
+  std::vector<char*> names;
+
+  if (link->policy == SURF_LINK_FULLDUPLEX) {
+    names.push_back(bprintf("%s_UP", link->id));
+    names.push_back(bprintf("%s_DOWN", link->id));
+  } else {
+    names.push_back(xbt_strdup(link->id));
+  }
+  for (auto link_name : names) {
+    Link *l = surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy, link->properties);
+
+    if (link->latency_trace)
+      l->setLatencyTrace(link->latency_trace);
+    if (link->bandwidth_trace)
+      l->setBandwidthTrace(link->bandwidth_trace);
+    if (link->state_trace)
+      l->setStateTrace(link->state_trace);
+
+    xbt_free(link_name);
+  }
+
   simgrid::surf::on_link(link);
 }