X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/877c38ede51d3ee50e5cfc525f6467f1e09c2031..db9ef2223acb402e44eec406541e671bfebd5ade:/src/plugins/file_system/s4u_FileSystem.cpp diff --git a/src/plugins/file_system/s4u_FileSystem.cpp b/src/plugins/file_system/s4u_FileSystem.cpp index 20714da473..98acd5957a 100644 --- a/src/plugins/file_system/s4u_FileSystem.cpp +++ b/src/plugins/file_system/s4u_FileSystem.cpp @@ -104,12 +104,7 @@ File::File(const std::string& fullpath, const_sg_host_t host, void* userdata) : }); } -File::~File() -{ - std::vector* desc_table = - Host::current()->extension()->file_descriptor_table.get(); - kernel::actor::simcall_answered([this, desc_table] { desc_table->push_back(this->desc_id); }); -} +File::~File() = default; File* File::open(const std::string& fullpath, void* userdata) { @@ -121,6 +116,14 @@ File* File::open(const std::string& fullpath, const_sg_host_t host, void* userda return new File(fullpath, host, userdata); } +void File::close() +{ + std::vector* desc_table = + Host::current()->extension()->file_descriptor_table.get(); + kernel::actor::simcall_answered([this, desc_table] { desc_table->push_back(this->desc_id); }); + delete this; +} + void File::dump() const { XBT_INFO("File Descriptor information:\n" @@ -324,8 +327,9 @@ int File::remote_copy(sg_host_t host, const std::string& fullpath) } /* Create file on remote host, write it and close it */ - File fd(fullpath, dst_host, nullptr); - fd.write(read_size); + auto* fd = File::open(fullpath, dst_host, nullptr); + fd->write(read_size); + fd->close(); return 0; } @@ -382,6 +386,11 @@ std::map>* FileSystemDiskExt::parse_content( return parse_content; } +void FileSystemDiskExt::add_remote_mount(Host* host, const std::string& mount_point) +{ + remote_mount_points_.try_emplace(host, mount_point); +} + void FileSystemDiskExt::decr_used_size(sg_size_t size) { simgrid::kernel::actor::simcall_answered([this, size] { used_size_ -= size; }); @@ -565,7 +574,7 @@ void sg_file_move(const_sg_file_t fd, const char* fullpath) void sg_file_unlink(sg_file_t fd) { fd->unlink(); - delete fd; + fd->close(); } /**