#include "xbt/ex.h"
#include "xbt/dict.h"
-#include "xbt/file_stat.h"
#include "portable.h"
#include "surf_private.h"
#include "storage_private.h"
return action;
}
+static surf_action_t storage_action_get_size(void *storage, surf_file_t stream)
+{
+ surf_action_t action = storage_action_execute(storage,0,GET_SIZE);
+ action->file = stream;
+ return action;
+}
+
static surf_action_t storage_action_unlink(void *storage, surf_file_t stream)
{
surf_action_t action = storage_action_execute(storage,0, UNLINK);
{
XBT_DEBUG("\tOpen file '%s'",path);
xbt_dict_t content_dict = ((storage_t)storage)->content;
- unsigned long size = (unsigned long) xbt_dict_get_or_null(content_dict,path);
+ size_t size = (size_t) xbt_dict_get_or_null(content_dict,path);
// if file does not exist create an empty file
if(!size){
xbt_dict_set(content_dict,path,&size,NULL);
return action;
}
-static surf_action_t storage_action_close(void *storage, surf_file_t fp)
+static surf_action_t storage_action_close(void *storage, surf_file_t fd)
{
- char *filename = fp->name;
- XBT_DEBUG("\tClose file '%s' size '%zu'",filename,fp->size);
+ char *filename = fd->name;
+ XBT_DEBUG("\tClose file '%s' size '%zu'",filename,fd->size);
// unref write actions from storage
surf_action_storage_t write_action;
unsigned int i;
xbt_dynar_foreach(((storage_t)storage)->write_actions,i,write_action) {
- if ((write_action->generic_lmm_action.generic_action.file) == fp) {
+ if ((write_action->generic_lmm_action.generic_action.file) == fd) {
xbt_dynar_cursor_rm(((storage_t)storage)->write_actions, &i);
storage_action_unref((surf_action_t) write_action);
}
}
- free(fp->name);
- xbt_free(fp);
+ free(fd->name);
+ xbt_free(fd);
surf_action_t action = storage_action_execute(storage,0, CLOSE);
return action;
}
case STAT:
case UNLINK:
case LS:
+ case GET_SIZE:
break;
case READ:
lmm_expand(storage_maxmin_system, STORAGE->constraint_read,
surf_storage_model->extension.storage.write = storage_action_write;
surf_storage_model->extension.storage.unlink = storage_action_unlink;
surf_storage_model->extension.storage.ls = storage_action_ls;
+ surf_storage_model->extension.storage.get_size = storage_action_get_size;
if (!storage_maxmin_system) {
storage_maxmin_system = lmm_system_new(storage_selective_update);