- simix::simcall([this] { dynamic_cast<kernel::activity::IoImpl*>(pimpl_.get())->start(size_, type_); });
- state_ = State::STARTED;
- return this;
+ auto pimpl = kernel::activity::IoImplPtr(new kernel::activity::IoImpl());
+ return IoPtr(static_cast<Io*>(pimpl->get_iface()));
+}
+
+IoPtr Io::streamto_init(Host* from, const Disk* from_disk, Host* to, const Disk* to_disk)
+{
+ auto res = Io::init()->set_source(from, from_disk)->set_destination(to, to_disk);
+ res->set_state(State::STARTING);
+ return res;
+}
+
+IoPtr Io::streamto_async(Host* from, const Disk* from_disk, Host* to, const Disk* to_disk,
+ uint64_t simulated_size_in_bytes)
+{
+ return Io::init()->set_size(simulated_size_in_bytes)->set_source(from, from_disk)->set_destination(to, to_disk);
+}
+
+void Io::streamto(Host* from, const Disk* from_disk, Host* to, const Disk* to_disk, uint64_t simulated_size_in_bytes)
+{
+ streamto_async(from, from_disk, to, to_disk, simulated_size_in_bytes)->wait();