X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3f38d568f0b8155a643e15a3171177060ee15c3c..e99273780a983ac4a6fafbfbe91e7fdfb954d35c:/include/simgrid/s4u/File.hpp diff --git a/include/simgrid/s4u/File.hpp b/include/simgrid/s4u/File.hpp index 1429d2cf37..2bdd632b79 100644 --- a/include/simgrid/s4u/File.hpp +++ b/include/simgrid/s4u/File.hpp @@ -6,6 +6,8 @@ #ifndef SIMGRID_S4U_FILE_HPP #define SIMGRID_S4U_FILE_HPP +#include "simgrid/plugins/file_system.h" +#include #include #include @@ -27,10 +29,10 @@ XBT_PUBLIC_CLASS File public: File(std::string fullpath, void* userdata); File(std::string fullpath, sg_host_t host, void* userdata); - ~File(); + ~File() = default; /** Retrieves the path to the file */ - const char* getPath() { return path_.c_str(); } + const char* getPath() { return fullpath_.c_str(); } /** Simulates a local read action. Returns the size of data actually read */ sg_size_t read(sg_size_t size); @@ -59,14 +61,33 @@ public: /** Remove a file from disk */ int unlink(); - std::string mount_point; - Storage* onStorage; int desc_id = 0; + Storage* localStorage; + std::string mount_point_; private: - simgrid::surf::FileImpl* pimpl_ = nullptr; + sg_size_t size_; std::string path_; - void* userdata_ = nullptr; + std::string fullpath_; + sg_size_t current_position_ = SEEK_SET; + void* userdata_ = nullptr; +}; + +class FileSystemStorageExt { +public: + static simgrid::xbt::Extension EXTENSION_ID; + explicit FileSystemStorageExt(simgrid::s4u::Storage* ptr); + ~FileSystemStorageExt(); + std::map* parseContent(std::string filename); + std::map* getContent() { return content_; } + sg_size_t getSize() { return size_; } + sg_size_t getUsedSize() { return usedSize_; } + void decrUsedSize(sg_size_t size) { usedSize_ -= size; } + void incrUsedSize(sg_size_t size) { usedSize_ += size; } +private: + std::map* content_; + sg_size_t usedSize_ = 0; + sg_size_t size_ = 0; }; } } // namespace simgrid::s4u