- char* link_id = bprintf("%s_link_from_%i_to_%i", cluster->id, id, neighbor_rank_id);
- link.id = link_id;
- link.bandwidth = cluster->bw;
- link.latency = cluster->lat;
- link.policy = cluster->sharing_policy;
- sg_platf_new_link(&link);
- surf::LinkImpl* linkUp;
- surf::LinkImpl* linkDown;
- if (link.policy == SURF_LINK_FULLDUPLEX) {
- char* tmp_link = bprintf("%s_UP", link_id);
- linkUp = surf::LinkImpl::byName(tmp_link);
- free(tmp_link);
- tmp_link = bprintf("%s_DOWN", link_id);
- linkDown = surf::LinkImpl::byName(tmp_link);
- free(tmp_link);
+ std::string link_id =
+ std::string(cluster->id) + "_link_from_" + std::to_string(id) + "_to_" + std::to_string(neighbor_rank_id);
+ const s4u::Link* linkup;
+ const s4u::Link* linkdown;
+ if (cluster->sharing_policy == s4u::Link::SharingPolicy::SPLITDUPLEX) {
+ linkup = create_link(link_id + "_UP", std::vector<double>{cluster->bw})->set_latency(cluster->lat)->seal();
+ linkdown = create_link(link_id + "_DOWN", std::vector<double>{cluster->bw})->set_latency(cluster->lat)->seal();
+