Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rename simgrid::kernel::model into simgrid::kernel::resource
[simgrid.git] / src / surf / surf_c_bindings.cpp
index cac3a86..98b5dd9 100644 (file)
@@ -21,7 +21,7 @@ void surf_presolve()
   double next_event_date = -1.0;
   tmgr_trace_event_t event          = nullptr;
   double value = -1.0;
-  simgrid::surf::Resource *resource = nullptr;
+  simgrid::kernel::resource::Resource* resource = nullptr;
 
   XBT_DEBUG ("Consume all trace events occurring before the starting time.");
   while ((next_event_date = future_evt_set->next_date()) != -1.0) {
@@ -44,7 +44,7 @@ double surf_solve(double max_date)
   double time_delta = -1.0; /* duration */
   double model_next_action_end = -1.0;
   double value = -1.0;
-  simgrid::surf::Resource *resource = nullptr;
+  simgrid::kernel::resource::Resource* resource = nullptr;
   tmgr_trace_event_t event          = nullptr;
 
   if (max_date > 0.0) {
@@ -66,6 +66,15 @@ double surf_solve(double max_date)
       time_delta = next_event_virt;
   }
 
+  for (auto const& model : *all_existing_models) {
+    if (model != surf_host_model && model != surf_vm_model && model != surf_network_model &&
+        model != surf_storage_model) {
+      double next_event_model = model->nextOccuringEvent(NOW);
+      if ((time_delta < 0.0 || next_event_model < time_delta) && next_event_model >= 0.0)
+        time_delta = next_event_model;
+    }
+  }
+
   XBT_DEBUG("Min for resources (remember that NS3 don't update that value): %f", time_delta);
 
   XBT_DEBUG("Looking for next trace event");