-/* Copyright (c) 2014-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include <sstream>
#include <string>
-#include "src/kernel/routing/FatTreeZone.hpp"
-#include "src/kernel/routing/NetPoint.hpp"
+#include "simgrid/kernel/routing/FatTreeZone.hpp"
+#include "simgrid/kernel/routing/NetPoint.hpp"
#include "src/surf/network_interface.hpp"
#include <boost/algorithm/string/classification.hpp>
return true;
}
-void FatTreeZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency)
+void FatTreeZone::getLocalRoute(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency)
{
if (dst->isRouter() || src->isRouter())
/* In case destination is the source, and there is a loopback, let's use it instead of going up to a switch */
if (source->id == destination->id && this->hasLoopback_) {
- into->link_list->push_back(source->loopback);
+ into->link_list.push_back(source->loopback);
if (latency)
*latency += source->loopback->latency();
return;
int k = this->upperLevelNodesNumber_[currentNode->level];
d = d % k;
- into->link_list->push_back(currentNode->parents[d]->upLink);
+ into->link_list.push_back(currentNode->parents[d]->upLink);
if (latency)
*latency += currentNode->parents[d]->upLink->latency();
if (this->hasLimiter_)
- into->link_list->push_back(currentNode->limiterLink);
+ into->link_list.push_back(currentNode->limiterLink);
currentNode = currentNode->parents[d]->upNode;
}
while (currentNode != destination) {
for (unsigned int i = 0; i < currentNode->children.size(); i++) {
if (i % this->lowerLevelNodesNumber_[currentNode->level - 1] == destination->label[currentNode->level - 1]) {
- into->link_list->push_back(currentNode->children[i]->downLink);
+ into->link_list.push_back(currentNode->children[i]->downLink);
if (latency)
*latency += currentNode->children[i]->downLink->latency();
currentNode = currentNode->children[i]->downNode;
if (this->hasLimiter_)
- into->link_list->push_back(currentNode->limiterLink);
+ into->link_list.push_back(currentNode->limiterLink);
XBT_DEBUG("%d(%u,%u) is accessible through %d(%u,%u)", destination->id, destination->level,
destination->position, currentNode->id, currentNode->level, currentNode->position);
}
std::vector<std::string> parameters;
std::vector<std::string> tmp;
boost::split(parameters, cluster->topo_parameters, boost::is_any_of(";"));
+ const std::string error_msg {"Fat trees are defined by the levels number and 3 vectors, see the documentation for more information"};
// TODO : we have to check for zeros and negative numbers, or it might crash
if (parameters.size() != 4) {
- surf_parse_error(
- "Fat trees are defined by the levels number and 3 vectors, see the documentation for more information");
+ surf_parse_error(error_msg);
}
// The first parts of topo_parameters should be the levels number
// Then, a l-sized vector standing for the children number by level
boost::split(tmp, parameters[1], boost::is_any_of(","));
if (tmp.size() != this->levels_) {
- surf_parse_error("Fat trees are defined by the levels number and 3 vectors"
- ", see the documentation for more information");
+ surf_parse_error(error_msg);
}
for (size_t i = 0; i < tmp.size(); i++) {
try {
// Then, a l-sized vector standing for the parents number by level
boost::split(tmp, parameters[2], boost::is_any_of(","));
if (tmp.size() != this->levels_) {
- surf_parse_error("Fat trees are defined by the levels number and 3 vectors"
- ", see the documentation for more information");
+ surf_parse_error(error_msg);
}
for (size_t i = 0; i < tmp.size(); i++) {
try {
// Finally, a l-sized vector standing for the ports number with the lower level
boost::split(tmp, parameters[3], boost::is_any_of(","));
if (tmp.size() != this->levels_) {
- surf_parse_error("Fat trees are defined by the levels number and 3 vectors"
- ", see the documentation for more information");
+ surf_parse_error(error_msg);
}
for (size_t i = 0; i < tmp.size(); i++) {
try {
"link_from_" + std::to_string(downNode->id) + "_" + std::to_string(upNode->id) + "_" + std::to_string(uniqueId);
sg_platf_new_link(&linkTemplate);
- if (cluster->sharing_policy == SURF_LINK_FULLDUPLEX) {
+ if (cluster->sharing_policy == SURF_LINK_SPLITDUPLEX) {
std::string tmpID = std::string(linkTemplate.id) + "_UP";
this->upLink = surf::LinkImpl::byName(tmpID); // check link?
tmpID = std::string(linkTemplate.id) + "_DOWN";