Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
this dict was a set
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 31 Jul 2017 09:18:00 +0000 (11:18 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 31 Jul 2017 09:18:00 +0000 (11:18 +0200)
src/include/surf/surf.h
src/simix/smx_host.cpp
src/surf/surf_c_bindings.cpp
src/surf/surf_interface.cpp
src/surf/surf_interface.hpp
src/surf/surf_private.h

index 6d3b3b9..173dcf4 100644 (file)
@@ -374,11 +374,6 @@ XBT_PUBLIC_DATA(s_surf_model_description_t) surf_host_model_description[];
  */
 XBT_PUBLIC(void) surf_vm_model_init_HL13();
 
-/** \ingroup SURF_simulation
- *  \brief List of hosts for which one want to be notified if they ever restart.
- */
-XBT_PUBLIC_DATA(xbt_dict_t) watched_hosts_lib;
-
 /*** SURF Globals **************************/
 
 /** \ingroup SURF_simulation
index 3fb82a4..fda196e 100644 (file)
@@ -8,6 +8,7 @@
 #include "src/kernel/activity/CommImpl.hpp"
 #include "src/mc/mc_replay.h"
 #include "src/plugins/vm/VirtualMachineImpl.hpp"
+#include "src/surf/surf_interface.hpp"
 #include "xbt/ex.hpp"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_host, simix, "SIMIX hosts");
@@ -124,9 +125,9 @@ void SIMIX_host_add_auto_restart_process(
   arg->properties = properties;
   arg->auto_restart = auto_restart;
 
-  if (host->isOff() && not xbt_dict_get_or_null(watched_hosts_lib, host->getCname())) {
-    xbt_dict_set(watched_hosts_lib, host->getCname(), host, nullptr);
-    XBT_DEBUG("Push host %s to watched_hosts_lib because state == SURF_RESOURCE_OFF", host->getCname());
+  if (host->isOff() && watched_hosts.find(host->getCname()) == watched_hosts.end()) {
+    watched_hosts.insert(host->getCname());
+    XBT_DEBUG("Push host %s to watched_hosts because state == SURF_RESOURCE_OFF", host->getCname());
   }
   host->extension<simgrid::simix::Host>()->auto_restart_processes.push_back(arg);
 }
index 46f00de..d459a4d 100644 (file)
@@ -100,7 +100,7 @@ double surf_solve(double max_date)
     XBT_DEBUG("Updating models (min = %g, NOW = %g, next_event_date = %g)", time_delta, NOW, next_event_date);
 
     while ((event = future_evt_set->pop_leq(next_event_date, &value, &resource))) {
-      if (resource->isUsed() || xbt_dict_get_or_null(watched_hosts_lib, resource->cname())) {
+      if (resource->isUsed() || (watched_hosts.find(resource->cname()) != watched_hosts.end())) {
         time_delta = next_event_date - NOW;
         XBT_DEBUG("This event invalidates the next_occuring_event() computation of models. Next event set to %f", time_delta);
       }
index 07493f0..f99f0ee 100644 (file)
@@ -12,6 +12,8 @@
 #include "src/surf/HostImpl.hpp"
 
 #include <fstream>
+#include <set>
+#include <string>
 #include <vector>
 
 XBT_LOG_NEW_CATEGORY(surf, "All SURF categories");
@@ -26,7 +28,8 @@ std::vector<surf_model_t> * all_existing_models = nullptr; /* to destroy models
 simgrid::trace_mgr::future_evt_set *future_evt_set = nullptr;
 std::vector<std::string> surf_path;
 std::vector<simgrid::s4u::Host*> host_that_restart;
-xbt_dict_t watched_hosts_lib;
+/**  set of hosts for which one want to be notified if they ever restart. */
+std::set<std::string> watched_hosts;
 extern std::map<std::string, storage_type_t> storage_types;
 
 namespace simgrid {
@@ -345,8 +348,6 @@ void surf_init(int *argc, char **argv)
   XBT_DEBUG("Create all Libs");
   USER_HOST_LEVEL = simgrid::s4u::Host::extension_create(nullptr);
 
-  watched_hosts_lib = xbt_dict_new_homogeneous(nullptr);
-
   xbt_init(argc, argv);
   if (not all_existing_models)
     all_existing_models = new std::vector<simgrid::surf::Model*>();
@@ -368,7 +369,6 @@ void surf_exit()
 
   sg_host_exit();
   sg_link_exit();
-  xbt_dict_free(&watched_hosts_lib);
   for (auto e : storage_types) {
     storage_type_t stype = e.second;
     free(stype->model);
index 63a79ae..8ab050f 100644 (file)
@@ -13,6 +13,7 @@
 #include "xbt/str.h"
 
 #include <boost/intrusive/list.hpp>
+#include <set>
 #include <string>
 #include <unordered_map>
 
@@ -31,6 +32,7 @@ extern XBT_PRIVATE double sg_weight_S_parameter;
 extern XBT_PRIVATE int sg_network_crosstraffic;
 extern XBT_PRIVATE std::vector<std::string> surf_path;
 extern XBT_PRIVATE std::unordered_map<std::string, tmgr_trace_t> traces_set_list;
+extern XBT_PRIVATE std::set<std::string> watched_hosts;
 
 extern "C" {
 XBT_PUBLIC(double) surf_get_clock();
index 5a53d7a..7d3fa1f 100644 (file)
@@ -14,8 +14,6 @@
 
 SG_BEGIN_DECL()
 
-XBT_PUBLIC_DATA(xbt_dict_t) watched_hosts_lib;
-
 extern XBT_PRIVATE const char *surf_action_state_names[6];
 
 /** @ingroup SURF_interface