Avoid an unnecessary double call to get_route...
xbt_dynar_t back_route = NULL;
int constraints_per_variable = 0;
- // I will need this route for some time so let's call get_route_no_cleanup
- xbt_dynar_t route = global_routing->get_route_no_cleanup(src_name, dst_name);
-
+ xbt_dynar_t route;
+ // I will need this route for some time so require for no cleanup
+ global_routing->get_route_latency(src_name, dst_name, &route, &latency, 0);
if (sg_network_fullduplex == 1) {
back_route = global_routing->get_route(dst_name, src_name);
XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate);
/* LARGE PLATFORMS HACK:
assert on total_route_size */
- latency = global_routing->get_latency(src_name,dst_name);
xbt_assert(xbt_dynar_length(route) || latency,
"You're trying to send data from %s to %s but there is no connection at all between these two hosts.",
src_name, dst_name);
routing_component_t root;
void *loopback;
size_t size_of_link;
- xbt_dynar_t(*get_route) (const char *src, const char *dst);
- xbt_dynar_t(*get_route_no_cleanup) (const char *src, const char *dst);
- xbt_dynar_t(*get_onelink_routes) (void);
- double (*get_latency) (const char *src, const char *dst);
- e_surf_network_element_type_t(*get_network_element_type) (const char
- *name);
+ xbt_dynar_t(*get_route) (const char *src, const char *dst);
+ xbt_dynar_t(*get_route_no_cleanup) (const char *src, const char *dst);
+ xbt_dynar_t(*get_onelink_routes) (void);
+ double (*get_latency) (const char *src, const char *dst);
+ void (*get_route_latency)(const char *src, const char *dst,
+ xbt_dynar_t *route, double *latency, int cleanup);
+ e_surf_network_element_type_t(*get_network_element_type) (const char *name);
void (*finalize) (void);
xbt_dynar_t last_route;
};
global_routing->get_latency = get_latency;
global_routing->get_route_no_cleanup = get_route_no_cleanup;
global_routing->get_onelink_routes = get_onelink_routes;
+ global_routing->get_route_latency = get_route_latency;
global_routing->get_network_element_type = get_network_element_type;
global_routing->finalize = finalize;
global_routing->loopback = loopback;