Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start objectifing simix::Host
authorMartin Quinson <martin.quinson@loria.fr>
Mon, 22 Aug 2016 10:30:48 +0000 (12:30 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 22 Aug 2016 10:30:48 +0000 (12:30 +0200)
include/simgrid/forward.h
include/simgrid/host.h
src/simix/smx_host.cpp
src/simix/smx_host_private.h

index df24a15..09a183f 100644 (file)
@@ -25,6 +25,9 @@ namespace simgrid {
        class NetCard;
      }
   }
+  namespace simix {
+    class Host;
+  }
   namespace surf {
     class Resource;
     class Cpu;
@@ -45,6 +48,9 @@ typedef simgrid::surf::Link Link;
 typedef simgrid::surf::Resource surf_Resource;
 typedef simgrid::trace_mgr::trace tmgr_Trace;
 
+typedef simgrid::simix::Host *smx_host_priv_t;
+
+
 #else
 
 typedef struct simgrid_As   simgrid_As;
@@ -55,6 +61,8 @@ typedef struct routing_NetCard routing_NetCard;
 typedef struct surf_Resource surf_Resource;
 typedef struct Link Link;
 typedef struct Trace tmgr_Trace;
+
+typedef struct simix_Host *smx_host_priv_t;
 #endif
 
 typedef simgrid_As *AS_t;
index fa19b46..83c66d7 100644 (file)
@@ -36,7 +36,6 @@ msg_host_priv_t sg_host_msg(sg_host_t host);
 XBT_PUBLIC(void) sg_host_msg_set(sg_host_t host, msg_host_priv_t priv);
 
 // ========== Simix layer =============
-typedef struct s_smx_host_priv *smx_host_priv_t;
 XBT_PUBLIC(smx_host_priv_t) sg_host_simix(sg_host_t host);
 XBT_PUBLIC(void) sg_host_simix_set(sg_host_t host, smx_host_priv_t priv);
 XBT_PUBLIC(void) sg_host_simix_destroy(sg_host_t host);
index 6f932c5..bf054d5 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_host, simix, "SIMIX hosts");
 
+namespace simgrid {
+  namespace simix {
+    Host::Host()
+    {
+      simgrid::simix::ActorImpl act;
+      process_list = xbt_swag_new(xbt_swag_offset(act, host_proc_hookup));
+    }
+  }
+}
+
 /** @brief Internal function to create a SIMIX host. */
-void SIMIX_host_create(sg_host_t host) // FIXME: braindead prototype. Take sg_host as parameter
+void SIMIX_host_create(sg_host_t host)
 {
-  smx_host_priv_t smx_host = xbt_new0(s_smx_host_priv_t, 1);
-
-  /* Host structure */
-  simgrid::simix::ActorImpl proc;
-  smx_host->process_list = xbt_swag_new(xbt_swag_offset(proc, host_proc_hookup));
-
-  /* Update global variables */
-  sg_host_simix_set(host, smx_host);
+  sg_host_simix_set(host, new simgrid::simix::Host());
 }
 
 /** @brief Start the host if it is off */
index 4fbadfb..363983e 100644 (file)
 SG_BEGIN_DECL()
 
 /** @brief Host datatype from SIMIX POV */
-typedef struct s_smx_host_priv {
-  xbt_swag_t process_list;
-  xbt_dynar_t auto_restart_processes;
-  xbt_dynar_t boot_processes;
-} s_smx_host_priv_t;
+namespace simgrid {
+  namespace simix {
+    class Host {
+    public:
+      explicit Host();
+
+      xbt_swag_t process_list;
+      xbt_dynar_t auto_restart_processes = nullptr;
+      xbt_dynar_t boot_processes = nullptr;
+    };
+  }
+}
+typedef simgrid::simix::Host s_smx_host_priv_t;
 
 XBT_PRIVATE void _SIMIX_host_free_process_arg(void *);
 XBT_PRIVATE void SIMIX_host_create(sg_host_t host);