From: Lucas Schnorr Date: Wed, 7 Sep 2011 08:14:22 +0000 (+0200) Subject: Make sure that NS3 simulation advance if there are active flows even if NS3 returns... X-Git-Tag: v3_6_2~118 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/919f4502f5e39049ce71245b7fcca16e3781800d Make sure that NS3 simulation advance if there are active flows even if NS3 returns immediately. This could be caused by a pause event introduced by a previous "run NS3 for no more than xxx seconds". Return -1.0 as expected when there are no flows to handle. --- diff --git a/src/surf/network_ns3.c b/src/surf/network_ns3.c index b9f2de575c..86c1aa1388 100644 --- a/src/surf/network_ns3.c +++ b/src/surf/network_ns3.c @@ -417,20 +417,19 @@ static double ns3_share_resources(double min) surf_network_model->states.running_action_set; //get the first relevant value from the running_actions list - if (!xbt_swag_size(running_actions)) - return -1.0; + if (!xbt_swag_size(running_actions) || min == 0.0) + return -1.0; + else + do { + ns3_simulator(min); + time_to_next_flow_completion = ns3_time() - surf_get_clock(); + } while(time_to_next_flow_completion==0.0); + + XBT_DEBUG("min : %f",min); + XBT_DEBUG("ns3 time : %f",ns3_time()); + XBT_DEBUG("surf time : %f",surf_get_clock()); + XBT_DEBUG("Next completion %f :",time_to_next_flow_completion); - ns3_simulator(min); - time_to_next_flow_completion = ns3_time() - surf_get_clock(); - -// XBT_INFO("min : %f",min); -// XBT_INFO("ns3 time : %f",ns3_time()); -// XBT_INFO("surf time : %f",surf_get_clock()); - - xbt_assert(time_to_next_flow_completion, - "Time to next flow completion not initialized!\n"); - - XBT_DEBUG("ns3_share_resources return %f",time_to_next_flow_completion); return time_to_next_flow_completion; }