- friend XBT_PUBLIC void intrusive_ptr_release(simgrid::s4u::Io* i);
- friend XBT_PUBLIC void intrusive_ptr_add_ref(simgrid::s4u::Io* i);
+ enum class OpType { READ, WRITE };
+
+private:
+ Storage* storage_ = nullptr;
+ Disk* disk_ = nullptr;
+ sg_size_t size_ = 0;
+ OpType type_ = OpType::READ;
+
+ explicit Io(sg_storage_t storage, sg_size_t size, OpType type);
+ explicit Io(sg_disk_t disk, sg_size_t size, OpType type);
+
+public:
+#ifndef DOXYGEN
+ friend Disk; // Factory of IOs