Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill the surf::Host subclasses (surf::HostModel remain subclassed)
[simgrid.git] / src / surf / host_interface.hpp
index 986bff7..ee5aee3 100644 (file)
@@ -70,7 +70,7 @@ public:
  ************/
 /** @ingroup SURF_host_interface
  * @brief SURF Host interface class
- * @details An host represents a machine with a aggregation of a Cpu, a Link and a Storage
+ * @details An host represents a machine with a aggregation of a Cpu, a RoutingEdge and a Storage
  */
 class Host : public simgrid::surf::Resource,
                 public simgrid::surf::PropertyHolder {
@@ -83,7 +83,7 @@ public:
   static simgrid::surf::signal<void(simgrid::surf::Host*, e_surf_resource_state_t, e_surf_resource_state_t)> onStateChange;
 
 public:
-  static void init();
+  static void classInit();
   /**
    * @brief Host constructor
    *
@@ -112,10 +112,20 @@ public:
       lmm_constraint_t constraint, xbt_dynar_t storage, RoutingEdge *netElm,
       Cpu *cpu);
 
-  /** @brief Host destructor */
+  /* Host destruction logic */
+  /**************************/
+protected:
   ~Host();
+public:
+       void destroy(); // Must be called instead of the destructor
+private:
+       bool currentlyDestroying_ = false;
+
 
+public:
   void attach(simgrid::Host* host);
+
+  e_surf_resource_state_t getState();
   void setState(e_surf_resource_state_t state);
 
   /**
@@ -125,7 +135,7 @@ public:
    * @return The CpuAction corresponding to the processing
    * @see Cpu
    */
-  virtual Action *execute(double flops_amount)=0;
+  Action *execute(double flops_amount);
 
   /**
    * @brief Make a process sleep for duration seconds
@@ -134,7 +144,7 @@ public:
    * @return The CpuAction corresponding to the sleeping
    * @see Cpu
    */
-  virtual Action *sleep(double duration)=0;
+  Action *sleep(double duration);
 
   /** @brief Return the storage of corresponding mount point */
   virtual simgrid::surf::Storage *findStorageOnMountList(const char* storage);
@@ -149,7 +159,6 @@ public:
    * @brief Open a file
    *
    * @param fullpath The full path to the file
-   *
    * @return The StorageAction corresponding to the opening
    */
   virtual Action *open(const char* fullpath);
@@ -244,8 +253,9 @@ public:
    */
   virtual int fileMove(surf_file_t fd, const char* fullpath);
 
-protected:
-  void onDie() override;
+  bool isUsed() override {DIE_IMPOSSIBLE;} // FIXME: Host should not be a Resource
+  void updateState(tmgr_trace_event_t event_type, double value, double date) override
+    {THROW_IMPOSSIBLE;} // FIXME: Host should not be a Resource
 
 public:
   xbt_dynar_t p_storage;