Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix comments.
[simgrid.git] / src / surf / StorageImpl.hpp
index 3590cae..158e5e8 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2004-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2004-2020. The SimGrid Team. All rights reserved.          */
 
 /* 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. */
@@ -8,8 +8,8 @@
 #include "simgrid/kernel/resource/Resource.hpp"
 #include "simgrid/s4u/Io.hpp"
 #include "simgrid/s4u/Storage.hpp"
-#include "src/surf/PropertyHolder.hpp"
 #include "surf_interface.hpp"
+#include "xbt/PropertyHolder.hpp"
 
 #include <map>
 
@@ -46,9 +46,10 @@ public:
   StorageModel();
   StorageModel(const StorageModel&) = delete;
   StorageModel& operator=(const StorageModel&) = delete;
-  ~StorageModel();
+  ~StorageModel() override;
 
-  virtual StorageImpl* createStorage(const std::string& id, const std::string& type_id, const std::string& content_name,
+  virtual StorageImpl* createStorage(std::string& filename, int lineno, const std::string& id,
+                                     const std::string& type_id, const std::string& content_name,
                                      const std::string& attach) = 0;
 };
 
@@ -59,8 +60,20 @@ public:
  * @brief SURF storage interface class
  * @details A Storage represent a storage unit (e.g.: hard drive, usb key)
  */
-class StorageImpl : public Resource, public surf::PropertyHolder {
+class StorageImpl : public Resource, public xbt::PropertyHolder {
+  s4u::Storage piface_;
+  lmm::Constraint* constraint_read_;  /* Constraint for maximum read bandwidth*/
+  lmm::Constraint* constraint_write_; /* Constraint for maximum write bandwidth*/
+
+  std::string typeId_;
+  bool currently_destroying_ = false;
+  // Name of the host to which this storage is attached. Only used at platform parsing time, then the interface stores
+  // the Host directly.
+  std::string attach_;
+
 public:
+  const std::string content_name_; // Only used at parsing time then goes to the FileSystemExtension
+  const sg_size_t size_;           // Only used at parsing time then goes to the FileSystemExtension
   /** @brief Storage constructor */
   StorageImpl(Model* model, const std::string& name, kernel::lmm::System* maxmin_system, double bread, double bwrite,
               const std::string& type_id, const std::string& content_name, sg_size_t size, const std::string& attach);
@@ -69,11 +82,13 @@ public:
 
   ~StorageImpl() override;
 
-  /** @brief Public interface */
-  s4u::Storage piface_;
-
+  const s4u::Storage* get_iface() const { return &piface_; }
+  s4u::Storage* get_iface() { return &piface_; }
+  const char* get_type() const { return typeId_.c_str(); }
+  lmm::Constraint* get_read_constraint() const { return constraint_read_; }
+  lmm::Constraint* get_write_constraint() const { return constraint_write_; }
   /** @brief Check if the Storage is used (if an action currently uses its resources) */
-  bool is_used() override;
+  bool is_used() const override;
 
   void apply_event(profile::Event* event, double value) override;
 
@@ -98,19 +113,6 @@ public:
    */
   virtual StorageAction* write(sg_size_t size) = 0;
   const std::string& get_host() const { return attach_; }
-
-  lmm::Constraint* constraint_write_; /* Constraint for maximum write bandwidth*/
-  lmm::Constraint* constraint_read_;  /* Constraint for maximum write bandwidth*/
-
-  std::string typeId_;
-  std::string content_name_; // Only used at parsing time then goes to the FileSystemExtension
-  sg_size_t size_;          // Only used at parsing time then goes to the FileSystemExtension
-
-private:
-  bool currently_destroying_ = false;
-  // Name of the host to which this storage is attached. Only used at platform parsing time, then the interface stores
-  // the Host directly.
-  std::string attach_;
 };
 
 /**********