+
+class IoOp : public Operation {
+ s4u::Disk* disk_;
+ s4u::Io::OpType type_;
+ explicit IoOp(const std::string& name);
+ void execute() override;
+
+public:
+ static IoOpPtr init(const std::string& name);
+ static IoOpPtr init(const std::string& name, double bytes, s4u::Disk* disk, s4u::Io::OpType type);
+ IoOpPtr set_disk(s4u::Disk* disk);
+ IoOpPtr set_bytes(double bytes);
+ IoOpPtr set_op_type(s4u::Io::OpType type);
+
+ friend void inline intrusive_ptr_release(IoOp* i) { intrusive_ptr_release(static_cast<Operation*>(i)); }
+ friend void inline intrusive_ptr_add_ref(IoOp* i) { intrusive_ptr_add_ref(static_cast<Operation*>(i)); }
+};