std::map<std::string, std::string>* getProperties();
const char* getProperty(std::string key);
void setProperty(std::string, std::string value);
- std::map<std::string, sg_size_t>* getContent();
void setUserdata(void* data) { userdata_ = data; }
void* getUserdata() { return userdata_; }
*/
xbt_dict_t MSG_storage_get_content(msg_storage_t storage)
{
- std::map<std::string, sg_size_t>* content = storage->getContent();
+ std::map<std::string, sg_size_t>* content = storage->extension<simgrid::s4u::FileSystemStorageExt>()->getContent();
// Note: ::operator delete is ok here (no destructor called) since the dict elements are of POD type sg_size_t.
xbt_dict_t content_as_dict = xbt_dict_new_homogeneous(::operator delete);
localStorage = st;
XBT_DEBUG("\tOpen file '%s'", path_.c_str());
- std::map<std::string, sg_size_t>* content = localStorage->getContent();
+ std::map<std::string, sg_size_t>* content = localStorage->extension<FileSystemStorageExt>()->getContent();
// if file does not exist create an empty file
auto sz = content->find(path_);
if (sz != content->end()) {
current_position_ += write_size;
size_ = current_position_;
+ std::map<std::string, sg_size_t>* content = localStorage->extension<FileSystemStorageExt>()->getContent();
- localStorage->getContent()->erase(path_);
- localStorage->getContent()->insert({path_, size_});
+ content->erase(path_);
+ content->insert({path_, size_});
return write_size;
}
{
/* Check if the new full path is on the same mount point */
if (not strncmp(mount_point_.c_str(), fullpath.c_str(), mount_point_.length())) {
- std::map<std::string, sg_size_t>* content = localStorage->getContent();
+ std::map<std::string, sg_size_t>* content = localStorage->extension<FileSystemStorageExt>()->getContent();
auto sz = content->find(path_);
if (sz != content->end()) { // src file exists
sg_size_t new_size = sz->second;
int File::unlink()
{
/* Check if the file is on local storage */
- if (localStorage->getContent()->find(path_) == localStorage->getContent()->end()) {
+ std::map<std::string, sg_size_t>* content = localStorage->extension<FileSystemStorageExt>()->getContent();
+
+ if (content->find(path_) == content->end()) {
XBT_WARN("File %s is not on disk %s. Impossible to unlink", path_.c_str(), localStorage->getCname());
return -1;
} else {
localStorage->extension<FileSystemStorageExt>()->decrUsedSize(size_);
// Remove the file from storage
- localStorage->getContent()->erase(fullpath_);
+ content->erase(fullpath_);
return 0;
}
simgrid::simix::kernelImmediate([this, key, value] { this->pimpl_->setProperty(key, value); });
}
-std::map<std::string, sg_size_t>* Storage::getContent()
-{
- FileSystemStorageExt* file_system = extension<FileSystemStorageExt>();
- return file_system->getContent();
-}
-
sg_size_t Storage::read(sg_size_t size)
{
return simcall_storage_read(pimpl_, size);
static void display_storage_content(simgrid::s4u::Storage* storage)
{
XBT_INFO("Print the content of the storage element: %s", storage->getCname());
- std::map<std::string, sg_size_t>* content = storage->getContent();
+ std::map<std::string, sg_size_t>* content = storage->extension<simgrid::s4u::FileSystemStorageExt>()->getContent();
if (not content->empty()) {
for (auto const& entry : *content)
XBT_INFO("\t%s size: %llu bytes", entry.first.c_str(), entry.second);