X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/645f1e0306b5a190f60d52f3b49525941569f0aa..ac0bf6a9396efa37d528695f248e568ab5a2eb98:/src/surf/FileImpl.cpp diff --git a/src/surf/FileImpl.cpp b/src/surf/FileImpl.cpp index fd81b4acb0..d190065cb0 100644 --- a/src/surf/FileImpl.cpp +++ b/src/surf/FileImpl.cpp @@ -5,7 +5,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "src/surf/FileImpl.hpp" -#include "src/surf/HostImpl.hpp" +#include "src/surf/StorageImpl.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_file, surf, "Logging specific to the SURF file module"); namespace simgrid { @@ -14,12 +14,13 @@ namespace surf { FileImpl::FileImpl(sg_storage_t st, std::string path, std::string mount) : path_(path), mount_point_(mount) { XBT_DEBUG("\tOpen file '%s'", path.c_str()); - location_ = st->pimpl_; - std::map* content = location_->content_; + location_ = st->getImpl(); + std::map* content = location_->getContent(); // if file does not exist create an empty file - if (content->find(path) != content->end()) - size_ = content->at(path); - else { + auto sz = content->find(path); + if (sz != content->end()) { + size_ = sz->second; + } else { size_ = 0; content->insert({path, size_}); XBT_DEBUG("File '%s' was not found, file created.", path.c_str()); @@ -28,7 +29,7 @@ FileImpl::FileImpl(sg_storage_t st, std::string path, std::string mount) : path_ Action* FileImpl::read(sg_size_t size) { - XBT_DEBUG("READ %s on disk '%s'", cname(), location_->cname()); + XBT_DEBUG("READ %s on disk '%s'", getCname(), location_->getCname()); if (current_position_ + size > size_) { if (current_position_ > size_) { size = 0; @@ -44,14 +45,14 @@ Action* FileImpl::read(sg_size_t size) Action* FileImpl::write(sg_size_t size) { - XBT_DEBUG("WRITE %s on disk '%s'. size '%llu/%llu'", cname(), location_->cname(), size, size_); + XBT_DEBUG("WRITE %s on disk '%s'. size '%llu/%llu'", getCname(), location_->getCname(), size, size_); StorageAction* action = location_->write(size); action->file_ = this; /* Substract the part of the file that might disappear from the used sized on the storage element */ location_->usedSize_ -= (size_ - current_position_); // If the storage is full before even starting to write - if (location_->usedSize_ >= location_->size_) { + if (location_->usedSize_ >= location_->getSize()) { action->setState(Action::State::failed); } return action; @@ -77,36 +78,37 @@ int FileImpl::seek(sg_offset_t offset, int origin) int FileImpl::unlink() { /* Check if the file is on this storage */ - if (location_->content_->find(path_) == location_->content_->end()) { - XBT_WARN("File %s is not on disk %s. Impossible to unlink", cname(), location_->cname()); + if (location_->getContent()->find(path_) == location_->getContent()->end()) { + XBT_WARN("File %s is not on disk %s. Impossible to unlink", getCname(), location_->getCname()); return -1; } else { - XBT_DEBUG("UNLINK %s on disk '%s'", cname(), location_->cname()); + XBT_DEBUG("UNLINK %s on disk '%s'", getCname(), location_->getCname()); location_->usedSize_ -= size_; // Remove the file from storage - location_->content_->erase(path_); + location_->getContent()->erase(path_); return 0; } } -void FileImpl::move(const char* fullpath) +void FileImpl::move(std::string fullpath) { /* Check if the new full path is on the same mount point */ - if (not strncmp(mount_point_.c_str(), fullpath, mount_point_.size())) { - std::map* content = location_->content_; - if (content->find(path_) != content->end()) { // src file exists - sg_size_t new_size = content->at(path_); + if (not strncmp(mount_point_.c_str(), fullpath.c_str(), mount_point_.size())) { + std::map* content = location_->getContent(); + auto sz = content->find(path_); + if (sz != content->end()) { // src file exists + sg_size_t new_size = sz->second; content->erase(path_); - std::string path = std::string(fullpath).substr(mount_point_.size(), strlen(fullpath)); + std::string path = fullpath.substr(mount_point_.length(), fullpath.length()); content->insert({path.c_str(), new_size}); - XBT_DEBUG("Move file from %s to %s, size '%llu'", path_.c_str(), fullpath, new_size); + XBT_DEBUG("Move file from %s to %s, size '%llu'", path_.c_str(), fullpath.c_str(), new_size); } else { XBT_WARN("File %s doesn't exist", path_.c_str()); } } else { - XBT_WARN("New full path %s is not on the same mount point: %s.", fullpath, mount_point_.c_str()); + XBT_WARN("New full path %s is not on the same mount point: %s.", fullpath.c_str(), mount_point_.c_str()); } } }