-/* Copyright (c) 2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2019-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. */
#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>
/*********
* 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;
};
/************
* 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 write bandwidth*/
public:
DiskImpl(Model* model, const std::string& name, kernel::lmm::System* maxmin_system, double read_bw, double bwrite_bw);
~DiskImpl() override;
/** @brief Public interface */
- s4u::Disk piface_;
+ const s4u::Disk* get_iface() const { return &piface_; }
+ s4u::Disk* get_iface() { return &piface_; }
+ s4u::Host* get_host() const { return host_; }
+ void set_host(s4u::Host* host) { host_ = host; }
- /** @brief Check if the Storage is used (if an action currently uses its resources) */
- bool is_used() 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;
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*/
};
/**********