- ActionList *actionSet = getRunningActionSet();
- for(ActionList::iterator it(actionSet->begin()), itNext=it, itend(actionSet->end())
- ; it != itend ; it=itNext) {
- ++itNext;
-
- StorageAction *action = static_cast<StorageAction*>(&*it);
-
- if (action->type_ == WRITE) {
- // Update the disk usage
- // Update the file size
- // For each action of type write
- double current_progress = delta * lmm_variable_getvalue(action->getVariable());
- long int incr = current_progress;
-
- XBT_DEBUG("%s:\n\t progress = %.2f, current_progress = %.2f, incr = %ld, lrint(1) = %ld, lrint(2) = %ld",
- action->file_->name, action->progress_, current_progress, incr,
- lrint(action->progress_ + current_progress), lrint(action->progress_) + incr);
-
- /* take care of rounding error accumulation */
- if (lrint(action->progress_ + current_progress) > lrint(action->progress_) + incr)
- incr++;
-
- action->progress_ += current_progress;
-
- action->storage_->usedSize_ += incr; // disk usage
- action->file_->current_position += incr; // current_position
- // which becomes the new file size
- action->file_->size = action->file_->current_position;
-
- sg_size_t* psize = new sg_size_t;
- *psize = action->file_->size;
- std::map<std::string, sg_size_t*>* content_dict = action->storage_->content_;
- auto entry = content_dict->find(action->file_->name);
- delete entry->second;
- entry->second = psize;
- }