policy_initial);
}
-static int nb_link = 0;
+static int nb_link;
+static int link_name_capacity;
static char **link_name = NULL;
static int src_id = -1;
static int dst_id = -1;
src_id = network_card_new(A_surfxml_route_src);
dst_id = network_card_new(A_surfxml_route_dst);
nb_link = 0;
- link_name = NULL;
+ link_name_capacity = 16;
+ link_name = xbt_new(char*, link_name_capacity);
}
static void parse_route_elem(void)
{
- nb_link++;
- link_name = xbt_realloc(link_name, (nb_link) * sizeof(char *));
- link_name[(nb_link) - 1] = xbt_strdup(A_surfxml_route_element_name);
+ if (nb_link == link_name_capacity) {
+ link_name_capacity *= 2;
+ link_name = xbt_realloc(link_name, (link_name_capacity) * sizeof(char *));
+ }
+ link_name[nb_link++] = xbt_strdup(A_surfxml_route_element_name);
}
static void parse_route_set_route(void)
action->generic_action.cost = size;
action->generic_action.remains = size;
action->generic_action.max_duration = NO_MAX_DURATION;
- action->generic_action.start = -1.0;
+ action->generic_action.start = surf_get_clock();
action->generic_action.finish = -1.0;
action->generic_action.resource_type =
(surf_resource_t) surf_network_resource;
return (surf_action_t) action;
}
+/* returns an array of network_link_CM02_t */
static const void** get_route(void *src, void *dst) {
- /* TODO */
+ network_card_CM02_t card_src = src;
+ network_card_CM02_t card_dst = dst;
+ return (const void**) ROUTE(card_src->id, card_dst->id);
+}
+
+static int get_route_size(void *src, void *dst) {
+ network_card_CM02_t card_src = src;
+ network_card_CM02_t card_dst = dst;
+ return ROUTE_SIZE(card_src->id, card_dst->id);
+}
+
+static const char *get_link_name(const void *link) {
+ return ((network_link_CM02_t) link)->name;
+}
+
+static double get_link_bandwidth(const void *link) {
+ return ((network_link_CM02_t) link)->bw_current;
+}
- return NULL;
+static double get_link_latency(const void *link) {
+ return ((network_link_CM02_t) link)->lat_current;
}
static void action_suspend(surf_action_t action)
get_resource_name;
surf_network_resource->common_public->action_get_state =
surf_action_get_state;
+ surf_network_resource->common_public->action_get_start_time =
+ surf_action_get_start_time;
+ surf_network_resource->common_public->action_get_finish_time =
+ surf_action_get_finish_time;
surf_network_resource->common_public->action_free = action_free;
surf_network_resource->common_public->action_use = action_use;
surf_network_resource->common_public->action_cancel = action_cancel;
surf_network_resource->extension_public->communicate = communicate;
surf_network_resource->extension_public->get_route = get_route;
+ surf_network_resource->extension_public->get_route_size = get_route_size;
+ surf_network_resource->extension_public->get_link_name = get_link_name;
+ surf_network_resource->extension_public->get_link_bandwidth = get_link_bandwidth;
+ surf_network_resource->extension_public->get_link_latency = get_link_latency;
network_link_set = xbt_dict_new();
network_card_set = xbt_dict_new();