p_router = 0;
p_has_limiter = 0;
p_has_loopback = 0;
- p_nb_links_per_node =0;
+ p_nb_links_per_node = 1;
}
/* Business methods */
XBT_VERB("cluster_get_route_and_latency from '%s'[%d] to '%s'[%d]",
src->p_name, src->m_id, dst->p_name, dst->m_id);
- //retrieve the number of links we stored for each node
- int nb_links_per_node = p_has_loopback + p_has_limiter +
- (p_dimensions ? xbt_dynar_length(p_dimensions) : 1);
-
if (src->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router
if((src->m_id == dst->m_id) && p_has_loopback ){
- info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * nb_links_per_node, s_surf_parsing_link_up_down_t);
+ info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node, s_surf_parsing_link_up_down_t);
xbt_dynar_push_as(route->link_list, void *, info.link_up);
if (lat)
*lat += static_cast<NetworkLinkPtr>(info.link_up)->getLatency();
if (p_has_limiter){ // limiter for sender
- info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
+ info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
xbt_dynar_push_as(route->link_list, void *, info.link_up);
}
- info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
+ info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
if (info.link_up) { // link up
xbt_dynar_push_as(route->link_list, void *, info.link_up);
if (lat)
}
if (dst->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router
- info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
+ info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
if (info.link_down) { // link down
xbt_dynar_push_as(route->link_list, void *, info.link_down);
*lat += static_cast<NetworkLinkPtr>(info.link_down)->getLatency();
}
if (p_has_limiter){ // limiter for receiver
- info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
+ info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
xbt_dynar_push_as(route->link_list, void *, info.link_up);
}
}
* TODO Change to dynamic assignment
*/
unsigned int j, cur_dim, dim_product = 1;
- long current_node = src->m_id;
- long unsigned next_node = 0;
+ int current_node = src->m_id;
+ int unsigned next_node = 0;
/**
* Arrays that hold the coordinates of the current node and
* the target; comparing the values at the i-th position of
* which can only be the case if src->m_id == dst->m_id -- see above
* for this special case)
*/
- long nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->m_id;
+ int nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->m_id;
- long linkOffset = nodeOffset;
+ int linkOffset = nodeOffset;
bool use_lnk_up = false; // Is this link of the form "cur -> next" or "next -> cur"?
// false means: next -> cur
while (current_node != dst->m_id) {