protected:
char *name_ = nullptr;
xbt_dict_t children_ = xbt_dict_new_homogeneous(nullptr); // sub-ASes
- xbt_dynar_t vertices_ = xbt_dynar_new(sizeof(char*),nullptr); // our content, as known to our graph routing algorithm (maps vertexId -> vertex)
+ std::vector<kernel::routing::NetCard*>vertices_; // our content, as known to our graph routing algorithm (maps vertexId -> vertex)
std::map<std::pair<std::string, std::string>, std::vector<surf::Link*>*> bypassRoutes_; // srcName x dstName -> route
void AsCluster::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
{
- int isrc;
- int table_size = xbt_dynar_length(vertices_);
-
- NetCard *src;
xbt_node_t current, previous, backboneNode = nullptr, routerNode;
s_surf_parsing_link_up_down_t info;
new_xbt_graph_edge(graph, routerNode, backboneNode, edges);
}
- for (isrc = 0; isrc < table_size; isrc++) {
- src = xbt_dynar_get_as(vertices_, isrc, NetCard*);
-
+ for (auto src: vertices_){
if (! src->isRouter()) {
previous = new_xbt_graph_node(graph, src->name(), nodes);
info = xbt_dynar_get_as(privateLinks_, src->id(), s_surf_parsing_link_up_down_t);
if (info.linkUp) { // link up
-
- const char *link_name = static_cast<simgrid::surf::Resource*>(
- info.linkUp)->getName();
+ const char *link_name = static_cast<simgrid::surf::Resource*>(info.linkUp)->getName();
current = new_xbt_graph_node(graph, link_name, nodes);
new_xbt_graph_edge(graph, previous, current, edges);
} else {
new_xbt_graph_edge(graph, current, routerNode, edges);
}
-
}
if (info.linkDown) { // link down
}
}
}
-
}
}
}
AsFloyd::~AsFloyd(){
- int table_size = static_cast<int>(xbt_dynar_length(vertices_));
+ int table_size = static_cast<int>(vertices_.size());
if (linkTable_ == nullptr) // Dealing with a parse error in the file?
return;
/* Delete link_table */
void AsFloyd::getRouteAndLatency(NetCard *src, NetCard *dst, sg_platf_route_cbarg_t route, double *lat)
{
- size_t table_size = xbt_dynar_length(vertices_);
+ size_t table_size = vertices_.size();
getRouteCheckParams(src, dst);
void AsFloyd::addRoute(sg_platf_route_cbarg_t route)
{
/* set the size of table routing */
- int table_size = static_cast<int>(xbt_dynar_length(vertices_));
+ int table_size = static_cast<int>(vertices_.size());
addRouteCheckParams(route);
}
void AsFloyd::seal(){
-
/* set the size of table routing */
- size_t table_size = xbt_dynar_length(vertices_);
+ size_t table_size = vertices_.size();
if(!linkTable_) {
/* Create Cost, Predecessor and Link tables */
sg_platf_route_cbarg_t e_route;
/* set utils vars */
- int table_size = (int)xbt_dynar_length(vertices_);
+ int table_size = static_cast<int>(vertices_.size());
/* Create table if necessary */
if (!routingTable_)
AsFull::~AsFull(){
if (routingTable_) {
- int table_size = (int)xbt_dynar_length(vertices_);
- int i, j;
+ int table_size = static_cast<int>(vertices_.size());
/* Delete routing table */
- for (i = 0; i < table_size; i++)
- for (j = 0; j < table_size; j++) {
+ for (int i = 0; i < table_size; i++)
+ for (int j = 0; j < table_size; j++) {
if (TO_ROUTE_FULL(i,j)){
delete TO_ROUTE_FULL(i,j)->link_list;
xbt_free(TO_ROUTE_FULL(i,j));
src->name(), src->id(), dst->name(), dst->id());
/* set utils vars */
- size_t table_size = xbt_dynar_length(vertices_);
+ size_t table_size = vertices_.size();
sg_platf_route_cbarg_t e_route = nullptr;
addRouteCheckParams(route);
- size_t table_size = xbt_dynar_length(vertices_);
+ size_t table_size = vertices_.size();
if (!routingTable_)
routingTable_ = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size);
{
}
-AsRoutedGraph::~AsRoutedGraph()
-{
-}
-
+AsRoutedGraph::~AsRoutedGraph()=default;
}}} // namespace simgrid::kernel::routing
int len = strlen(sn) + strlen(dn) + 1;
char *name = (char *) xbt_malloc(len * sizeof(char));
-
snprintf(name, len, "%s%s", sn, dn);
xbt_edge_t ret = (xbt_edge_t) xbt_dict_get_or_null(edges, name);
if (ret == nullptr) {
sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t,1);
route->link_list = new std::vector<Link*>();
- int table_size = (int)xbt_dynar_length(vertices_);
+ int table_size = static_cast<int>(vertices_.size());
for(int src=0; src < table_size; src++) {
for(int dst=0; dst< table_size; dst++) {
route->link_list->clear();
- NetCard *src_elm = xbt_dynar_get_as(vertices_, src, NetCard*);
- NetCard *dst_elm = xbt_dynar_get_as(vertices_, dst, NetCard*);
+ NetCard *src_elm = vertices_.at(src);
+ NetCard *dst_elm = vertices_.at(dst);
this->getRouteAndLatency(src_elm, dst_elm,route, nullptr);
if (route->link_list->size() == 1) {
void AsRoutedGraph::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
{
- int src, dst;
- int table_size = xbt_dynar_length(vertices_);
-
-
- for (src = 0; src < table_size; src++) {
- NetCard *my_src =
- xbt_dynar_get_as(vertices_, src, NetCard*);
- for (dst = 0; dst < table_size; dst++) {
- if (src == dst)
+ for (auto my_src: vertices_){
+ for (auto my_dst: vertices_){
+ if (my_src == my_dst)
continue;
- NetCard *my_dst =
- xbt_dynar_get_as(vertices_, dst, NetCard*);
sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
route->link_list = new std::vector<Link*>();
}
}
-
/* ************************************************************************** */
/* ************************* GENERIC AUX FUNCTIONS ************************** */
/* change a route containing link names into a route containing link entities */
xbt_dict_free(&children_);
- xbt_dynar_free(&vertices_);
for (auto &kv : bypassRoutes_)
delete kv.second;
xbt_free(name_);
{
xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t), nullptr);
- for (unsigned int index = 0; index < xbt_dynar_length(vertices_); index++) {
- kernel::routing::NetCard *card = xbt_dynar_get_as(vertices_, index, kernel::routing::NetCard*);
- s4u::Host *host = simgrid::s4u::Host::by_name_or_null(card->name());
+ for (auto card : vertices_) {
+ s4u::Host *host = simgrid::s4u::Host::by_name_or_null(card->name());
if (host!=nullptr)
xbt_dynar_push(res, &host);
}
}
int As::addComponent(kernel::routing::NetCard *elm) {
- xbt_dynar_push_as(vertices_, kernel::routing::NetCard*, elm);
- return xbt_dynar_length(vertices_)-1;
+ vertices_.push_back(elm);
+ return vertices_.size()-1; //FIXME -1 ?
}
void As::addRoute(sg_platf_route_cbarg_t /*route*/){