-/* $Id$ */
+/* $Id$ */
/* Copyright (c) 2005 Henri Casanova. All rights reserved. */
#include "network_gtnets_private.h"
#include "gtnets/gtnets_interface.h"
+#include "xbt/str.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network module");
double lat;
e_surf_link_state_t state;
- name = xbt_strdup(A_surfxml_link_name);
+ name = xbt_strdup(A_surfxml_link_id);
surf_parse_get_double(&bw, A_surfxml_link_bandwidth);
surf_parse_get_double(&lat, A_surfxml_link_latency);
- state = SURF_link_ON;
+ state = SURF_LINK_ON;
/* Print values when no traces are specified */
{
/* KF*/
static void parse_route_set_routers(void)
{
- int id = network_card_new(A_surfxml_router_name);
+ int id = network_card_new(A_surfxml_router_id);
/* KF: Create the GTNets router */
if (gtnets_add_router(id)) {
/* if (nb_link > 1)
route_new(src_id, dst_id, link_name, nb_link);
*/
- name = bprintf("%x#%x",src_id, dst_id);
+ char *name = bprintf("%x#%x",src_id, dst_id);
xbt_dict_set(route_table, name, route_link_list, NULL);
free(name);
}
surfxml_add_callback(STag_surfxml_router_cb_list, &parse_route_set_routers);
surfxml_add_callback(STag_surfxml_link_cb_list, &parse_link_init);
surfxml_add_callback(STag_surfxml_route_cb_list, &parse_route_set_endpoints);
- surfxml_add_callback(ETag_surfxml_route_element_cb_list, &parse_route_elem);
+ surfxml_add_callback(ETag_surfxml_link_c_ctn_cb_list, &parse_route_elem);
/* surfxml_add_callback(ETag_surfxml_route_cb_list, &parse_route_set_onehop_route);*/
surfxml_add_callback(STag_surfxml_platform_cb_list, &init_data);
surfxml_add_callback(ETag_surfxml_route_cb_list, &parse_route_set_route);
/* share_resources() */
static double share_resources(double now)
{
-#if 0
- s_surf_action_network_GTNETS_t s_action;
- surf_action_network_GTNETS_t action = NULL;
- xbt_swag_t running_actions =
- surf_network_model->common_public->states.running_action_set;
-#endif
+ xbt_swag_t running_actions = surf_network_model->common_public->states.running_action_set;
+
+ //get the first relevant value from the running_actions list
+ if (!xbt_swag_size(running_actions))
+ return -1.0;
return gtnets_get_time_to_next_flow_completion();
}
static void update_actions_state(double now, double delta)
{
-#if 0
+#if 1
surf_action_network_GTNETS_t action = NULL;
- surf_action_network_GTNETS_t next_action = NULL;
+ // surf_action_network_GTNETS_t next_action = NULL;
xbt_swag_t running_actions =
surf_network_model->common_public->states.running_action_set;
#endif
"GTNetS simulation couldn't find a flow that would complete");
}
- for (i = 0; i < num_flows; i++) {
- surf_action_network_GTNETS_t action =
- (surf_action_network_GTNETS_t) (metadata[i]);
- action->generic_action.remains = 0;
+
+ xbt_swag_foreach(action, running_actions) {
+ DEBUG1("]]]]]]]]] Action remains old value: %f", action->generic_action.remains);
+ double remain = gtnets_get_flow_rx(action);
+ //need to trust this remain value
+ if(remain == 0){
+ action->generic_action.remains=0;
+ }else {
+ action->generic_action.remains-=remain;
+ }
+ DEBUG1("[[[[[[[[[ Action remains new value: %f", action->generic_action.remains);
+ }
+
+ for (i = 0; i < num_flows; i++) {
+ action = (surf_action_network_GTNETS_t) (metadata[i]);
+
action->generic_action.finish = now + time_to_next_flow_completion;
action_change_state((surf_action_t) action, SURF_ACTION_DONE);
/* TODO: Anything else here? */
+
+ //need to map this action to the gtnets engine
+ DEBUG1("]]]]]]]]] Action remains old value: %f", action->generic_action.remains);
+ action->generic_action.remains -= gtnets_get_flow_rx(metadata[i]);
+ DEBUG1("[[[[[[[[[ Action remains new value: %f", action->generic_action.remains);
}
+
+
} else { /* run for a given number of seconds */
if (gtnets_run(delta)) {
xbt_assert0(0, "Cannot run GTNetS simulation");
/* UNUSED HERE: no traces */
static void update_resource_state(void *id,
tmgr_trace_event_t event_type,
- double value)
+ double value, double date)
{
xbt_assert0(0, "Cannot update model state for GTNetS simulation");
return;
surf_network_model->common_private->share_resources = share_resources;
surf_network_model->common_private->update_actions_state =
update_actions_state;
- surf_network_model->common_private->update_resource_state =
- update_resource_state;
+ surf_network_model->common_private->update_resource_state = update_resource_state;
surf_network_model->common_private->finalize = finalize;
surf_network_model->common_public->suspend = action_suspend;