+#include "src/kernel/actor/ActorImpl.hpp"
+#include "src/kernel/actor/SimcallObserver.hpp"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_io, s4u_activity, "S4U asynchronous I/Os");
+
+namespace simgrid::s4u {
+
+Io::Io(kernel::activity::IoImplPtr pimpl)
+{
+ pimpl_ = pimpl;
+}
+
+IoPtr Io::init()
+{
+ 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;
+}