Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move some of the file mgmt logic out of the storage model
[simgrid.git] / src / kernel / routing / FatTreeZone.cpp
index 20c84ab..a364180 100644 (file)
@@ -5,13 +5,12 @@
 
 #include <fstream>
 #include <sstream>
+#include <string>
 
 #include "src/kernel/routing/FatTreeZone.hpp"
-#include "src/kernel/routing/NetCard.hpp"
+#include "src/kernel/routing/NetPoint.hpp"
 #include "src/surf/network_interface.hpp"
 
-#include "xbt/lib.h"
-
 #include <boost/algorithm/string/classification.hpp>
 #include <boost/algorithm/string/split.hpp>
 
@@ -57,7 +56,7 @@ bool FatTreeZone::isInSubTree(FatTreeNode* root, FatTreeNode* node)
   return true;
 }
 
-void FatTreeZone::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency)
+void FatTreeZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency)
 {
 
   if (dst->isRouter() || src->isRouter())
@@ -88,7 +87,7 @@ void FatTreeZone::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg
   FatTreeNode* currentNode = source;
 
   // up part
-  while (!isInSubTree(currentNode, destination)) {
+  while (not isInSubTree(currentNode, destination)) {
     int d = destination->position; // as in d-mod-k
 
     for (unsigned int i = 0; i < currentNode->level; i++)
@@ -235,7 +234,6 @@ void FatTreeZone::generateSwitches()
 {
   XBT_DEBUG("Generating switches.");
   this->nodesByLevel_.resize(this->levels_ + 1, 0);
-  unsigned int nodesRequired = 0;
 
   // Take care of the number of nodes by level
   this->nodesByLevel_[0] = 1;
@@ -259,7 +257,6 @@ void FatTreeZone::generateSwitches()
       nodesInThisLevel *= this->lowerLevelNodesNumber_[j];
 
     this->nodesByLevel_[i + 1] = nodesInThisLevel;
-    nodesRequired += nodesInThisLevel;
   }
 
   // Create the switches
@@ -431,26 +428,22 @@ void FatTreeZone::generateDotFile(const std::string& filename) const
 FatTreeNode::FatTreeNode(sg_platf_cluster_cbarg_t cluster, int id, int level, int position)
     : id(id), level(level), position(position)
 {
-  s_sg_platf_link_cbarg_t linkTemplate;
+  LinkCreationArgs linkTemplate;
   if (cluster->limiter_link) {
-    memset(&linkTemplate, 0, sizeof(linkTemplate));
     linkTemplate.bandwidth = cluster->limiter_link;
     linkTemplate.latency   = 0;
     linkTemplate.policy    = SURF_LINK_SHARED;
-    linkTemplate.id        = bprintf("limiter_%d", id);
+    linkTemplate.id        = "limiter_"+std::to_string(id);
     sg_platf_new_link(&linkTemplate);
-    this->limiterLink = Link::byName(linkTemplate.id);
-    free((void*)linkTemplate.id);
+    this->limiterLink = surf::LinkImpl::byName(linkTemplate.id.c_str());
   }
   if (cluster->loopback_bw || cluster->loopback_lat) {
-    memset(&linkTemplate, 0, sizeof(linkTemplate));
     linkTemplate.bandwidth = cluster->loopback_bw;
     linkTemplate.latency   = cluster->loopback_lat;
     linkTemplate.policy    = SURF_LINK_FATPIPE;
-    linkTemplate.id        = bprintf("loopback_%d", id);
+    linkTemplate.id        = "loopback_"+ std::to_string(id);
     sg_platf_new_link(&linkTemplate);
-    this->loopback = Link::byName(linkTemplate.id);
-    free((void*)linkTemplate.id);
+    this->loopback = surf::LinkImpl::byName(linkTemplate.id.c_str());
   }
 }
 
@@ -458,29 +451,24 @@ FatTreeLink::FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode* downNode
     : upNode(upNode), downNode(downNode)
 {
   static int uniqueId = 0;
-  s_sg_platf_link_cbarg_t linkTemplate;
-  memset(&linkTemplate, 0, sizeof(linkTemplate));
+  LinkCreationArgs linkTemplate;
   linkTemplate.bandwidth = cluster->bw;
   linkTemplate.latency   = cluster->lat;
   linkTemplate.policy    = cluster->sharing_policy; // sthg to do with that ?
-  linkTemplate.id        = bprintf("link_from_%d_to_%d_%d", downNode->id, upNode->id, uniqueId);
+  linkTemplate.id =
+      "link_from_" + std::to_string(downNode->id) + "_" + std::to_string(upNode->id) + "_" + std::to_string(uniqueId);
   sg_platf_new_link(&linkTemplate);
-  Link* link;
-  std::string tmpID;
+
   if (cluster->sharing_policy == SURF_LINK_FULLDUPLEX) {
-    tmpID          = std::string(linkTemplate.id) + "_UP";
-    link           = Link::byName(tmpID.c_str());
-    this->upLink   = link; // check link?
+    std::string tmpID = std::string(linkTemplate.id) + "_UP";
+    this->upLink      = surf::LinkImpl::byName(tmpID.c_str()); // check link?
     tmpID          = std::string(linkTemplate.id) + "_DOWN";
-    link           = Link::byName(tmpID.c_str());
-    this->downLink = link; // check link ?
+    this->downLink    = surf::LinkImpl::byName(tmpID.c_str()); // check link ?
   } else {
-    link           = Link::byName(linkTemplate.id);
-    this->upLink   = link;
-    this->downLink = link;
+    this->upLink   = surf::LinkImpl::byName(linkTemplate.id.c_str());
+    this->downLink = this->upLink;
   }
   uniqueId++;
-  free((void*)linkTemplate.id);
 }
 }
 }