/* 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 <cstdlib>
+
+#include <algorithm>
+
+#include <xbt/dict.h>
+#include <xbt/log.h>
+#include <xbt/sysdep.h>
+#include <xbt/dynar.h>
+#include <xbt/graph.h>
+
#include "simgrid/platf_interface.h" // platform creation API internal interface
#include "surf_routing_generic.hpp"
+#include "surf_routing_private.hpp"
#include "network_interface.hpp"
-#include "xbt/graph.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_routing_generic, surf_route, "Generic implementation of the surf routing");
}
}
+namespace simgrid {
+namespace surf {
+
void AsGeneric::parseRoute(sg_platf_route_cbarg_t /*route*/){
THROW_IMPOSSIBLE;
}
THROW_IMPOSSIBLE;
}
-void AsGeneric::getRouteAndLatency(RoutingEdge */*src*/, RoutingEdge */*dst*/, sg_platf_route_cbarg_t /*into*/, double */*latency*/){
+void AsGeneric::getRouteAndLatency(NetCard */*src*/, NetCard */*dst*/, sg_platf_route_cbarg_t /*into*/, double */*latency*/){
THROW_IMPOSSIBLE;
}
xbt_dict_free(&p_bypassRoutes);
}
-int AsGeneric::parsePU(RoutingEdge *elm)
+int AsGeneric::parsePU(NetCard *elm)
{
XBT_DEBUG("Load process unit \"%s\"", elm->getName());
- xbt_dynar_push_as(p_indexNetworkElm, RoutingEdge*, elm);
+ xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
return xbt_dynar_length(p_indexNetworkElm)-1;
}
-int AsGeneric::parseAS(RoutingEdge *elm)
+int AsGeneric::parseAS(NetCard *elm)
{
XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
- xbt_dynar_push_as(p_indexNetworkElm, RoutingEdge*, elm);
+ xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
return xbt_dynar_length(p_indexNetworkElm)-1;
}
xbt_free(route_name);
}
+}
+}
+
/* ************************************************************************** */
/* *********************** GENERIC BUSINESS METHODS ************************* */
-xbt_dynar_t AsGeneric::getOneLinkRoutes() { // FIXME: kill that stub
- xbt_die("\"generic_get_onelink_routes\" not implemented yet");
- return NULL;
-}
-
static const char *instr_node_name(xbt_node_t node)
{
void *data = xbt_graph_node_get_data(node);
return ret;
}
+namespace simgrid {
+namespace surf {
+
void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
{
int src, dst;
for (src = 0; src < table_size; src++) {
- RoutingEdge *my_src =
- xbt_dynar_get_as(p_indexNetworkElm, src, RoutingEdge*);
+ NetCard *my_src =
+ xbt_dynar_get_as(p_indexNetworkElm, src, NetCard*);
for (dst = 0; dst < table_size; dst++) {
if (src == dst)
continue;
- RoutingEdge *my_dst =
- xbt_dynar_get_as(p_indexNetworkElm, dst, RoutingEdge*);
+ NetCard *my_dst =
+ xbt_dynar_get_as(p_indexNetworkElm, dst, NetCard*);
sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
route->link_list = xbt_dynar_new(sizeof(sg_routing_link_t), NULL);
}
xbt_dynar_foreach(route->link_list, cpt, link) {
- const char *link_name = static_cast<Resource*>(link)->getName();
+ const char *link_name = static_cast<simgrid::surf::Resource*>(
+ link)->getName();
current = new_xbt_graph_node(graph, link_name, nodes);
current_name = link_name;
new_xbt_graph_edge(graph, previous, current, edges);
}
}
-sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdge *src,
- RoutingEdge *dst,
+sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src,
+ NetCard *dst,
double *lat)
{
// If never set a bypass route return NULL without any further computations
int max_index_src = path_src->used - 1;
int max_index_dst = path_dst->used - 1;
- int max_index = max(max_index_src, max_index_dst);
+ int max_index = std::max(max_index_src, max_index_dst);
int i, max;
for (max = 0; max <= max_index; max++) {
sg_platf_route_cbarg_t new_e_route = NULL;
if (e_route_bypass) {
- Link* link;
+ Link* link;
unsigned int cpt = 0;
new_e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
new_e_route->gw_src = e_route_bypass->gw_src;
As *element_as, *result, *elem;
xbt_dict_cursor_t cursor = NULL;
char *key;
- element_as = ((RoutingEdge*)
+ element_as = ((NetCard*)
xbt_lib_get_or_null(as_router_lib, element,
ROUTING_ASR_LEVEL))->getRcComponent();
result = ((As*) - 1);
As *AsGeneric::processingUnitsExist(char *element)
{
- As *element_as = sg_host_edge(sg_host_by_name(element)) ->getRcComponent();
+ As *element_as = sg_host_by_name(element)->pimpl_netcard ->getRcComponent();
if (element_as == this)
return element_as;
return asExist(element_as);
}
-void AsGeneric::srcDstCheck(RoutingEdge *src, RoutingEdge *dst)
+void AsGeneric::srcDstCheck(NetCard *src, NetCard *dst)
{
if (src == NULL || dst == NULL)
xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"",
dst_as->p_name,
p_name);
}
+
+}
+}