Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cosmetics and comments in surf_solve
[simgrid.git] / src / surf / surf_c_bindings.cpp
index d9b620d..8d3fe2c 100644 (file)
@@ -38,13 +38,11 @@ void surf_presolve(void)
   unsigned int iter;
 
   XBT_DEBUG ("Consume all trace events occurring before the starting time.");
-  while ((next_event_date = tmgr_history_next_date(history)) != -1.0) {
+  while ((next_event_date = future_evt_set->next_date()) != -1.0) {
     if (next_event_date > NOW)
       break;
-    while ((event =
-            tmgr_history_get_next_event_leq(history, next_event_date,
-                                            &value,
-                                            (void **) &resource))) {
+
+    while ((event = future_evt_set->pop_leq(next_event_date, &value, &resource))) {
       if (value >= 0){
         resource->updateState(event, value, NOW);
       }
@@ -87,23 +85,22 @@ double surf_solve(double max_date)
                  surf_min = next_event_virt;
   }
 
-  XBT_DEBUG("Min for resources (remember that NS3 don't update that value) : %f", surf_min);
+  XBT_DEBUG("Min for resources (remember that NS3 don't update that value): %f", surf_min);
 
   XBT_DEBUG("Looking for next trace event");
 
-  do {
-    XBT_DEBUG("Next TRACE event : %f", next_event_date);
-
-    next_event_date = tmgr_history_next_date(history);
+  while (1) { // Handle next occurring events until none remains
+    next_event_date = future_evt_set->next_date();
+    XBT_DEBUG("Next TRACE event: %f", next_event_date);
 
     if(! surf_network_model->shareResourcesIsIdempotent()){ // NS3, I see you
-      if(next_event_date!=-1.0 && surf_min!=-1.0) {
+      if (next_event_date!=-1.0 && surf_min!=-1.0) {
         surf_min = MIN(next_event_date - NOW, surf_min);
       } else{
         surf_min = MAX(next_event_date - NOW, surf_min);
       }
 
-      XBT_DEBUG("Run for network at most %f", surf_min);
+      XBT_DEBUG("Run the NS3 network at most %fs", surf_min);
       // run until min or next flow
       model_next_action_end = surf_network_model->shareResources(surf_min);
 
@@ -117,40 +114,37 @@ double surf_solve(double max_date)
       break;
     }
 
-    if ((surf_min == -1.0) || (next_event_date > NOW + surf_min)) break;
+    if ((surf_min == -1.0) || (next_event_date > NOW + surf_min))
+      break; // next event occurs after the next resource change, bail out
 
     XBT_DEBUG("Updating models (min = %g, NOW = %g, next_event_date = %g)", surf_min, NOW, next_event_date);
-    while ((event =
-            tmgr_history_get_next_event_leq(history, next_event_date,
-                                            &value,
-                                            (void **) &resource))) {
+
+    while ((event = future_evt_set->pop_leq(next_event_date, &value, &resource))) {
       if (resource->isUsed() || xbt_dict_get_or_null(watched_hosts_lib, resource->getName())) {
         surf_min = next_event_date - NOW;
-        XBT_DEBUG
-            ("This event will modify model state. Next event set to %f",
-             surf_min);
+        XBT_DEBUG("This event will modify model state. Next event set to %f", surf_min);
       }
-      /* update state of model_obj according to new value. Does not touch lmm.
+      /* update state of the corresponding resource to the new value. Does not touch lmm.
          It will be modified if needed when updating actions */
-      XBT_DEBUG("Calling update_resource_state for resource %s with min %f",
-             resource->getName(), surf_min);
+      XBT_DEBUG("Calling update_resource_state for resource %s with min %f", resource->getName(), surf_min);
       resource->updateState(event, value, next_event_date);
     }
-  } while (1);
+  }
 
   /* FIXME: Moved this test to here to avoid stopping simulation if there are actions running on cpus and all cpus are with availability = 0.
    * This may cause an infinite loop if one cpu has a trace with periodicity = 0 and the other a trace with periodicity > 0.
    * The options are: all traces with same periodicity(0 or >0) or we need to change the way how the events are managed */
   if (surf_min == -1.0) {
-  XBT_DEBUG("No next event at all. Bail out now.");
+    XBT_DEBUG("No next event at all. Bail out now.");
     return -1.0;
   }
 
   XBT_DEBUG("Duration set to %f", surf_min);
 
+  // Bump the time: jump into the future
   NOW = NOW + surf_min;
-  /* FIXME: model_list or model_list_invoke? revisit here later */
-  /* sequential version */
+
+  // Inform the models of the date change
   xbt_dynar_foreach(all_existing_models, iter, model) {
          model->updateActionsState(NOW, surf_min);
   }
@@ -160,11 +154,6 @@ double surf_solve(double max_date)
   return surf_min;
 }
 
-void routing_get_route_and_latency(sg_netcard_t src, sg_netcard_t dst,
-                              xbt_dynar_t * route, double *latency){
-  routing_platf->getRouteAndLatency(src, dst, route, latency);
-}
-
 /*********
  * MODEL *
  *********/
@@ -357,22 +346,6 @@ double surf_action_get_remains(surf_action_t action){
   return action->getRemains();
 }
 
-void surf_action_suspend(surf_action_t action){
-  action->suspend();
-}
-
-void surf_action_resume(surf_action_t action){
-  action->resume();
-}
-
-void surf_action_cancel(surf_action_t action){
-  action->cancel();
-}
-
-void surf_action_set_priority(surf_action_t action, double priority){
-  action->setPriority(priority);
-}
-
 void surf_action_set_category(surf_action_t action, const char *category){
   action->setCategory(category);
 }