resource::Action* surf_action_ = nullptr;
bool test();
+ virtual ActivityImpl& set_timeout(double timeout) { THROW_UNIMPLEMENTED; }
virtual void suspend();
virtual void resume();
std::vector<double> bytes_amounts_;
public:
- ExecImpl& set_timeout(double timeout);
+ ExecImpl& set_timeout(double timeout) override;
ExecImpl& set_bound(double bound);
ExecImpl& set_sharing_penalty(double sharing_penalty);
namespace kernel {
namespace activity {
+IoImpl& IoImpl::set_timeout(double timeout)
+{
+ s4u::Host* host = get_disk() ? get_disk()->get_host() : s4u::Host::by_name(get_storage()->get_host());
+ timeout_detector_ = host->pimpl_cpu->sleep(timeout);
+ timeout_detector_->set_activity(this);
+ return *this;
+}
+
IoImpl& IoImpl::set_type(s4u::Io::OpType type)
{
type_ = type;
finish();
else {
/* we need a sleep action (even when there is no timeout) to be notified of host failures */
- if (get_disk() != nullptr)
- set_timeout_detector(get_disk()->get_host()->pimpl_cpu->sleep(timeout));
- else
- set_timeout_detector(simgrid::s4u::Host::by_name(get_storage()->get_host())->pimpl_cpu->sleep(timeout));
+ set_timeout(timeout);
}
}
resource::Action* timeout_detector_ = nullptr;
public:
+ IoImpl& set_timeout(double timeout) override;
IoImpl& set_size(sg_size_t size);
IoImpl& set_type(s4u::Io::OpType type);
IoImpl& set_storage(resource::StorageImpl* storage);
IoImpl& set_disk(resource::DiskImpl* disk);
- void set_timeout_detector(resource::Action* action)
- {
- timeout_detector_ = action;
- timeout_detector_->set_activity(this);
- }
-
sg_size_t get_performed_ioops() const { return performed_ioops_; }
resource::DiskImpl* get_disk() const { return disk_; }
resource::StorageImpl* get_storage() const { return storage_; }
public:
RawImpl& set_host(s4u::Host* host);
- RawImpl& set_timeout(double timeout);
+ RawImpl& set_timeout(double timeout) override;
RawImpl* start();
void suspend() override;