Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[surf] new (abstract) class: PropertyHolder, with only one purpose
[simgrid.git] / src / surf / host_interface.hpp
index e0ec337..2ae6d5d 100644 (file)
@@ -8,6 +8,7 @@
 #include "storage_interface.hpp"
 #include "cpu_interface.hpp"
 #include "network_interface.hpp"
+#include "src/surf/PropertyHolder.hpp"
 
 #include <xbt/base.h>
 
@@ -74,7 +75,7 @@ public:
   HostModel() : Model() {}
   ~HostModel() {}
 
-  virtual Host *createHost(const char *name, RoutingEdge *net, Cpu *cpu)=0;
+  virtual Host *createHost(const char *name, RoutingEdge *net, Cpu *cpu, xbt_dict_t props)=0;
   void addTraces(){DIE_IMPOSSIBLE;}
 
   virtual void adjustWeightOfDummyCpuActions();
@@ -94,8 +95,10 @@ public:
  * @brief SURF Host interface class
  * @details An host represents a machine with a aggregation of a Cpu, a Link and a Storage
  */
-class Host : public simgrid::surf::Resource {
+class Host : public simgrid::surf::Resource, public simgrid::surf::PropertyHolder {
 public:
+  static simgrid::xbt::FacetLevel<simgrid::Host, Host> LEVEL;
+  static void init();
   /**
    * @brief Host constructor
    *
@@ -125,17 +128,11 @@ public:
       Cpu *cpu);
 
   /** @brief Host destructor */
-  ~ Host();
+  ~Host();
 
+  void attach(simgrid::Host* host);
   void setState(e_surf_resource_state_t state);
 
-  /**
-   * @brief Get the properties of the current Host
-   *
-   * @return The properties of the current Host
-   */
-  xbt_dict_t getProperties();
-
   /**
    * @brief Execute some quantity of computation
    *
@@ -265,6 +262,7 @@ public:
   xbt_dynar_t p_storage;
   RoutingEdge *p_netElm;
   Cpu *p_cpu;
+  simgrid::Host* p_host = nullptr;
 
   /** @brief Get the list of virtual machines on the current Host */
   xbt_dynar_t getVms();
@@ -275,6 +273,7 @@ public:
   void getParams(vm_params_t params);
   /** @brief Sets the params of that VM/PM */
   void setParams(vm_params_t params);
+  simgrid::Host* getHost() { return p_host; }
 private:
   s_vm_params_t p_params;
 };