Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / src / kernel / resource / DiskImpl.hpp
index 79abb67..44ae1b9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2019-2021. 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/Disk.hpp"
 #include "simgrid/s4u/Io.hpp"
-#include "src/surf/PropertyHolder.hpp"
 #include "src/surf/surf_interface.hpp"
+#include <xbt/PropertyHolder.hpp>
 
 #include <map>
 
@@ -34,12 +34,12 @@ class DiskAction;
 /*********
  * Model *
  *********/
-class DiskModel : public kernel::resource::Model {
+class DiskModel : public Model {
 public:
   DiskModel();
   DiskModel(const DiskModel&) = delete;
   DiskModel& operator=(const DiskModel&) = delete;
-  ~DiskModel();
+  ~DiskModel() override;
 
   virtual DiskImpl* createDisk(const std::string& id, double read_bw, double write_bw) = 0;
 };
@@ -47,8 +47,14 @@ public:
 /************
  * Resource *
  ************/
-class DiskImpl : public Resource, public surf::PropertyHolder {
+class DiskImpl : public Resource, public xbt::PropertyHolder {
   bool currently_destroying_ = false;
+  s4u::Host* host_           = nullptr;
+  s4u::Disk piface_;
+  double read_bw_;
+  double write_bw_;
+  lmm::Constraint* constraint_write_; /* Constraint for maximum write bandwidth*/
+  lmm::Constraint* constraint_read_;  /* Constraint for maximum read bandwidth*/
 
 public:
   DiskImpl(Model* model, const std::string& name, kernel::lmm::System* maxmin_system, double read_bw, double bwrite_bw);
@@ -58,13 +64,19 @@ public:
   ~DiskImpl() override;
 
   /** @brief Public interface */
-  s4u::Disk piface_;
+  const s4u::Disk* get_iface() const { return &piface_; }
   s4u::Disk* get_iface() { return &piface_; }
-  /** @brief Check if the Storage is used (if an action currently uses its resources) */
-  bool is_used() override;
+  s4u::Host* get_host() const { return host_; }
+  void set_host(s4u::Host* host) { host_ = host; }
 
-  void apply_event(profile::Event* event, double value) override;
+  double get_read_bandwidth() const { return read_bw_; }
+  double get_write_bandwidth() const { return write_bw_; }
+  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() const override;
+  void apply_event(profile::Event* event, double value) override;
   void turn_on() override;
   void turn_off() override;
 
@@ -72,9 +84,6 @@ public:
   virtual DiskAction* io_start(sg_size_t size, s4u::Io::OpType type) = 0;
   virtual DiskAction* read(sg_size_t size)                           = 0;
   virtual DiskAction* write(sg_size_t size)                          = 0;
-
-  lmm::Constraint* constraint_write_; /* Constraint for maximum write bandwidth*/
-  lmm::Constraint* constraint_read_;  /* Constraint for maximum write bandwidth*/
 };
 
 /**********