Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge extension<simgrid::simix::Host>() into HostImpl
[simgrid.git] / src / surf / HostImpl.hpp
index a0a1892..a206e76 100644 (file)
@@ -3,22 +3,24 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#ifndef SURF_HOST_INTERFACE_HPP_
+#define SURF_HOST_INTERFACE_HPP_
+
+#include "StorageImpl.hpp"
 #include "cpu_interface.hpp"
 #include "network_interface.hpp"
+#include "src/simix/ActorImpl.hpp"
 #include "src/surf/PropertyHolder.hpp"
 
-#include "StorageImpl.hpp"
+#include <vector>
 
-#ifndef SURF_HOST_INTERFACE_HPP_
-#define SURF_HOST_INTERFACE_HPP_
+namespace simgrid {
+namespace surf {
 
 /*********
  * Model *
  *********/
 
-namespace simgrid {
-namespace surf {
-
 /** @ingroup SURF_host_interface
  * @brief SURF Host model interface class
  * @details A model is an object which handle the interactions between its Resources and its Actions
@@ -43,13 +45,29 @@ class XBT_PRIVATE HostImpl : public simgrid::surf::PropertyHolder {
 
 public:
   explicit HostImpl(s4u::Host* host);
-  virtual ~HostImpl() = default;
+  virtual ~HostImpl();
 
   /** @brief Get the vector of storages (by names) attached to the Host */
   virtual std::vector<const char*> get_attached_storages();
 
   std::map<std::string, simgrid::surf::StorageImpl*> storage_;
   simgrid::s4u::Host* piface_ = nullptr;
+
+  void turn_on();
+  void turn_off();
+  std::vector<s4u::ActorPtr> get_all_actors();
+  int get_actor_count();
+
+  typedef boost::intrusive::list<
+      kernel::actor::ActorImpl,
+      boost::intrusive::member_hook<kernel::actor::ActorImpl, boost::intrusive::list_member_hook<>,
+                                    &kernel::actor::ActorImpl::host_process_list_hook>>
+      ActorList;
+
+  // FIXME: make these private
+  ActorList process_list;
+  std::vector<kernel::actor::ProcessArg*> auto_restart_processes;
+  std::vector<kernel::actor::ProcessArg*> boot_processes;
 };
 }
 }